From ecf95788fdf6515df3816810cd52f4d78298ee49 Mon Sep 17 00:00:00 2001 From: Wisdom Ekeh Date: Thu, 15 Jun 2023 08:58:02 +0100 Subject: [PATCH 1/4] upgraded webview version --- .flutter-plugins | 4 + .flutter-plugins-dependencies | 1 + example/pubspec.lock | 145 +++++++++++++++++++--------------- example/pubspec.yaml | 2 +- lib/src/tawk_widget.dart | 80 +++++++++++-------- pubspec.lock | 142 ++++++++++++++++++--------------- pubspec.yaml | 6 +- 7 files changed, 215 insertions(+), 165 deletions(-) create mode 100644 .flutter-plugins create mode 100644 .flutter-plugins-dependencies diff --git a/.flutter-plugins b/.flutter-plugins new file mode 100644 index 0000000..90e23ae --- /dev/null +++ b/.flutter-plugins @@ -0,0 +1,4 @@ +# This is a generated file; do not edit or check into version control. +webview_flutter=/Users/wisdomekeh/.pub-cache/hosted/pub.dev/webview_flutter-4.2.2/ +webview_flutter_android=/Users/wisdomekeh/.pub-cache/hosted/pub.dev/webview_flutter_android-3.8.0/ +webview_flutter_wkwebview=/Users/wisdomekeh/.pub-cache/hosted/pub.dev/webview_flutter_wkwebview-3.4.4/ diff --git a/.flutter-plugins-dependencies b/.flutter-plugins-dependencies new file mode 100644 index 0000000..1eae7ca --- /dev/null +++ b/.flutter-plugins-dependencies @@ -0,0 +1 @@ +{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"webview_flutter_wkwebview","path":"/Users/wisdomekeh/.pub-cache/hosted/pub.dev/webview_flutter_wkwebview-3.4.4/","native_build":true,"dependencies":[]}],"android":[{"name":"webview_flutter_android","path":"/Users/wisdomekeh/.pub-cache/hosted/pub.dev/webview_flutter_android-3.8.0/","native_build":true,"dependencies":[]}],"macos":[],"linux":[],"windows":[],"web":[]},"dependencyGraph":[{"name":"webview_flutter","dependencies":["webview_flutter_android","webview_flutter_wkwebview"]},{"name":"webview_flutter_android","dependencies":[]},{"name":"webview_flutter_wkwebview","dependencies":[]}],"date_created":"2023-06-15 08:54:56.852668","version":"3.10.0"} \ No newline at end of file diff --git a/example/pubspec.lock b/example/pubspec.lock index 0479fb3..32f85ac 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -5,58 +5,58 @@ packages: dependency: transitive description: name: async - url: "https://pub.dartlang.org" + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + url: "https://pub.dev" source: hosted - version: "2.8.2" + version: "2.11.0" boolean_selector: dependency: transitive description: name: boolean_selector - url: "https://pub.dartlang.org" + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" characters: dependency: transitive description: name: characters - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.0" - charcode: - dependency: transitive - description: - name: charcode - url: "https://pub.dartlang.org" + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.3.0" clock: dependency: transitive description: name: clock - url: "https://pub.dartlang.org" + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.1" collection: dependency: transitive description: name: collection - url: "https://pub.dartlang.org" + sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" + url: "https://pub.dev" source: hosted - version: "1.15.0" + version: "1.17.1" cupertino_icons: dependency: "direct main" description: name: cupertino_icons - url: "https://pub.dartlang.org" + sha256: "1989d917fbe8e6b39806207df5a3fdd3d816cbd090fac2ce26fb45e9a71476e5" + url: "https://pub.dev" source: hosted version: "1.0.4" fake_async: dependency: transitive description: name: fake_async - url: "https://pub.dartlang.org" + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.3.1" flutter: dependency: "direct main" description: flutter @@ -66,7 +66,8 @@ packages: dependency: "direct dev" description: name: flutter_lints - url: "https://pub.dartlang.org" + sha256: b543301ad291598523947dc534aaddc5aaad597b709d2426d3a0e0d44c5cb493 + url: "https://pub.dev" source: hosted version: "1.0.4" flutter_tawk: @@ -81,48 +82,62 @@ packages: description: flutter source: sdk version: "0.0.0" + js: + dependency: transitive + description: + name: js + sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 + url: "https://pub.dev" + source: hosted + version: "0.6.7" lints: dependency: transitive description: name: lints - url: "https://pub.dartlang.org" + sha256: a2c3d198cb5ea2e179926622d433331d8b58374ab8f29cdda6e863bd62fd369c + url: "https://pub.dev" source: hosted version: "1.0.1" matcher: dependency: transitive description: name: matcher - url: "https://pub.dartlang.org" + sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb" + url: "https://pub.dev" source: hosted - version: "0.12.11" + version: "0.12.15" material_color_utilities: dependency: transitive description: name: material_color_utilities - url: "https://pub.dartlang.org" + sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + url: "https://pub.dev" source: hosted - version: "0.1.3" + version: "0.2.0" meta: dependency: transitive description: name: meta - url: "https://pub.dartlang.org" + sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" + url: "https://pub.dev" source: hosted - version: "1.7.0" + version: "1.9.1" path: dependency: transitive description: name: path - url: "https://pub.dartlang.org" + sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" + url: "https://pub.dev" source: hosted - version: "1.8.0" + version: "1.8.3" plugin_platform_interface: dependency: transitive description: name: plugin_platform_interface - url: "https://pub.dartlang.org" + sha256: "6a2128648c854906c53fa8e33986fc0247a1116122f9534dd20e3ab9e16a32bc" + url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.4" sky_engine: dependency: transitive description: flutter @@ -132,86 +147,90 @@ packages: dependency: transitive description: name: source_span - url: "https://pub.dartlang.org" + sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + url: "https://pub.dev" source: hosted - version: "1.8.1" + version: "1.9.1" stack_trace: dependency: transitive description: name: stack_trace - url: "https://pub.dartlang.org" + sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.11.0" stream_channel: dependency: transitive description: name: stream_channel - url: "https://pub.dartlang.org" + sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" string_scanner: dependency: transitive description: name: string_scanner - url: "https://pub.dartlang.org" + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.2.0" term_glyph: dependency: transitive description: name: term_glyph - url: "https://pub.dartlang.org" + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.2.1" test_api: dependency: transitive description: name: test_api - url: "https://pub.dartlang.org" + sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb + url: "https://pub.dev" source: hosted - version: "0.4.8" - typed_data: - dependency: transitive - description: - name: typed_data - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.0" + version: "0.5.1" vector_math: dependency: transitive description: name: vector_math - url: "https://pub.dartlang.org" + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.4" webview_flutter: dependency: transitive description: name: webview_flutter - url: "https://pub.dartlang.org" + sha256: "789d52bd789373cc1e100fb634af2127e86c99cf9abde09499743270c5de8d00" + url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "4.2.2" webview_flutter_android: dependency: transitive description: name: webview_flutter_android - url: "https://pub.dartlang.org" + sha256: "532135f6f6b8030cd039f30eab23f340d650350e29f38e9b37d2eaad028f1018" + url: "https://pub.dev" source: hosted - version: "2.8.4" + version: "3.8.0" webview_flutter_platform_interface: dependency: transitive description: name: webview_flutter_platform_interface - url: "https://pub.dartlang.org" + sha256: "656e2aeaef318900fffd21468b6ddc7958c7092a642f0e7220bac328b70d4a81" + url: "https://pub.dev" source: hosted - version: "1.8.1" + version: "2.3.1" webview_flutter_wkwebview: dependency: transitive description: name: webview_flutter_wkwebview - url: "https://pub.dartlang.org" + sha256: "6bbc6ade302b842999b27cbaa7171241c273deea8a9c73f92ceb3d811c767de2" + url: "https://pub.dev" source: hosted - version: "2.7.1" + version: "3.4.4" sdks: - dart: ">=2.16.2 <3.0.0" - flutter: ">=2.5.0" + dart: ">=3.0.0 <4.0.0" + flutter: ">=3.3.0" diff --git a/example/pubspec.yaml b/example/pubspec.yaml index 4a3715e..490e48b 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -18,7 +18,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: '>=2.16.2 <3.0.0' + sdk: '>=3.0.0 <4.0.0' # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions diff --git a/lib/src/tawk_widget.dart b/lib/src/tawk_widget.dart index 6ff846a..909a264 100644 --- a/lib/src/tawk_widget.dart +++ b/lib/src/tawk_widget.dart @@ -1,5 +1,5 @@ -import 'dart:io'; import 'dart:convert'; +import 'dart:io'; import 'package:flutter/material.dart'; import 'package:webview_flutter/webview_flutter.dart'; @@ -40,6 +40,43 @@ class _TawkState extends State { late WebViewController _controller; bool _isLoading = true; + @override + void initState() { + _controller = WebViewController() + ..setJavaScriptMode(JavaScriptMode.unrestricted) + ..setBackgroundColor(const Color(0x00000000)) + ..setNavigationDelegate( + NavigationDelegate( + onProgress: (int progress) { + // Update loading bar. + }, + onPageStarted: (String url) {}, + onPageFinished: (String url) { + if (widget.visitor != null) { + _setUser(widget.visitor!); + } + + if (widget.onLoad != null) { + widget.onLoad!(); + } + }, + onWebResourceError: (WebResourceError error) {}, + onNavigationRequest: (NavigationRequest request) { + if (request.url == 'about:blank' || + request.url.contains('tawk.to')) { + return NavigationDecision.navigate; + } + if (widget.onLinkTap != null) { + widget.onLinkTap!(request.url); + } + return NavigationDecision.prevent; + }, + ), + ) + ..loadRequest(Uri.parse(widget.directChatLink)); + super.initState(); + } + void _setUser(TawkVisitor visitor) { final json = jsonEncode(visitor); String javascriptString; @@ -58,46 +95,17 @@ class _TawkState extends State { '''; } - _controller.runJavascript(javascriptString); + _controller.runJavaScript(javascriptString); } @override Widget build(BuildContext context) { return Stack( children: [ - WebView( - initialUrl: widget.directChatLink, - javascriptMode: JavascriptMode.unrestricted, - onWebViewCreated: (WebViewController webViewController) { - setState(() { - _controller = webViewController; - }); - }, - navigationDelegate: (NavigationRequest request) { - if (request.url == 'about:blank' || - request.url.contains('tawk.to')) { - return NavigationDecision.navigate; - } - - if (widget.onLinkTap != null) { - widget.onLinkTap!(request.url); - } - - return NavigationDecision.prevent; - }, - onPageFinished: (_) { - if (widget.visitor != null) { - _setUser(widget.visitor!); - } - - if (widget.onLoad != null) { - widget.onLoad!(); - } - - setState(() { - _isLoading = false; - }); - }, + WebViewWidget( + controller: _controller, + + ), _isLoading ? widget.placeholder ?? @@ -109,3 +117,5 @@ class _TawkState extends State { ); } } + + diff --git a/pubspec.lock b/pubspec.lock index aaec83a..5806d06 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,51 +5,50 @@ packages: dependency: transitive description: name: async - url: "https://pub.dartlang.org" + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + url: "https://pub.dev" source: hosted - version: "2.8.2" + version: "2.11.0" boolean_selector: dependency: transitive description: name: boolean_selector - url: "https://pub.dartlang.org" + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" characters: dependency: transitive description: name: characters - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.0" - charcode: - dependency: transitive - description: - name: charcode - url: "https://pub.dartlang.org" + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.3.0" clock: dependency: transitive description: name: clock - url: "https://pub.dartlang.org" + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.1" collection: dependency: transitive description: name: collection - url: "https://pub.dartlang.org" + sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" + url: "https://pub.dev" source: hosted - version: "1.15.0" + version: "1.17.1" fake_async: dependency: transitive description: name: fake_async - url: "https://pub.dartlang.org" + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.3.1" flutter: dependency: "direct main" description: flutter @@ -59,7 +58,8 @@ packages: dependency: "direct dev" description: name: flutter_lints - url: "https://pub.dartlang.org" + sha256: b543301ad291598523947dc534aaddc5aaad597b709d2426d3a0e0d44c5cb493 + url: "https://pub.dev" source: hosted version: "1.0.4" flutter_test: @@ -67,48 +67,62 @@ packages: description: flutter source: sdk version: "0.0.0" + js: + dependency: transitive + description: + name: js + sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 + url: "https://pub.dev" + source: hosted + version: "0.6.7" lints: dependency: transitive description: name: lints - url: "https://pub.dartlang.org" + sha256: a2c3d198cb5ea2e179926622d433331d8b58374ab8f29cdda6e863bd62fd369c + url: "https://pub.dev" source: hosted version: "1.0.1" matcher: dependency: transitive description: name: matcher - url: "https://pub.dartlang.org" + sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb" + url: "https://pub.dev" source: hosted - version: "0.12.11" + version: "0.12.15" material_color_utilities: dependency: transitive description: name: material_color_utilities - url: "https://pub.dartlang.org" + sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + url: "https://pub.dev" source: hosted - version: "0.1.3" + version: "0.2.0" meta: dependency: transitive description: name: meta - url: "https://pub.dartlang.org" + sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" + url: "https://pub.dev" source: hosted - version: "1.7.0" + version: "1.9.1" path: dependency: transitive description: name: path - url: "https://pub.dartlang.org" + sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" + url: "https://pub.dev" source: hosted - version: "1.8.0" + version: "1.8.3" plugin_platform_interface: dependency: transitive description: name: plugin_platform_interface - url: "https://pub.dartlang.org" + sha256: "6a2128648c854906c53fa8e33986fc0247a1116122f9534dd20e3ab9e16a32bc" + url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.4" sky_engine: dependency: transitive description: flutter @@ -118,86 +132,90 @@ packages: dependency: transitive description: name: source_span - url: "https://pub.dartlang.org" + sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + url: "https://pub.dev" source: hosted - version: "1.8.1" + version: "1.9.1" stack_trace: dependency: transitive description: name: stack_trace - url: "https://pub.dartlang.org" + sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.11.0" stream_channel: dependency: transitive description: name: stream_channel - url: "https://pub.dartlang.org" + sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" string_scanner: dependency: transitive description: name: string_scanner - url: "https://pub.dartlang.org" + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.2.0" term_glyph: dependency: transitive description: name: term_glyph - url: "https://pub.dartlang.org" + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.2.1" test_api: dependency: transitive description: name: test_api - url: "https://pub.dartlang.org" + sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb + url: "https://pub.dev" source: hosted - version: "0.4.8" - typed_data: - dependency: transitive - description: - name: typed_data - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.0" + version: "0.5.1" vector_math: dependency: transitive description: name: vector_math - url: "https://pub.dartlang.org" + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.4" webview_flutter: dependency: "direct main" description: name: webview_flutter - url: "https://pub.dartlang.org" + sha256: "789d52bd789373cc1e100fb634af2127e86c99cf9abde09499743270c5de8d00" + url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "4.2.2" webview_flutter_android: dependency: transitive description: name: webview_flutter_android - url: "https://pub.dartlang.org" + sha256: "532135f6f6b8030cd039f30eab23f340d650350e29f38e9b37d2eaad028f1018" + url: "https://pub.dev" source: hosted - version: "2.8.4" + version: "3.8.0" webview_flutter_platform_interface: dependency: transitive description: name: webview_flutter_platform_interface - url: "https://pub.dartlang.org" + sha256: "656e2aeaef318900fffd21468b6ddc7958c7092a642f0e7220bac328b70d4a81" + url: "https://pub.dev" source: hosted - version: "1.8.1" + version: "2.3.1" webview_flutter_wkwebview: dependency: transitive description: name: webview_flutter_wkwebview - url: "https://pub.dartlang.org" + sha256: "6bbc6ade302b842999b27cbaa7171241c273deea8a9c73f92ceb3d811c767de2" + url: "https://pub.dev" source: hosted - version: "2.7.1" + version: "3.4.4" sdks: - dart: ">=2.16.2 <3.0.0" - flutter: ">=2.5.0" + dart: ">=3.0.0 <4.0.0" + flutter: ">=3.3.0" diff --git a/pubspec.yaml b/pubspec.yaml index 5fb59d7..c95da2f 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -4,14 +4,12 @@ version: 0.1.0 homepage: https://github.com/ayoubamine/flutter_tawk environment: - sdk: '>=2.16.2 <3.0.0' - flutter: '>=1.17.0' + sdk: '>=3.0.0 <4.0.0' dependencies: flutter: sdk: flutter - - webview_flutter: ^3.0.1 + webview_flutter: ^4.2.2 dev_dependencies: flutter_test: From ba5af60f3248a704395648c691f8cc1791e0238c Mon Sep 17 00:00:00 2001 From: Wisdom Ekeh Date: Thu, 15 Jun 2023 09:00:12 +0100 Subject: [PATCH 2/4] added auto darkmode --- lib/src/tawk_widget.dart | 43 +++++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/lib/src/tawk_widget.dart b/lib/src/tawk_widget.dart index 909a264..240ed65 100644 --- a/lib/src/tawk_widget.dart +++ b/lib/src/tawk_widget.dart @@ -36,6 +36,9 @@ class Tawk extends StatefulWidget { _TawkState createState() => _TawkState(); } +const darkMode = + 'document.head.appendChild(document.createElement("style")).innerHTML="html { filter: invert(.95) hue-rotate(180deg) }"'; + class _TawkState extends State { late WebViewController _controller; bool _isLoading = true; @@ -44,7 +47,7 @@ class _TawkState extends State { void initState() { _controller = WebViewController() ..setJavaScriptMode(JavaScriptMode.unrestricted) - ..setBackgroundColor(const Color(0x00000000)) + // ..setBackgroundColor(const Color(0x00000000)) ..setNavigationDelegate( NavigationDelegate( onProgress: (int progress) { @@ -52,23 +55,27 @@ class _TawkState extends State { }, onPageStarted: (String url) {}, onPageFinished: (String url) { - if (widget.visitor != null) { - _setUser(widget.visitor!); - } - - if (widget.onLoad != null) { - widget.onLoad!(); - } + if (Theme.of(context).brightness == Brightness.dark) { + _controller.runJavaScript(darkMode); + // '''document.head.appendChild(document.createElement("style")).innerHTML=`$css`'''); + } + if (widget.visitor != null) { + _setUser(widget.visitor!); + } + + if (widget.onLoad != null) { + widget.onLoad!(); + } }, onWebResourceError: (WebResourceError error) {}, onNavigationRequest: (NavigationRequest request) { - if (request.url == 'about:blank' || - request.url.contains('tawk.to')) { - return NavigationDecision.navigate; - } - if (widget.onLinkTap != null) { - widget.onLinkTap!(request.url); - } + if (request.url == 'about:blank' || + request.url.contains('tawk.to')) { + return NavigationDecision.navigate; + } + if (widget.onLinkTap != null) { + widget.onLinkTap!(request.url); + } return NavigationDecision.prevent; }, ), @@ -103,9 +110,7 @@ class _TawkState extends State { return Stack( children: [ WebViewWidget( - controller: _controller, - - + controller: _controller, ), _isLoading ? widget.placeholder ?? @@ -117,5 +122,3 @@ class _TawkState extends State { ); } } - - From 62e84652515af9c741728a256cfec7b05faa0cfa Mon Sep 17 00:00:00 2001 From: Wisdom Ekeh Date: Thu, 15 Jun 2023 09:22:08 +0100 Subject: [PATCH 3/4] added auto darkmode --- lib/src/tawk_widget.dart | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/lib/src/tawk_widget.dart b/lib/src/tawk_widget.dart index 240ed65..e2d8464 100644 --- a/lib/src/tawk_widget.dart +++ b/lib/src/tawk_widget.dart @@ -53,12 +53,19 @@ class _TawkState extends State { onProgress: (int progress) { // Update loading bar. }, - onPageStarted: (String url) {}, + onPageStarted: (String url) { + setState(() { + _isLoading = true; + }); + }, onPageFinished: (String url) { if (Theme.of(context).brightness == Brightness.dark) { _controller.runJavaScript(darkMode); // '''document.head.appendChild(document.createElement("style")).innerHTML=`$css`'''); } + setState(() { + _isLoading = false; + }); if (widget.visitor != null) { _setUser(widget.visitor!); } @@ -115,7 +122,11 @@ class _TawkState extends State { _isLoading ? widget.placeholder ?? const Center( - child: CircularProgressIndicator(), + child: SizedBox.square( + dimension: 20, + child: CircularProgressIndicator( + strokeWidth: 4, + )), ) : Container(), ], From c6dd4953760adabf8cbb428cc097edc495f65272 Mon Sep 17 00:00:00 2001 From: Wisdom Ekeh Date: Thu, 15 Jun 2023 09:25:09 +0100 Subject: [PATCH 4/4] added auto darkmode --- lib/src/tawk_widget.dart | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/src/tawk_widget.dart b/lib/src/tawk_widget.dart index e2d8464..913aaff 100644 --- a/lib/src/tawk_widget.dart +++ b/lib/src/tawk_widget.dart @@ -60,7 +60,9 @@ class _TawkState extends State { }, onPageFinished: (String url) { if (Theme.of(context).brightness == Brightness.dark) { - _controller.runJavaScript(darkMode); + try { + _controller.runJavaScript(darkMode); + } catch (e) {} // '''document.head.appendChild(document.createElement("style")).innerHTML=`$css`'''); } setState(() { @@ -109,7 +111,9 @@ class _TawkState extends State { '''; } - _controller.runJavaScript(javascriptString); + try { + _controller.runJavaScript(javascriptString); + } catch (e) {} } @override