Skip to content

Commit e0bc403

Browse files
committed
fix bug by setting correctly the webview controller for next screen
1 parent 0ad583f commit e0bc403

File tree

207 files changed

+5740
-197
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

207 files changed

+5740
-197
lines changed

lib/flutter_on_rails.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export 'src/Widget/main/main_screen.dart';
2+
export 'src/minimal/notifier/init.dart';

lib/imports/exports.dart

Lines changed: 0 additions & 8 deletions
This file was deleted.

lib/main_screen.dart

Lines changed: 0 additions & 1 deletion
This file was deleted.

lib/Widget/bottom_navigation_bar.dart renamed to lib/src/Widget/bottom_navigation_bar.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import 'package:flutterx/imports/exports.dart';
1+
import 'package:flutter_on_rails/src/imports/exports.dart';
22
import '../assets/grouped_icons.dart';
33

44
NavigationBar? buildBottomNavigationBar(AppNotifier provider, String url) {

lib/Widget/custom_app_bar.dart renamed to lib/src/Widget/custom_app_bar.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// ignore_for_file: must_be_immutable
22

33
import 'package:flutter/material.dart';
4-
import 'package:flutterx/widget_parser/entry_widget_parser.dart';
4+
import 'package:flutter_on_rails/src/widget_parser/entry_widget_parser.dart';
55

66
class CustomAppBar extends StatelessWidget implements PreferredSizeWidget {
77
CustomAppBar({super.key, required this.payload});
File renamed without changes.

lib/flutterx.dart renamed to lib/src/Widget/main/main_screen.dart

Lines changed: 18 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,28 @@
11
// ignore_for_file: library_private_types_in_public_api, deprecated_member_use
22

33
import 'package:flutter/foundation.dart';
4-
import 'package:flutterx/Widget/bottom_navigation_bar.dart';
5-
import 'package:flutterx/Widget/custom_app_bar.dart';
6-
import 'package:flutterx/imports/exports.dart';
7-
import 'package:flutterx/navigation/handle_navigation.dart'
4+
import 'package:flutter_on_rails/src/Widget/bottom_navigation_bar.dart';
5+
import 'package:flutter_on_rails/src/Widget/custom_app_bar.dart';
6+
import 'package:flutter_on_rails/src/imports/exports.dart';
7+
import 'package:flutter_on_rails/src/navigation/handle_navigation.dart'
88
show HandleNavigation;
9-
import 'package:flutterx/services/run_js.dart';
9+
import 'package:flutter_on_rails/src/services/run_js.dart';
1010
import 'next_screen.dart';
11-
import 'src/minimal/manager/manager.dart';
11+
import '../../minimal/manager/manager.dart';
1212

13-
class FlutterX extends StatefulWidget {
14-
FlutterX({super.key, this.url = "http://localhost:3000"});
13+
// ignore: must_be_immutable
14+
class MainScreen extends StatefulWidget {
15+
MainScreen({super.key, this.url = "http://localhost:3000"});
1516
String? url = "";
1617
@override
17-
_FlutterXState createState() => _FlutterXState();
18+
_MainScreenState createState() => _MainScreenState();
1819
}
1920

20-
class _FlutterXState extends State<FlutterX> {
21+
class _MainScreenState extends State<MainScreen> {
2122
PullToRefreshSettings pullToRefreshSettings = PullToRefreshSettings(
2223
color: Colors.blue,
2324
);
2425
PullToRefreshController? pullToRefreshController;
25-
InAppWebViewController? webViewController;
2626
bool isNavigating = false;
2727
String? defaultUserAgent;
2828
bool isLoaded = false;
@@ -63,7 +63,7 @@ class _FlutterXState extends State<FlutterX> {
6363
}
6464

6565
Future<void> _setUserAgent() async {
66-
if (webViewController == null) return;
66+
if (provider.state.controller == null) return;
6767

6868
switch (defaultTargetPlatform) {
6969
case TargetPlatform.android:
@@ -131,13 +131,10 @@ class _FlutterXState extends State<FlutterX> {
131131
),
132132
pullToRefreshController: pullToRefreshController,
133133
onWebViewCreated: (controller) async {
134-
webViewController = controller;
135-
await _setUserAgent();
136-
// Store the controller in the provider
137134
provider.setController(controller);
135+
await _setUserAgent();
138136
// Add JavaScript handler to listen for postMessage calls
139-
140-
controller.addJavaScriptHandler(
137+
provider.state.controller!.addJavaScriptHandler(
141138
handlerName: 'Flutter',
142139
callback: (args) {
143140
// Args are the messages sent from JavaScript
@@ -150,7 +147,7 @@ class _FlutterXState extends State<FlutterX> {
150147
}
151148
},
152149
);
153-
controller.addJavaScriptHandler(
150+
provider.state.controller!.addJavaScriptHandler(
154151
handlerName: "actionHandler",
155152
callback: (args) {
156153
final actionJson = args[0]; // Your JSON string
@@ -190,7 +187,7 @@ class _FlutterXState extends State<FlutterX> {
190187
isLoaded = true;
191188
pullToRefreshController?.endRefreshing();
192189
provider.setLoading(false);
193-
await controller.evaluateJavascript(
190+
await provider.state.controller!.evaluateJavascript(
194191
source: """
195192
(function() {
196193
document.addEventListener("click", function(event) {
@@ -200,8 +197,8 @@ class _FlutterXState extends State<FlutterX> {
200197
if (!link) return;
201198
const action = link.getAttribute("data_frails_action");
202199
console.log("Action:", action);
203-
if (window.flutterx) {
204-
window.flutterx.callHandler('actionHandler', action);
200+
if (window.flutter_on_rails) {
201+
window.flutter_on_rails.callHandler('actionHandler', action);
205202
}
206203
});
207204
})();

lib/next_screen.dart renamed to lib/src/Widget/main/next_screen.dart

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ import 'dart:convert';
44
import 'package:flutter/foundation.dart';
55
import 'package:flutter/material.dart';
66
import 'package:flutter_inappwebview/flutter_inappwebview.dart';
7-
import 'package:flutterx/helpers/responds_to.dart';
8-
import 'package:flutterx/src/minimal/manager/manager.dart';
9-
import 'package:flutterx/services/run_js.dart';
7+
import 'package:flutter_on_rails/src/helpers/responds_to.dart';
8+
import 'package:flutter_on_rails/src/minimal/manager/manager.dart';
9+
import 'package:flutter_on_rails/src/services/run_js.dart';
1010

1111
class NextPage extends StatelessWidget {
1212
NextPage({super.key, required this.url});
@@ -74,8 +74,7 @@ class NextPage extends StatelessWidget {
7474
onWebViewCreated: (
7575
InAppWebViewController webViewController,
7676
) async {
77-
// _controller = webViewController;
78-
provider.setController(webViewController);
77+
webViewController = provider.state.controller!;
7978
await _setUserAgent();
8079
provider.state.controller!.addJavaScriptHandler(
8180
handlerName: "inputFocus",
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)