Browse Source

fix error

boyrobot 9 months ago
parent
commit
fcb38c9261

File diff suppressed because it is too large
+ 0 - 0
.flutter-plugins-dependencies


+ 1 - 0
android/app/src/main/AndroidManifest.xml

@@ -10,6 +10,7 @@
         android:icon="@mipmap/ic_launcher">
         <activity
             android:name=".MainActivity"
+            android:exported="true"
             android:launchMode="singleTop"
             android:theme="@style/LaunchTheme"
             android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale"

+ 2 - 2
android/build.gradle

@@ -1,7 +1,7 @@
 buildscript {
     repositories {
         google()
-        maven{url'http://maven.aliyun.com/nexus/content/groups/public/'}
+        mavenCentral()
     }
 
     dependencies {
@@ -12,7 +12,7 @@ buildscript {
 allprojects {
     repositories {
         google()
-        maven{url'http://maven.aliyun.com/nexus/content/groups/public/'}
+        mavenCentral()
     }
 }
 

+ 4 - 4
ios/Flutter/flutter_export_environment.sh

@@ -1,13 +1,13 @@
 #!/bin/sh
 # This is a generated file; do not edit or check into version control.
-export "FLUTTER_ROOT=/home/lyq/flutter"
-export "FLUTTER_APPLICATION_PATH=/home/lyq/workspaces/FlutterOSC"
+export "FLUTTER_ROOT=/home/vscode/flutter"
+export "FLUTTER_APPLICATION_PATH=/workspaces/Open-IM-Flutter-Demo/finish_project/FlutterOSC"
 export "COCOAPODS_PARALLEL_CODE_SIGN=true"
 export "FLUTTER_TARGET=lib/main.dart"
 export "FLUTTER_BUILD_DIR=build"
-export "FLUTTER_BUILD_NAME=1.0.0"
+export "FLUTTER_BUILD_NAME=1.2.1"
 export "FLUTTER_BUILD_NUMBER=1"
 export "DART_OBFUSCATION=false"
-export "TRACK_WIDGET_CREATION=false"
+export "TRACK_WIDGET_CREATION=true"
 export "TREE_SHAKE_ICONS=false"
 export "PACKAGE_CONFIG=.dart_tool/package_config.json"

+ 19 - 33
lib/pages/CommonWebPage.dart

@@ -1,6 +1,6 @@
 import 'package:flutter/material.dart';
 import 'package:flutter/cupertino.dart';
-import 'package:flutter_webview_plugin/flutter_webview_plugin.dart';
+import 'package:webview_flutter/webview_flutter.dart';
 
 //公共的WebView页面,需要标题和URL参数
 class CommonWebPage extends StatefulWidget {
@@ -18,33 +18,29 @@ class CommonWebPage extends StatefulWidget {
 class CommonWebPageState extends State<CommonWebPage> {
   bool loading = true;
 
-  final flutterWebViewPlugin = FlutterWebviewPlugin();
-
   @override
   void initState() {
     super.initState();
-    // 监听WebView的加载事件
-    flutterWebViewPlugin.onStateChanged.listen((state) {
-//      if (state.type == WebViewState.finishLoad) {
-//        // 加载完成
-//        setState(() {
-//          loading = false;
-//        });
-//      } else if (state.type == WebViewState.startLoad) {
-//        setState(() {
-//          loading = true;
-//        });
-//      }
-    });
-    flutterWebViewPlugin.onUrlChanged.listen((url) {
-      setState(() {
-        loading = false;
-      });
-    });
   }
 
   @override
   Widget build(BuildContext context) {
+    WebViewController webViewController = WebViewController()
+      ..setUserAgent("Android OSC")
+      ..setJavaScriptMode(JavaScriptMode.unrestricted)
+      ..setBackgroundColor(const Color(0x00000000))
+      ..setNavigationDelegate(
+        NavigationDelegate(
+          onProgress: (int progress) {
+            // Update loading bar.
+          },
+          onPageStarted: (String url) {},
+          onPageFinished: (String url) {},
+          onWebResourceError: (WebResourceError error) {},
+        ),
+      )
+      ..loadRequest(Uri.parse(widget.url!));
+
     List<Widget> titleContent = [];
     titleContent.add(Text(
       widget.title!,
@@ -54,18 +50,8 @@ class CommonWebPageState extends State<CommonWebPage> {
       titleContent.add(CupertinoActivityIndicator());
     }
     titleContent.add(Container(width: 50.0));
-    return WebviewScaffold(
-      url: widget.url!,
-      appBar: AppBar(
-        title: Row(
-          mainAxisAlignment: MainAxisAlignment.center,
-          children: titleContent,
-        ),
-        iconTheme: IconThemeData(color: Colors.white),
-      ),
-      withZoom: true,
-      withLocalStorage: true,
-      withJavascript: true,
+    return WebViewWidget(
+      controller: webViewController,
     );
   }
 }

+ 4 - 3
lib/pages/PublishTweetPage.dart

@@ -114,7 +114,7 @@ class PublishTweetPageState extends State<PublishTweetPage> {
     // 如果已添加了9张图片,则提示不允许添加更多
     num size = fileList.length;
     if (size >= 9) {
-      Scaffold.of(ctx).showSnackBar(SnackBar(
+      ScaffoldMessenger.of(ctx).showSnackBar(SnackBar(
         content: Text("最多只能添加9张图片!"),
       ));
       return;
@@ -157,14 +157,15 @@ class PublishTweetPageState extends State<PublishTweetPage> {
 
   sendTweet(ctx, token) async {
     if (token == null) {
-      Scaffold.of(ctx).showSnackBar(SnackBar(
+      ScaffoldMessenger.of(ctx).showSnackBar(SnackBar(
         content: Text("未登录!"),
       ));
       return;
     }
     String content = _controller.text;
     if (content == null || content.length == 0 || content.trim().length == 0) {
-      Scaffold.of(ctx).showSnackBar(SnackBar(
+
+      ScaffoldMessenger.of(ctx).showSnackBar(SnackBar(
         content: Text("请输入动弹内容!"),
       ));
     }

+ 54 - 53
lib/pages/login_page.dart

@@ -4,7 +4,7 @@ import '../model/constants.dart';
 import 'package:flutter/cupertino.dart';
 import 'dart:convert';
 import '../util/DataUtils.dart';
-import 'package:flutter_webview_plugin/flutter_webview_plugin.dart';
+// import 'package:flutter_webview_plugin/flutter_webview_plugin.dart';
 
 class LoginPage extends StatefulWidget {
   @override
@@ -17,23 +17,23 @@ class LoginPageState extends State<LoginPage> {
   bool loading = true;
   GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey();
   late StreamSubscription<String> _onUrlChanged;
-  late StreamSubscription<WebViewStateChanged> _onStateChanged;
-  FlutterWebviewPlugin flutterWebViewPlugin = FlutterWebviewPlugin();
+  // late StreamSubscription<WebViewStateChanged> _onStateChanged;
+  // FlutterWebviewPlugin flutterWebViewPlugin = FlutterWebviewPlugin();
 
   @override
   void initState() {
     super.initState();
     // 监听WebView的加载事件,该监听器已不起作用,不回调
-    _onStateChanged = flutterWebViewPlugin.onStateChanged.listen((state) {});
-    _onUrlChanged = flutterWebViewPlugin.onUrlChanged.listen((url) {
-      setState(() {
-        loading = false;
-      });
-      if (url != null && url.length > 0 && url.contains("osc/osc.php?code=")) {
-        // android中onUrlChanged回调时页面已加载完成,由于onStateChanged回调不能用,这里延迟1秒去拿js中的数据,没拿到就再延迟1秒,最多取5次
-        Timer(const Duration(seconds: 1), parseResult);
-      }
-    });
+    // _onStateChanged = flutterWebViewPlugin.onStateChanged.listen((state) {});
+    // _onUrlChanged = flutterWebViewPlugin.onUrlChanged.listen((url) {
+    //   setState(() {
+    //     loading = false;
+    //   });
+    //   if (url != null && url.length > 0 && url.contains("osc/osc.php?code=")) {
+    //     // android中onUrlChanged回调时页面已加载完成,由于onStateChanged回调不能用,这里延迟1秒去拿js中的数据,没拿到就再延迟1秒,最多取5次
+    //     Timer(const Duration(seconds: 1), parseResult);
+    //   }
+    // });
   }
 
   // 解析webview中的数据
@@ -41,30 +41,30 @@ class LoginPageState extends State<LoginPage> {
     if (count > MAX_COUNT) {
       return;
     }
-    flutterWebViewPlugin.evalJavascript("get();").then((result) {
-      ++count;
-      // result json字符串,包含token信息
-      if (result != null && result.length > 0) {
-        // 拿到了js中的数据
-        try {
-          // what the fuck?? need twice decode??
-          var map = json.decode(result); // s is String
-          if (map is String) {
-            map = json.decode(map); // map is Map
-          }
-          if (map != null) {
-            // 登录成功,取到了token,关闭当前页面
-            DataUtils.saveLoginInfo(map);
-            Navigator.pop(context, "refresh");
-          }
-        } catch (e) {
-          print("parse login result error: $e");
-        }
-      } else {
-        // 没拿到js中的数据,延迟一秒再拿
-        Timer(const Duration(seconds: 1), parseResult);
-      }
-    });
+    //   flutterWebViewPlugin.evalJavascript("get();").then((result) {
+    //     ++count;
+    //     // result json字符串,包含token信息
+    //     if (result != null && result.length > 0) {
+    //       // 拿到了js中的数据
+    //       try {
+    //         // what the fuck?? need twice decode??
+    //         var map = json.decode(result); // s is String
+    //         if (map is String) {
+    //           map = json.decode(map); // map is Map
+    //         }
+    //         if (map != null) {
+    //           // 登录成功,取到了token,关闭当前页面
+    //           DataUtils.saveLoginInfo(map);
+    //           Navigator.pop(context, "refresh");
+    //         }
+    //       } catch (e) {
+    //         print("parse login result error: $e");
+    //       }
+    //     } else {
+    //       // 没拿到js中的数据,延迟一秒再拿
+    //       Timer(const Duration(seconds: 1), parseResult);
+    //     }
+    //   });
   }
 
   @override
@@ -78,29 +78,30 @@ class LoginPageState extends State<LoginPage> {
       titleContent.add(CupertinoActivityIndicator());
     }
     titleContent.add(Container(width: 50.0));
-    return WebviewScaffold(
-      key: _scaffoldKey,
-      url: Constants.LOGIN_URL,
-      appBar: AppBar(
-        title: Row(
-          mainAxisAlignment: MainAxisAlignment.center,
-          children: titleContent,
-        ),
-        iconTheme: IconThemeData(color: Colors.white),
-      ),
-      withZoom: true,
-      withLocalStorage: true,
-      withJavascript: true,
-    );
+    return Container();
+    // return WebviewScaffold(
+    //   key: _scaffoldKey,
+    //   url: Constants.LOGIN_URL,
+    //   appBar: AppBar(
+    //     title: Row(
+    //       mainAxisAlignment: MainAxisAlignment.center,
+    //       children: titleContent,
+    //     ),
+    //     iconTheme: IconThemeData(color: Colors.white),
+    //   ),
+    //   withZoom: true,
+    //   withLocalStorage: true,
+    //   withJavascript: true,
+    // );
   }
 
   @override
   void dispose() {
     // Every listener should be canceled, the same should be done with this stream.
     _onUrlChanged.cancel();
-    _onStateChanged.cancel();
+    // _onStateChanged.cancel();
 
-    flutterWebViewPlugin.dispose();
+    // flutterWebViewPlugin.dispose();
 
     super.dispose();
   }

+ 25 - 29
lib/pages/news_detail_page.dart

@@ -1,61 +1,57 @@
 import 'package:flutter/material.dart';
 import 'package:flutter/cupertino.dart';
-import 'package:flutter_webview_plugin/flutter_webview_plugin.dart';
+import 'package:webview_flutter/webview_flutter.dart';
 
 class NewsDetailPage extends StatefulWidget {
-
   String? id;
 
-  NewsDetailPage({Key? key, this.id}):super(key: key);
+  NewsDetailPage({Key? key, this.id}) : super(key: key);
 
   @override
   State<StatefulWidget> createState() => NewsDetailPageState(id: this.id);
 }
 
 class NewsDetailPageState extends State<NewsDetailPage> {
-
   String? id;
   bool loaded = false;
   String? detailDataStr;
-  final flutterWebViewPlugin = FlutterWebviewPlugin();
 
   NewsDetailPageState({Key? key, this.id});
 
   @override
   void initState() {
     super.initState();
-    // 监听WebView的加载事件
-    flutterWebViewPlugin.onStateChanged.listen((state) {
-      print("state: ${state.type}");
-      if (state.type == WebViewState.finishLoad) {
-        // 加载完成
-        setState(() {
-          loaded = true;
-        });
-      }
-    });
   }
 
   @override
   Widget build(BuildContext context) {
+    WebViewController webViewController = WebViewController()
+      ..setUserAgent("Android OSC")
+      ..setJavaScriptMode(JavaScriptMode.unrestricted)
+      ..setBackgroundColor(const Color(0x00000000))
+      ..setNavigationDelegate(
+        NavigationDelegate(
+          onProgress: (int progress) {
+            // Update loading bar.
+          },
+          onPageStarted: (String url) {},
+          onPageFinished: (String url) {},
+          onWebResourceError: (WebResourceError error) {},
+        ),
+      )
+      ..loadRequest(Uri.parse(widget.id!));
+
     List<Widget> titleContent = [];
-    titleContent.add(Text("资讯详情", style: TextStyle(color: Colors.white),));
+    titleContent.add(Text(
+      "资讯详情",
+      style: TextStyle(color: Colors.white),
+    ));
     if (!loaded) {
       titleContent.add(CupertinoActivityIndicator());
     }
     titleContent.add(Container(width: 50.0));
-    return WebviewScaffold(
-      url: this.id!,
-      appBar: AppBar(
-        title: Row(
-          mainAxisAlignment: MainAxisAlignment.center,
-          children: titleContent,
-        ),
-        iconTheme: IconThemeData(color: Colors.white),
-      ),
-      withZoom: false,
-      withLocalStorage: true,
-      withJavascript: true,
+    return WebViewWidget(
+      controller: webViewController,
     );
   }
-}
+}

+ 241 - 124
pubspec.lock

@@ -5,98 +5,136 @@ packages:
     dependency: transitive
     description:
       name: async
-      url: "https://pub.flutter-io.cn"
+      sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0
+      url: "https://pub.dev"
     source: hosted
-    version: "2.8.2"
+    version: "2.10.0"
   barcode_scan:
     dependency: "direct main"
     description:
       name: barcode_scan
-      url: "https://pub.flutter-io.cn"
+      sha256: "4e5dc76de387276eac1dc05f26a6eee64dd78008c01ddd891dea3f58b564be14"
+      url: "https://pub.dev"
     source: hosted
     version: "3.0.1"
   boolean_selector:
     dependency: transitive
     description:
       name: boolean_selector
-      url: "https://pub.flutter-io.cn"
+      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.flutter-io.cn"
-    source: hosted
-    version: "1.2.0"
-  charcode:
-    dependency: transitive
-    description:
-      name: charcode
-      url: "https://pub.flutter-io.cn"
+      sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c
+      url: "https://pub.dev"
     source: hosted
-    version: "1.3.1"
+    version: "1.2.1"
   clock:
     dependency: transitive
     description:
       name: clock
-      url: "https://pub.flutter-io.cn"
+      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.flutter-io.cn"
+      sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0
+      url: "https://pub.dev"
     source: hosted
-    version: "1.16.0"
+    version: "1.17.0"
   cross_file:
     dependency: transitive
     description:
       name: cross_file
-      url: "https://pub.flutter-io.cn"
+      sha256: "0b0036e8cccbfbe0555fd83c1d31a6f30b77a96b598b35a5d36dd41f718695e9"
+      url: "https://pub.dev"
     source: hosted
-    version: "0.3.3+1"
+    version: "0.3.3+4"
   cupertino_icons:
     dependency: "direct main"
     description:
       name: cupertino_icons
-      url: "https://pub.flutter-io.cn"
+      sha256: e35129dc44c9118cee2a5603506d823bab99c68393879edb440e0090d07586be
+      url: "https://pub.dev"
     source: hosted
     version: "1.0.5"
   event_bus:
     dependency: "direct main"
     description:
       name: event_bus
-      url: "https://pub.flutter-io.cn"
+      sha256: "44baa799834f4c803921873e7446a2add0f3efa45e101a054b1f0ab9b95f8edc"
+      url: "https://pub.dev"
     source: hosted
     version: "2.0.0"
   fake_async:
     dependency: transitive
     description:
       name: fake_async
-      url: "https://pub.flutter-io.cn"
+      sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78"
+      url: "https://pub.dev"
     source: hosted
-    version: "1.3.0"
+    version: "1.3.1"
   ffi:
     dependency: transitive
     description:
       name: ffi
-      url: "https://pub.flutter-io.cn"
+      sha256: ed5337a5660c506388a9f012be0288fb38b49020ce2b45fe1f8b8323fe429f99
+      url: "https://pub.dev"
     source: hosted
-    version: "2.0.1"
+    version: "2.0.2"
   file:
     dependency: transitive
     description:
       name: file
-      url: "https://pub.flutter-io.cn"
+      sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d"
+      url: "https://pub.dev"
     source: hosted
-    version: "6.1.2"
+    version: "6.1.4"
+  file_selector_linux:
+    dependency: transitive
+    description:
+      name: file_selector_linux
+      sha256: "770eb1ab057b5ae4326d1c24cc57710758b9a46026349d021d6311bd27580046"
+      url: "https://pub.dev"
+    source: hosted
+    version: "0.9.2"
+  file_selector_macos:
+    dependency: transitive
+    description:
+      name: file_selector_macos
+      sha256: "4ada532862917bf16e3adb3891fe3a5917a58bae03293e497082203a80909412"
+      url: "https://pub.dev"
+    source: hosted
+    version: "0.9.3+1"
+  file_selector_platform_interface:
+    dependency: transitive
+    description:
+      name: file_selector_platform_interface
+      sha256: "412705a646a0ae90f33f37acfae6a0f7cbc02222d6cd34e479421c3e74d3853c"
+      url: "https://pub.dev"
+    source: hosted
+    version: "2.6.0"
+  file_selector_windows:
+    dependency: transitive
+    description:
+      name: file_selector_windows
+      sha256: "1372760c6b389842b77156203308940558a2817360154084368608413835fc26"
+      url: "https://pub.dev"
+    source: hosted
+    version: "0.9.3"
   fixnum:
     dependency: transitive
     description:
       name: fixnum
-      url: "https://pub.flutter-io.cn"
+      sha256: "3b298dacb1898a8f5fddec19388b899b0f13195066b89fa66391e5e92f6c2052"
+      url: "https://pub.dev"
     source: hosted
     version: "0.10.11"
   flutter:
@@ -108,9 +146,10 @@ packages:
     dependency: transitive
     description:
       name: flutter_plugin_android_lifecycle
-      url: "https://pub.flutter-io.cn"
+      sha256: "950e77c2bbe1692bc0874fc7fb491b96a4dc340457f4ea1641443d0a6c1ea360"
+      url: "https://pub.dev"
     source: hosted
-    version: "2.0.7"
+    version: "2.0.15"
   flutter_test:
     dependency: "direct dev"
     description: flutter
@@ -121,202 +160,238 @@ packages:
     description: flutter
     source: sdk
     version: "0.0.0"
-  flutter_webview_plugin:
-    dependency: "direct main"
-    description:
-      name: flutter_webview_plugin
-      url: "https://pub.flutter-io.cn"
-    source: hosted
-    version: "0.4.0"
   http:
     dependency: "direct main"
     description:
       name: http
-      url: "https://pub.flutter-io.cn"
+      sha256: "5895291c13fa8a3bd82e76d5627f69e0d85ca6a30dcac95c4ea19a5d555879c2"
+      url: "https://pub.dev"
     source: hosted
-    version: "0.13.5"
+    version: "0.13.6"
   http_parser:
     dependency: transitive
     description:
       name: http_parser
-      url: "https://pub.flutter-io.cn"
+      sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
+      url: "https://pub.dev"
     source: hosted
-    version: "4.0.1"
+    version: "4.0.2"
   image_picker:
     dependency: "direct main"
     description:
       name: image_picker
-      url: "https://pub.flutter-io.cn"
+      sha256: "6296e98782726d37f59663f0727d0e978eee1ced1ffed45ccaba591786a7f7b3"
+      url: "https://pub.dev"
     source: hosted
-    version: "0.8.5+3"
+    version: "1.0.1"
   image_picker_android:
     dependency: transitive
     description:
       name: image_picker_android
-      url: "https://pub.flutter-io.cn"
+      sha256: "8179b54039b50eee561676232304f487602e2950ffb3e8995ed9034d6505ca34"
+      url: "https://pub.dev"
     source: hosted
-    version: "0.8.5+2"
+    version: "0.8.7+4"
   image_picker_for_web:
     dependency: transitive
     description:
       name: image_picker_for_web
-      url: "https://pub.flutter-io.cn"
+      sha256: "869fe8a64771b7afbc99fc433a5f7be2fea4d1cb3d7c11a48b6b579eb9c797f0"
+      url: "https://pub.dev"
     source: hosted
-    version: "2.1.8"
+    version: "2.2.0"
   image_picker_ios:
     dependency: transitive
     description:
       name: image_picker_ios
-      url: "https://pub.flutter-io.cn"
+      sha256: b3e2f21feb28b24dd73a35d7ad6e83f568337c70afab5eabac876e23803f264b
+      url: "https://pub.dev"
+    source: hosted
+    version: "0.8.8"
+  image_picker_linux:
+    dependency: transitive
+    description:
+      name: image_picker_linux
+      sha256: "02cbc21fe1706b97942b575966e5fbbeaac535e76deef70d3a242e4afb857831"
+      url: "https://pub.dev"
+    source: hosted
+    version: "0.2.1"
+  image_picker_macos:
+    dependency: transitive
+    description:
+      name: image_picker_macos
+      sha256: cee2aa86c56780c13af2c77b5f2f72973464db204569e1ba2dd744459a065af4
+      url: "https://pub.dev"
     source: hosted
-    version: "0.8.5+6"
+    version: "0.2.1"
   image_picker_platform_interface:
     dependency: transitive
     description:
       name: image_picker_platform_interface
-      url: "https://pub.flutter-io.cn"
+      sha256: c1134543ae2187e85299996d21c526b2f403854994026d575ae4cf30d7bb2a32
+      url: "https://pub.dev"
     source: hosted
-    version: "2.6.1"
+    version: "2.9.0"
+  image_picker_windows:
+    dependency: transitive
+    description:
+      name: image_picker_windows
+      sha256: c3066601ea42113922232c7b7b3330a2d86f029f685bba99d82c30e799914952
+      url: "https://pub.dev"
+    source: hosted
+    version: "0.2.1"
   js:
     dependency: transitive
     description:
       name: js
-      url: "https://pub.flutter-io.cn"
+      sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7"
+      url: "https://pub.dev"
     source: hosted
-    version: "0.6.4"
+    version: "0.6.5"
   matcher:
     dependency: transitive
     description:
       name: matcher
-      url: "https://pub.flutter-io.cn"
+      sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72"
+      url: "https://pub.dev"
     source: hosted
-    version: "0.12.11"
+    version: "0.12.13"
   material_color_utilities:
     dependency: transitive
     description:
       name: material_color_utilities
-      url: "https://pub.flutter-io.cn"
+      sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724
+      url: "https://pub.dev"
     source: hosted
-    version: "0.1.4"
+    version: "0.2.0"
   meta:
     dependency: transitive
     description:
       name: meta
-      url: "https://pub.flutter-io.cn"
+      sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42"
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.8.0"
+  mime:
+    dependency: transitive
+    description:
+      name: mime
+      sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e
+      url: "https://pub.dev"
     source: hosted
-    version: "1.7.0"
+    version: "1.0.4"
   path:
     dependency: transitive
     description:
       name: path
-      url: "https://pub.flutter-io.cn"
+      sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b
+      url: "https://pub.dev"
     source: hosted
-    version: "1.8.1"
+    version: "1.8.2"
   path_provider_linux:
     dependency: transitive
     description:
       name: path_provider_linux
-      url: "https://pub.flutter-io.cn"
+      sha256: ffbb8cc9ed2c9ec0e4b7a541e56fd79b138e8f47d2fb86815f15358a349b3b57
+      url: "https://pub.dev"
     source: hosted
-    version: "2.1.7"
+    version: "2.1.11"
   path_provider_platform_interface:
     dependency: transitive
     description:
       name: path_provider_platform_interface
-      url: "https://pub.flutter-io.cn"
+      sha256: "57585299a729335f1298b43245842678cb9f43a6310351b18fb577d6e33165ec"
+      url: "https://pub.dev"
     source: hosted
-    version: "2.0.4"
+    version: "2.0.6"
   path_provider_windows:
     dependency: transitive
     description:
       name: path_provider_windows
-      url: "https://pub.flutter-io.cn"
+      sha256: "1cb68ba4cd3a795033de62ba1b7b4564dace301f952de6bfb3cd91b202b6ee96"
+      url: "https://pub.dev"
     source: hosted
-    version: "2.1.2"
+    version: "2.1.7"
   platform:
     dependency: transitive
     description:
       name: platform
-      url: "https://pub.flutter-io.cn"
+      sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76"
+      url: "https://pub.dev"
     source: hosted
     version: "3.1.0"
   plugin_platform_interface:
     dependency: transitive
     description:
       name: plugin_platform_interface
-      url: "https://pub.flutter-io.cn"
+      sha256: "43798d895c929056255600343db8f049921cbec94d31ec87f1dc5c16c01935dd"
+      url: "https://pub.dev"
     source: hosted
-    version: "2.1.2"
-  process:
-    dependency: transitive
-    description:
-      name: process
-      url: "https://pub.flutter-io.cn"
-    source: hosted
-    version: "4.2.4"
+    version: "2.1.5"
   protobuf:
     dependency: transitive
     description:
       name: protobuf
-      url: "https://pub.flutter-io.cn"
+      sha256: "1f818f8f5de28e551cfc2a993c5a31a7f534618345654c904e203c0112abed55"
+      url: "https://pub.dev"
     source: hosted
     version: "1.1.4"
   shared_preferences:
     dependency: "direct main"
     description:
       name: shared_preferences
-      url: "https://pub.flutter-io.cn"
+      sha256: "0344316c947ffeb3a529eac929e1978fcd37c26be4e8468628bac399365a3ca1"
+      url: "https://pub.dev"
     source: hosted
-    version: "2.0.15"
+    version: "2.2.0"
   shared_preferences_android:
     dependency: transitive
     description:
       name: shared_preferences_android
-      url: "https://pub.flutter-io.cn"
+      sha256: fe8401ec5b6dcd739a0fe9588802069e608c3fdbfd3c3c93e546cf2f90438076
+      url: "https://pub.dev"
     source: hosted
-    version: "2.0.12"
-  shared_preferences_ios:
+    version: "2.2.0"
+  shared_preferences_foundation:
     dependency: transitive
     description:
-      name: shared_preferences_ios
-      url: "https://pub.flutter-io.cn"
+      name: shared_preferences_foundation
+      sha256: f39696b83e844923b642ce9dd4bd31736c17e697f6731a5adf445b1274cf3cd4
+      url: "https://pub.dev"
     source: hosted
-    version: "2.1.1"
+    version: "2.3.2"
   shared_preferences_linux:
     dependency: transitive
     description:
       name: shared_preferences_linux
-      url: "https://pub.flutter-io.cn"
-    source: hosted
-    version: "2.1.1"
-  shared_preferences_macos:
-    dependency: transitive
-    description:
-      name: shared_preferences_macos
-      url: "https://pub.flutter-io.cn"
+      sha256: "71d6806d1449b0a9d4e85e0c7a917771e672a3d5dc61149cc9fac871115018e1"
+      url: "https://pub.dev"
     source: hosted
-    version: "2.0.4"
+    version: "2.3.0"
   shared_preferences_platform_interface:
     dependency: transitive
     description:
       name: shared_preferences_platform_interface
-      url: "https://pub.flutter-io.cn"
+      sha256: "23b052f17a25b90ff2b61aad4cc962154da76fb62848a9ce088efe30d7c50ab1"
+      url: "https://pub.dev"
     source: hosted
-    version: "2.0.0"
+    version: "2.3.0"
   shared_preferences_web:
     dependency: transitive
     description:
       name: shared_preferences_web
-      url: "https://pub.flutter-io.cn"
+      sha256: "7347b194fb0bbeb4058e6a4e87ee70350b6b2b90f8ac5f8bd5b3a01548f6d33a"
+      url: "https://pub.dev"
     source: hosted
-    version: "2.0.4"
+    version: "2.2.0"
   shared_preferences_windows:
     dependency: transitive
     description:
       name: shared_preferences_windows
-      url: "https://pub.flutter-io.cn"
+      sha256: f95e6a43162bce43c9c3405f3eb6f39e5b5d11f65fab19196cf8225e2777624d
+      url: "https://pub.dev"
     source: hosted
-    version: "2.1.1"
+    version: "2.3.0"
   sky_engine:
     dependency: transitive
     description: flutter
@@ -326,72 +401,114 @@ packages:
     dependency: transitive
     description:
       name: source_span
-      url: "https://pub.flutter-io.cn"
+      sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250
+      url: "https://pub.dev"
     source: hosted
-    version: "1.8.2"
+    version: "1.9.1"
   stack_trace:
     dependency: transitive
     description:
       name: stack_trace
-      url: "https://pub.flutter-io.cn"
+      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.flutter-io.cn"
+      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.flutter-io.cn"
+      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.flutter-io.cn"
+      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.flutter-io.cn"
+      sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206
+      url: "https://pub.dev"
     source: hosted
-    version: "0.4.9"
+    version: "0.4.16"
   typed_data:
     dependency: transitive
     description:
       name: typed_data
-      url: "https://pub.flutter-io.cn"
+      sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c
+      url: "https://pub.dev"
     source: hosted
-    version: "1.3.1"
+    version: "1.3.2"
   vector_math:
     dependency: transitive
     description:
       name: vector_math
-      url: "https://pub.flutter-io.cn"
+      sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803"
+      url: "https://pub.dev"
+    source: hosted
+    version: "2.1.4"
+  webview_flutter:
+    dependency: "direct main"
+    description:
+      name: webview_flutter
+      sha256: "789d52bd789373cc1e100fb634af2127e86c99cf9abde09499743270c5de8d00"
+      url: "https://pub.dev"
+    source: hosted
+    version: "4.2.2"
+  webview_flutter_android:
+    dependency: transitive
+    description:
+      name: webview_flutter_android
+      sha256: d936a09fbfd08cb78f7329e0bbacf6158fbdfe24ffc908b22444c07d295eb193
+      url: "https://pub.dev"
+    source: hosted
+    version: "3.9.2"
+  webview_flutter_platform_interface:
+    dependency: transitive
+    description:
+      name: webview_flutter_platform_interface
+      sha256: "564ef378cafc1a0e29f1d76ce175ef517a0a6115875dff7b43fccbef2b0aeb30"
+      url: "https://pub.dev"
+    source: hosted
+    version: "2.4.0"
+  webview_flutter_wkwebview:
+    dependency: transitive
+    description:
+      name: webview_flutter_wkwebview
+      sha256: "5fa098f28b606f699e8ca52d9e4e11edbbfef65189f5f77ae92703ba5408fd25"
+      url: "https://pub.dev"
     source: hosted
-    version: "2.1.2"
+    version: "3.7.2"
   win32:
     dependency: transitive
     description:
       name: win32
-      url: "https://pub.flutter-io.cn"
+      sha256: "5a751eddf9db89b3e5f9d50c20ab8612296e4e8db69009788d6c8b060a84191c"
+      url: "https://pub.dev"
     source: hosted
-    version: "2.7.0"
+    version: "4.1.4"
   xdg_directories:
     dependency: transitive
     description:
       name: xdg_directories
-      url: "https://pub.flutter-io.cn"
+      sha256: e0b1147eec179d3911f1f19b59206448f78195ca1d20514134e10641b7d7fbff
+      url: "https://pub.dev"
     source: hosted
-    version: "0.2.0+1"
+    version: "1.0.1"
 sdks:
-  dart: ">=2.17.0 <3.0.0"
-  flutter: ">=3.0.0"
+  dart: ">=2.19.0 <3.0.0"
+  flutter: ">=3.3.0"

+ 4 - 3
pubspec.yaml

@@ -11,12 +11,13 @@ dependencies:
     sdk: flutter
 
   cupertino_icons: ^1.0.5
-  flutter_webview_plugin: ^0.4.0
-  image_picker: ^0.8.5+3
+  # flutter_webview_plugin: ^0.4.0 # 弃用
+  webview_flutter: ^4.2.2
+  image_picker: ^1.0.1
 #  fluttertoast: ^2.0.3
   shared_preferences: ^2.2.0
   event_bus: ^2.0.0
-  barcode_scan: ^3.0.1
+  barcode_scan: ^3.0.1  # bug需此替换
   http: ^0.13.5
 
 dev_dependencies:

Some files were not shown because too many files changed in this diff