Browse Source

fix error

fish 1 year ago
parent
commit
d1f3de82a0

+ 2 - 2
android/app/build.gradle

@@ -35,7 +35,7 @@ android {
     defaultConfig {
         // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
         applicationId "com.example.shuqi"
-        minSdkVersion 19
+        minSdkVersion 21
         targetSdkVersion 33
         versionCode flutterVersionCode.toInteger()
         versionName flutterVersionName
@@ -53,7 +53,7 @@ android {
 flutter {
     source '../..'
 }
-
+// 指定版本,解决stdlib冲突问题
 dependencies {
     implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
     implementation(platform("org.jetbrains.kotlin:kotlin-bom:1.8.0"))

+ 3 - 3
android/build.gradle

@@ -2,7 +2,7 @@ buildscript {
     ext.kotlin_version = '1.7.10'
     repositories {
         google()
-        jcenter()
+        mavenCentral()
     }
 
     dependencies {
@@ -14,7 +14,7 @@ buildscript {
 allprojects {
     repositories {
         google()
-        jcenter()
+        mavenCentral()
     }
 }
 
@@ -26,6 +26,6 @@ subprojects {
     project.evaluationDependsOn(':app')
 }
 
-task clean(type: Delete) {
+tasks.register("clean", Delete) {
     delete rootProject.buildDir
 }

+ 1 - 1
lib/app/request.dart

@@ -14,7 +14,7 @@ class Request {
   }
 
   static Future<dynamic> mock({required String action, Map? params}) async {
-    var responseStr = await rootBundle.loadString('mock/$action.json');
+    var responseStr = await rootBundle.loadString('assets/mock/$action.json');
     var responseJson = json.decode(responseStr);
     return responseJson['data'];
   }

+ 6 - 6
lib/index_page.dart

@@ -18,14 +18,14 @@ class IndexPageState extends State<IndexPage> {
   int _tabIndex = 1;
   bool isFinishSetup = false;
   List<Image> _tabImages = [
-    Image.asset('img/tab_bookshelf_n.png'),
-    Image.asset('img/tab_bookstore_n.png'),
-    Image.asset('img/tab_me_n.png'),
+    Image.asset('assets/img/tab_bookshelf_n.png'),
+    Image.asset('assets/img/tab_bookstore_n.png'),
+    Image.asset('assets/img/tab_me_n.png'),
   ];
   List<Image> _tabSelectedImages = [
-    Image.asset('img/tab_bookshelf_p.png'),
-    Image.asset('img/tab_bookstore_p.png'),
-    Image.asset('img/tab_me_p.png'),
+    Image.asset('assets/img/tab_bookshelf_p.png'),
+    Image.asset('assets/img/tab_bookstore_p.png'),
+    Image.asset('assets/img/tab_me_p.png'),
   ];
 
   @override

+ 1 - 1
lib/main.dart

@@ -6,8 +6,8 @@ import 'package:shuqi/model/constant.dart';
 import 'package:shuqi/model/sq_color.dart';
 
 void main() {
+  WidgetsFlutterBinding.ensureInitialized();
   runApp(MyApp());
-
   // 状态栏透明
   if (Platform.isAndroid) {
     SystemUiOverlayStyle systemUiOverlayStyle =

+ 4 - 4
lib/pages/bookshelf/bookshelf_cloud_widget.dart

@@ -18,7 +18,7 @@ class BookshelfCloudWidget extends AnimatedWidget {
           Positioned(
             bottom: -30,
             child: Image.asset(
-              'img/bookshelf_cloud_0.png',
+              'assets/img/bookshelf_cloud_0.png',
               fit: BoxFit.cover,
               width: width,
             ),
@@ -28,7 +28,7 @@ class BookshelfCloudWidget extends AnimatedWidget {
             child: Opacity(
               opacity: animation.value,
               child: Image.asset(
-                'img/bookshelf_cloud_1.png',
+                'assets/img/bookshelf_cloud_1.png',
                 fit: BoxFit.cover,
                 width: width,
               ),
@@ -39,7 +39,7 @@ class BookshelfCloudWidget extends AnimatedWidget {
             child: Opacity(
               opacity: animation.value,
               child: Image.asset(
-                'img/bookshelf_cloud_2.png',
+                'assets/img/bookshelf_cloud_2.png',
                 fit: BoxFit.cover,
                 width: width,
               ),
@@ -50,7 +50,7 @@ class BookshelfCloudWidget extends AnimatedWidget {
             child: Opacity(
               opacity: (1.0 - animation.value),
               child: Image.asset(
-                'img/bookshelf_cloud_3.png',
+                'assets/img/bookshelf_cloud_3.png',
                 fit: BoxFit.cover,
                 width: width,
               ),

+ 2 - 2
lib/pages/bookshelf/bookshelf_header.dart

@@ -51,7 +51,7 @@ class _BookshelfHeaderState extends State<BookshelfHeader> with SingleTickerProv
           Positioned(
             top: height - bgHeight,
             child: Image.asset(
-              'img/bookshelf_bg.png',
+              'assets/img/bookshelf_bg.png',
               fit: BoxFit.cover,
               width: width,
               height: bgHeight,
@@ -100,7 +100,7 @@ class _BookshelfHeaderState extends State<BookshelfHeader> with SingleTickerProv
                   Row(
                     children: <Widget>[
                       Text('读至0.2%     继续阅读 ', style: TextStyle(fontSize: 14, color: SQColor.paper)),
-                      Image.asset('img/bookshelf_continue_read.png'),
+                      Image.asset('assets/img/bookshelf_continue_read.png'),
                     ],
                   ),
                 ],

+ 4 - 3
lib/pages/bookshelf/bookshelf_scene.dart

@@ -62,12 +62,13 @@ class BookshelfState extends State<BookshelfScene> with RouteAware {
       Container(
         height: kToolbarHeight,
         width: 44,
-        child: Image.asset('img/actionbar_checkin.png', color: iconColor),
+        child:
+            Image.asset('assets/img/actionbar_checkin.png', color: iconColor),
       ),
       Container(
         height: kToolbarHeight,
         width: 44,
-        child: Image.asset('img/actionbar_search.png', color: iconColor),
+        child: Image.asset('assets/img/actionbar_search.png', color: iconColor),
       ),
       SizedBox(width: 15)
     ]);
@@ -127,7 +128,7 @@ class BookshelfState extends State<BookshelfScene> with RouteAware {
         color: SQColor.paper,
         width: width,
         height: width / 0.75,
-        child: Image.asset('img/bookshelf_add.png'),
+        child: Image.asset('assets/img/bookshelf_add.png'),
       ),
     ));
     return Container(

+ 1 - 1
lib/pages/home/home_section_view.dart

@@ -11,7 +11,7 @@ class HomeSectionView extends StatelessWidget {
       padding: EdgeInsets.fromLTRB(15, 15, 0, 5),
       child: Row(
         children: <Widget>[
-          Image.asset('img/home_tip.png'),
+          Image.asset('assets/img/home_tip.png'),
           SizedBox(width: 10),
           Text(
             '$title',

+ 1 - 1
lib/pages/me/me_cell.dart

@@ -27,7 +27,7 @@ class MeCell extends StatelessWidget {
                   SizedBox(width: 20),
                   Text(title, style: TextStyle(fontSize: 18)),
                   Expanded(child: Container()),
-                  Image.asset('img/arrow_right.png'),
+                  Image.asset('assets/img/arrow_right.png'),
                 ],
               ),
             ),

+ 4 - 1
lib/pages/me/me_header.dart

@@ -23,7 +23,10 @@ class MeHeader extends StatelessWidget {
           children: <Widget>[
             CircleAvatar(
               radius: 40,
-              backgroundImage: (user?.avatarUrl != null ? CachedNetworkImageProvider(user!.avatarUrl) : AssetImage('img/placeholder_avatar.png')) as ImageProvider<Object>?,
+              backgroundImage: (user?.avatarUrl != null
+                      ? CachedNetworkImageProvider(user!.avatarUrl)
+                      : AssetImage('assets/img/placeholder_avatar.png'))
+                  as ImageProvider<Object>?,
             ),
             SizedBox(width: 25),
             Expanded(

+ 10 - 10
lib/pages/me/mine_page.dart

@@ -16,42 +16,42 @@ class MinePage extends StatelessWidget {
         children: <Widget>[
           MeCell(
             title: '钱包',
-            iconName: 'img/me_wallet.png',
+            iconName: 'assets/img/me_wallet.png',
             onPressed: () {},
           ),
           MeCell(
             title: '消费充值记录',
-            iconName: 'img/me_record.png',
+            iconName: 'assets/img/me_record.png',
             onPressed: () {},
           ),
           MeCell(
             title: '购买的书',
-            iconName: 'img/me_buy.png',
+            iconName: 'assets/img/me_buy.png',
             onPressed: () {},
           ),
           MeCell(
             title: '我的会员',
-            iconName: 'img/me_vip.png',
+            iconName: 'assets/img/me_vip.png',
             onPressed: () {},
           ),
           MeCell(
             title: '绑兑换码',
-            iconName: 'img/me_coupon.png',
+            iconName: 'assets/img/me_coupon.png',
             onPressed: () {},
           ),
           MeCell(
             title: '阅读之约',
-            iconName: 'img/me_date.png',
+            iconName: 'assets/img/me_date.png',
             onPressed: () {},
           ),
           MeCell(
             title: '我的收藏',
-            iconName: 'img/me_favorite.png',
+            iconName: 'assets/img/me_favorite.png',
             onPressed: () {},
           ),
           MeCell(
             title: '设置',
-            iconName: 'img/me_setting.png',
+            iconName: 'assets/img/me_setting.png',
             onPressed: () {
               Navigator.push(context, MaterialPageRoute(builder: (context) {
                 return SettingPage();
@@ -60,14 +60,14 @@ class MinePage extends StatelessWidget {
           ),
           MeCell(
             title: 'Flutter版 书旗小说',
-            iconName: 'img/me_feedback.png',
+            iconName: 'assets/img/me_feedback.png',
             onPressed: () {
               AppNavigator.pushWeb(context, 'https://github.com/huanxsd/flutter_shuqi', 'Flutter');
             },
           ),
           MeCell(
             title: 'SwiftUI版 书旗小说',
-            iconName: 'img/me_action.png',
+            iconName: 'assets/img/me_action.png',
             onPressed: () {
               AppNavigator.pushWeb(context, 'https://github.com/huanxsd/swiftui-shuqi-reader', 'SwiftUI');
             },

+ 1 - 1
lib/pages/novel_detail/novel_detail_cell.dart

@@ -36,7 +36,7 @@ class NovelDetailCell extends StatelessWidget {
                 ),
                 attachedWidget != null ? attachedWidget! : Container(),
                 SizedBox(width: 10),
-                Image.asset('img/arrow_right.png'),
+                Image.asset('assets/img/arrow_right.png'),
               ],
             ),
           ),

+ 3 - 3
lib/pages/novel_detail/novel_detail_header.dart

@@ -59,7 +59,7 @@ class NovelDetailHeader extends StatelessWidget {
                 Row(
                   crossAxisAlignment: CrossAxisAlignment.center,
                   children: <Widget>[
-                    Image.asset('img/read_icon_vip.png'),
+                    Image.asset('assets/img/read_icon_vip.png'),
                     Expanded(
                       child: Text(
                         ' 续费包月会员,万本小说免费读 >',
@@ -88,9 +88,9 @@ class NovelDetailHeader extends StatelessWidget {
       }
       var img;
       if (star <= i + 0.5) {
-        img = Image.asset('img/detail_star_half.png');
+        img = Image.asset('assets/img/detail_star_half.png');
       } else {
-        img = Image.asset('img/detail_star.png');
+        img = Image.asset('assets/img/detail_star.png');
       }
       children.add(img);
       children.add(SizedBox(width: 5));

+ 1 - 1
lib/pages/novel_detail/novel_detail_recommend_view.dart

@@ -29,7 +29,7 @@ class NovelDetailRecommendView extends StatelessWidget {
             padding: EdgeInsets.symmetric(vertical: 15),
             child: Row(
               children: <Widget>[
-                Image.asset('img/home_tip.png'),
+                Image.asset('assets/img/home_tip.png'),
                 SizedBox(width: 13),
                 Text('看过本书的人还在看', style: TextStyle(fontSize: 16)),
               ],

+ 9 - 6
lib/pages/novel_detail/novel_detail_scene.dart

@@ -105,7 +105,8 @@ class NovelDetailSceneState extends State<NovelDetailScene> with RouteAware {
           width: 44,
           height: Screen.navigationBarHeight,
           padding: EdgeInsets.fromLTRB(5, Screen.topSafeHeight, 0, 0),
-          child: GestureDetector(onTap: back, child: Image.asset('img/pub_back_white.png')),
+          child: GestureDetector(
+              onTap: back, child: Image.asset('assets/img/pub_back_white.png')),
         ),
         Opacity(
           opacity: navAlpha,
@@ -117,7 +118,9 @@ class NovelDetailSceneState extends State<NovelDetailScene> with RouteAware {
               children: <Widget>[
                 Container(
                   width: 44,
-                  child: GestureDetector(onTap: back, child: Image.asset('img/pub_back_gray.png')),
+                  child: GestureDetector(
+                      onTap: back,
+                      child: Image.asset('assets/img/pub_back_gray.png')),
                 ),
                 Expanded(
                   child: Text(
@@ -145,11 +148,11 @@ class NovelDetailSceneState extends State<NovelDetailScene> with RouteAware {
             padding: EdgeInsets.symmetric(vertical: 15),
             child: Row(
               children: <Widget>[
-                Image.asset('img/home_tip.png'),
+                Image.asset('assets/img/home_tip.png'),
                 SizedBox(width: 13),
                 Text('书友评价', style: TextStyle(fontSize: 16)),
                 Expanded(child: Container()),
-                Image.asset('img/detail_write_comment.png'),
+                Image.asset('assets/img/detail_write_comment.png'),
                 Text('  写书评', style: TextStyle(fontSize: 14, color: SQColor.primary)),
                 SizedBox(width: 15),
               ],
@@ -218,13 +221,13 @@ class NovelDetailSceneState extends State<NovelDetailScene> with RouteAware {
                       NovelDetailHeader(novel),
                       NovelSummaryView(novel.introduction, isSummaryUnfold, changeSummaryMaxLines),
                       NovelDetailCell(
-                        iconName: 'img/detail_latest.png',
+                        iconName: 'assets/img/detail_latest.png',
                         title: '最新',
                         subtitle: novel.lastChapter.title,
                         attachedWidget: Text(novel.status, style: TextStyle(fontSize: 14, color: novel.statusColor())),
                       ),
                       NovelDetailCell(
-                        iconName: 'img/detail_chapter.png',
+                        iconName: 'assets/img/detail_chapter.png',
                         title: '目录',
                         subtitle: '共${novel.chapterCount}章',
                       ),

+ 4 - 2
lib/pages/novel_detail/novel_summary_view.dart

@@ -22,8 +22,10 @@ class NovelSummaryView extends StatelessWidget {
               maxLines: isUnfold ? null : 3,
               style: TextStyle(fontSize: 14),
             ),
-            Image.asset('img/detail_fold_bg.png'),
-            Image.asset(isUnfold ? 'img/detail_up.png' : 'img/detail_down.png'),
+            Image.asset('assets/img/detail_fold_bg.png'),
+            Image.asset(isUnfold
+                ? 'assets/img/detail_up.png'
+                : 'assets/img/detail_down.png'),
           ],
         ),
       ),

+ 1 - 1
lib/pages/reader/battery_view.dart

@@ -50,7 +50,7 @@ class _BatteryViewState extends State<BatteryView> {
       height: 12,
       child: Stack(
         children: <Widget>[
-          Image.asset('img/reader_battery.png'),
+          Image.asset('assets/img/reader_battery.png'),
           Container(
             margin: EdgeInsets.fromLTRB(2, 2, 2, 2),
             width: 20 * batteryLevel,

+ 9 - 9
lib/pages/reader/reader_menu.dart

@@ -77,17 +77,17 @@ class _ReaderMenuState extends State<ReaderMenu> with SingleTickerProviderStateM
                 onTap: () {
                   Navigator.pop(context);
                 },
-                child: Image.asset('img/pub_back_gray.png'),
+                child: Image.asset('assets/img/pub_back_gray.png'),
               ),
             ),
             Expanded(child: Container()),
             Container(
               width: 44,
-              child: Image.asset('img/read_icon_voice.png'),
+              child: Image.asset('assets/img/read_icon_voice.png'),
             ),
             Container(
               width: 44,
-              child: Image.asset('img/read_icon_more.png'),
+              child: Image.asset('assets/img/read_icon_more.png'),
             ),
           ],
         ),
@@ -150,7 +150,7 @@ class _ReaderMenuState extends State<ReaderMenu> with SingleTickerProviderStateM
             onTap: previousArticle,
             child: Container(
               padding: EdgeInsets.all(20),
-              child: Image.asset('img/read_icon_chapter_previous.png'),
+              child: Image.asset('assets/img/read_icon_chapter_previous.png'),
             ),
           ),
           Expanded(
@@ -174,7 +174,7 @@ class _ReaderMenuState extends State<ReaderMenu> with SingleTickerProviderStateM
             onTap: nextArticle,
             child: Container(
               padding: EdgeInsets.all(20),
-              child: Image.asset('img/read_icon_chapter_next.png'),
+              child: Image.asset('assets/img/read_icon_chapter_next.png'),
             ),
           )
         ],
@@ -209,10 +209,10 @@ class _ReaderMenuState extends State<ReaderMenu> with SingleTickerProviderStateM
     return Row(
       mainAxisAlignment: MainAxisAlignment.spaceAround,
       children: <Widget>[
-        buildBottomItem('目录', 'img/read_icon_catalog.png'),
-        buildBottomItem('亮度', 'img/read_icon_brightness.png'),
-        buildBottomItem('字体', 'img/read_icon_font.png'),
-        buildBottomItem('设置', 'img/read_icon_setting.png'),
+        buildBottomItem('目录', 'assets/img/read_icon_catalog.png'),
+        buildBottomItem('亮度', 'assets/img/read_icon_brightness.png'),
+        buildBottomItem('字体', 'assets/img/read_icon_font.png'),
+        buildBottomItem('设置', 'assets/img/read_icon_setting.png'),
       ],
     );
   }

+ 7 - 1
lib/pages/reader/reader_scene.dart

@@ -276,7 +276,13 @@ class ReaderSceneState extends State<ReaderScene> with RouteAware {
         value: SystemUiOverlayStyle.dark,
         child: Stack(
           children: <Widget>[
-            Positioned(left: 0, top: 0, right: 0, bottom: 0, child: Image.asset('img/read_bg.png', fit: BoxFit.cover)),
+            Positioned(
+                left: 0,
+                top: 0,
+                right: 0,
+                bottom: 0,
+                child:
+                    Image.asset('assets/img/read_bg.png', fit: BoxFit.cover)),
             buildPageView(),
             buildMenu(),
           ],

+ 6 - 1
lib/pages/reader/reader_view.dart

@@ -16,7 +16,12 @@ class ReaderView extends StatelessWidget {
   Widget build(BuildContext context) {
     return Stack(
       children: <Widget>[
-        Positioned(left: 0, top: 0, right: 0, bottom: 0, child: Image.asset('img/read_bg.png', fit: BoxFit.cover)),
+        Positioned(
+            left: 0,
+            top: 0,
+            right: 0,
+            bottom: 0,
+            child: Image.asset('assets/img/read_bg.png', fit: BoxFit.cover)),
         ReaderOverlayer(article: article, page: page, topSafeHeight: topSafeHeight),
         buildContent(article, page),
       ],

+ 1 - 1
lib/pages/web_page.dart

@@ -42,7 +42,7 @@ class _WebPageState extends State<WebPage> {
             onTap: () {
               Share.share(this.widget.url);
             },
-            child: Image.asset('img/icon_menu_share.png'),
+            child: Image.asset('assets/img/icon_menu_share.png'),
           )
         ],
       ),

+ 7 - 7
lib/utility/screen.dart

@@ -4,37 +4,37 @@ import 'dart:ui' as ui show window;
 
 class Screen {
   static double get width {
-    MediaQueryData mediaQuery = MediaQueryData.fromWindow(ui.window);
+    MediaQueryData mediaQuery = MediaQueryData.fromView(ui.window);
     return mediaQuery.size.width;
   }
   
   static double get height {
-    MediaQueryData mediaQuery = MediaQueryData.fromWindow(ui.window);
+    MediaQueryData mediaQuery = MediaQueryData.fromView(ui.window);
     return mediaQuery.size.height;
   }
 
   static double get scale {
-    MediaQueryData mediaQuery = MediaQueryData.fromWindow(ui.window);
+    MediaQueryData mediaQuery = MediaQueryData.fromView(ui.window);
     return mediaQuery.devicePixelRatio;
   }
 
   static double get textScaleFactor {
-    MediaQueryData mediaQuery = MediaQueryData.fromWindow(ui.window);
+    MediaQueryData mediaQuery = MediaQueryData.fromView(ui.window);
     return mediaQuery.textScaleFactor;
   }
 
   static double get navigationBarHeight {
-    MediaQueryData mediaQuery = MediaQueryData.fromWindow(ui.window);
+    MediaQueryData mediaQuery = MediaQueryData.fromView(ui.window);
     return mediaQuery.padding.top + kToolbarHeight;
   }
 
   static double get topSafeHeight {
-    MediaQueryData mediaQuery = MediaQueryData.fromWindow(ui.window);
+    MediaQueryData mediaQuery = MediaQueryData.fromView(ui.window);
     return mediaQuery.padding.top;
   }
 
   static double get bottomSafeHeight {
-    MediaQueryData mediaQuery = MediaQueryData.fromWindow(ui.window);
+    MediaQueryData mediaQuery = MediaQueryData.fromView(ui.window);
     return mediaQuery.padding.bottom;
   }
 

+ 106 - 106
pubspec.lock

@@ -13,26 +13,26 @@ packages:
     dependency: transitive
     description:
       name: async
-      sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0
+      sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "2.10.0"
+    version: "2.11.0"
   battery_plus:
     dependency: "direct main"
     description:
       name: battery_plus
-      sha256: e85c518029ae063666df860f57c41e5833d30a737316e7ef029cb3cfdc603e78
+      sha256: "0568fbba70697b8d0c34c1176faa2bc6d61c7fb211a2d2d64e493b91ff72d3f8"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "4.0.2"
+    version: "5.0.2"
   battery_plus_platform_interface:
     dependency: transitive
     description:
       name: battery_plus_platform_interface
-      sha256: "19fd8418a81aeb2dea8fb7026b1fdf56b6c6d319baf8d703fa0d13c1d5c7ba2f"
+      sha256: "942707f90e2f7481dcb178df02e22a9c6971b3562b848d6a1b8c7cff9f1a1fec"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "1.2.2"
+    version: "2.0.0"
   boolean_selector:
     dependency: transitive
     description:
@@ -45,26 +45,26 @@ packages:
     dependency: "direct main"
     description:
       name: cached_network_image
-      sha256: fd3d0dc1d451f9a252b32d95d3f0c3c487bc41a75eba2e6097cb0b9c71491b15
+      sha256: "28ea9690a8207179c319965c13cd8df184d5ee721ae2ce60f398ced1219cea1f"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "3.2.3"
+    version: "3.3.1"
   cached_network_image_platform_interface:
     dependency: transitive
     description:
       name: cached_network_image_platform_interface
-      sha256: bb2b8403b4ccdc60ef5f25c70dead1f3d32d24b9d6117cfc087f496b178594a7
+      sha256: "9e90e78ae72caa874a323d78fa6301b3fb8fa7ea76a8f96dc5b5bf79f283bf2f"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "2.0.0"
+    version: "4.0.0"
   cached_network_image_web:
     dependency: transitive
     description:
       name: cached_network_image_web
-      sha256: b8eb814ebfcb4dea049680f8c1ffb2df399e4d03bf7a352c775e26fa06e02fa0
+      sha256: "42a835caa27c220d1294311ac409a43361088625a4f23c820b006dd9bffb3316"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "1.0.2"
+    version: "1.1.1"
   carousel_slider:
     dependency: "direct main"
     description:
@@ -77,10 +77,10 @@ packages:
     dependency: transitive
     description:
       name: characters
-      sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c
+      sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "1.2.1"
+    version: "1.3.0"
   clock:
     dependency: transitive
     description:
@@ -93,10 +93,10 @@ packages:
     dependency: transitive
     description:
       name: collection
-      sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0
+      sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "1.17.0"
+    version: "1.17.2"
   crypto:
     dependency: transitive
     description:
@@ -105,14 +105,22 @@ packages:
       url: "https://pub.flutter-io.cn"
     source: hosted
     version: "3.0.3"
+  cupertino_icons:
+    dependency: "direct main"
+    description:
+      name: cupertino_icons
+      sha256: d57953e10f9f8327ce64a508a355f0b1ec902193f66288e8cb5070e7c47eeb2d
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "1.0.6"
   dbus:
     dependency: transitive
     description:
       name: dbus
-      sha256: "6f07cba3f7b3448d42d015bfd3d53fe12e5b36da2423f23838efc1d5fb31a263"
+      sha256: "365c771ac3b0e58845f39ec6deebc76e3276aa9922b0cc60840712094d9047ac"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "0.7.8"
+    version: "0.7.10"
   device_info:
     dependency: "direct main"
     description:
@@ -141,31 +149,23 @@ packages:
     dependency: transitive
     description:
       name: ffi
-      sha256: ed5337a5660c506388a9f012be0288fb38b49020ce2b45fe1f8b8323fe429f99
+      sha256: "7bf0adc28a23d395f19f3f1eb21dd7cfd1dd9f8e1c50051c069122e6853bc878"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "2.0.2"
+    version: "2.1.0"
   file:
     dependency: transitive
     description:
       name: file
-      sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d"
+      sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "6.1.4"
+    version: "7.0.0"
   flutter:
     dependency: "direct main"
     description: flutter
     source: sdk
     version: "0.0.0"
-  flutter_blurhash:
-    dependency: transitive
-    description:
-      name: flutter_blurhash
-      sha256: "05001537bd3fac7644fa6558b09ec8c0a3f2eba78c0765f88912882b1331a5c6"
-      url: "https://pub.flutter-io.cn"
-    source: hosted
-    version: "0.7.0"
   flutter_cache_manager:
     dependency: transitive
     description:
@@ -188,18 +188,18 @@ packages:
     dependency: "direct main"
     description:
       name: fluttertoast
-      sha256: "474f7d506230897a3cd28c965ec21c5328ae5605fc9c400cd330e9e9d6ac175c"
+      sha256: dfdde255317af381bfc1c486ed968d5a43a2ded9c931e87cbecd88767d6a71c1
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "8.2.2"
+    version: "8.2.4"
   http:
     dependency: transitive
     description:
       name: http
-      sha256: "5895291c13fa8a3bd82e76d5627f69e0d85ca6a30dcac95c4ea19a5d555879c2"
+      sha256: "759d1a329847dd0f39226c688d3e06a6b8679668e350e2891a6474f8b4bb8525"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "0.13.6"
+    version: "1.1.0"
   http_parser:
     dependency: transitive
     description:
@@ -212,42 +212,34 @@ packages:
     dependency: "direct main"
     description:
       name: intl
-      sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d"
+      sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "0.18.1"
-  js:
-    dependency: transitive
-    description:
-      name: js
-      sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7"
-      url: "https://pub.flutter-io.cn"
-    source: hosted
-    version: "0.6.5"
+    version: "0.19.0"
   matcher:
     dependency: transitive
     description:
       name: matcher
-      sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72"
+      sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "0.12.13"
+    version: "0.12.16"
   material_color_utilities:
     dependency: transitive
     description:
       name: material_color_utilities
-      sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724
+      sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "0.2.0"
+    version: "0.5.0"
   meta:
     dependency: transitive
     description:
       name: meta
-      sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42"
+      sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "1.8.0"
+    version: "1.9.1"
   mime:
     dependency: transitive
     description:
@@ -260,42 +252,42 @@ packages:
     dependency: transitive
     description:
       name: octo_image
-      sha256: "107f3ed1330006a3bea63615e81cf637433f5135a52466c7caa0e7152bca9143"
+      sha256: "45b40f99622f11901238e18d48f5f12ea36426d8eced9f4cbf58479c7aa2430d"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "1.0.2"
+    version: "2.0.0"
   path:
     dependency: transitive
     description:
       name: path
-      sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b
+      sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "1.8.2"
+    version: "1.8.3"
   path_provider:
     dependency: transitive
     description:
       name: path_provider
-      sha256: a1aa8aaa2542a6bc57e381f132af822420216c80d4781f7aa085ca3229208aaa
+      sha256: b27217933eeeba8ff24845c34003b003b2b22151de3c908d0e679e8fe1aa078b
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "2.1.1"
+    version: "2.1.2"
   path_provider_android:
     dependency: transitive
     description:
       name: path_provider_android
-      sha256: "6b8b19bd80da4f11ce91b2d1fb931f3006911477cec227cce23d3253d80df3f1"
+      sha256: "477184d672607c0a3bf68fbbf601805f92ef79c82b64b4d6eb318cbca4c48668"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "2.2.0"
+    version: "2.2.2"
   path_provider_foundation:
     dependency: transitive
     description:
       name: path_provider_foundation
-      sha256: "19314d595120f82aca0ba62787d58dde2cc6b5df7d2f0daf72489e38d1b57f2d"
+      sha256: "5a7999be66e000916500be4f15a3633ebceb8302719b47b9cc49ce924125350f"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "2.3.1"
+    version: "2.3.2"
   path_provider_linux:
     dependency: transitive
     description:
@@ -308,10 +300,10 @@ packages:
     dependency: transitive
     description:
       name: path_provider_platform_interface
-      sha256: "94b1e0dd80970c1ce43d5d4e050a9918fce4f4a775e6142424c30a29a363265c"
+      sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "2.1.1"
+    version: "2.1.2"
   path_provider_windows:
     dependency: transitive
     description:
@@ -324,26 +316,26 @@ packages:
     dependency: transitive
     description:
       name: petitparser
-      sha256: "49392a45ced973e8d94a85fdb21293fbb40ba805fc49f2965101ae748a3683b4"
+      sha256: cb3798bef7fc021ac45b308f4b51208a152792445cce0448c9a4ba5879dd8750
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "5.1.0"
+    version: "5.4.0"
   platform:
     dependency: transitive
     description:
       name: platform
-      sha256: "0a279f0707af40c890e80b1e9df8bb761694c074ba7e1d4ab1bc4b728e200b59"
+      sha256: "12220bb4b65720483f8fa9450b4332347737cf8213dd2840d8b2c823e47243ec"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "3.1.3"
+    version: "3.1.4"
   plugin_platform_interface:
     dependency: transitive
     description:
       name: plugin_platform_interface
-      sha256: da3fdfeccc4d4ff2da8f8c556704c08f912542c5fb3cf2233ed75372384a034d
+      sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "2.1.6"
+    version: "2.1.8"
   rxdart:
     dependency: transitive
     description:
@@ -364,10 +356,10 @@ packages:
     dependency: "direct main"
     description:
       name: shared_preferences
-      sha256: b7f41bad7e521d205998772545de63ff4e6c97714775902c199353f8bf1511ac
+      sha256: "81429e4481e1ccfb51ede496e916348668fd0921627779233bd24cc3ff6abd02"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "2.2.1"
+    version: "2.2.2"
   shared_preferences_android:
     dependency: transitive
     description:
@@ -380,26 +372,26 @@ packages:
     dependency: transitive
     description:
       name: shared_preferences_foundation
-      sha256: "7bf53a9f2d007329ee6f3df7268fd498f8373602f943c975598bbb34649b62a7"
+      sha256: "7708d83064f38060c7b39db12aefe449cb8cdc031d6062280087bc4cdb988f5c"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "2.3.4"
+    version: "2.3.5"
   shared_preferences_linux:
     dependency: transitive
     description:
       name: shared_preferences_linux
-      sha256: c2eb5bf57a2fe9ad6988121609e47d3e07bb3bdca5b6f8444e4cf302428a128a
+      sha256: "9f2cbcf46d4270ea8be39fa156d86379077c8a5228d9dfdb1164ae0bb93f1faa"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "2.3.1"
+    version: "2.3.2"
   shared_preferences_platform_interface:
     dependency: transitive
     description:
       name: shared_preferences_platform_interface
-      sha256: d4ec5fc9ebb2f2e056c617112aa75dcf92fc2e4faaf2ae999caa297473f75d8a
+      sha256: "22e2ecac9419b4246d7c22bfbbda589e3acf5c0351137d87dd2939d984d37c3b"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "2.3.1"
+    version: "2.3.2"
   shared_preferences_web:
     dependency: transitive
     description:
@@ -412,10 +404,10 @@ packages:
     dependency: transitive
     description:
       name: shared_preferences_windows
-      sha256: f763a101313bd3be87edffe0560037500967de9c394a714cd598d945517f694f
+      sha256: "841ad54f3c8381c480d0c9b508b89a34036f512482c407e6df7a9c4aa2ef8f59"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "2.3.1"
+    version: "2.3.2"
   sky_engine:
     dependency: transitive
     description: flutter
@@ -425,10 +417,10 @@ packages:
     dependency: transitive
     description:
       name: source_span
-      sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250
+      sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "1.9.1"
+    version: "1.10.0"
   sprintf:
     dependency: transitive
     description:
@@ -441,18 +433,18 @@ packages:
     dependency: transitive
     description:
       name: sqflite
-      sha256: b4d6710e1200e96845747e37338ea8a819a12b51689a3bcf31eff0003b37a0b9
+      sha256: "591f1602816e9c31377d5f008c2d9ef7b8aca8941c3f89cc5fd9d84da0c38a9a"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "2.2.8+4"
+    version: "2.3.0"
   sqflite_common:
     dependency: transitive
     description:
       name: sqflite_common
-      sha256: "8f7603f3f8f126740bc55c4ca2d1027aab4b74a1267a3e31ce51fe40e3b65b8f"
+      sha256: bb4738f15b23352822f4c42a531677e5c6f522e079461fd240ead29d8d8a54a6
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "2.4.5+1"
+    version: "2.5.0+2"
   stack_trace:
     dependency: transitive
     description:
@@ -481,10 +473,10 @@ packages:
     dependency: transitive
     description:
       name: synchronized
-      sha256: "5fcbd27688af6082f5abd611af56ee575342c30e87541d0245f7ff99faa02c60"
+      sha256: "539ef412b170d65ecdafd780f924e5be3f60032a1128df156adad6c5b373d558"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "3.1.0"
+    version: "3.1.0+1"
   term_glyph:
     dependency: transitive
     description:
@@ -497,10 +489,10 @@ packages:
     dependency: transitive
     description:
       name: test_api
-      sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206
+      sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "0.4.16"
+    version: "0.6.0"
   typed_data:
     dependency: transitive
     description:
@@ -521,10 +513,10 @@ packages:
     dependency: transitive
     description:
       name: uuid
-      sha256: b715b8d3858b6fa9f68f87d20d98830283628014750c2b09b6f516c1da4af2a7
+      sha256: "22c94e5ad1e75f9934b766b53c742572ee2677c56bc871d850a57dad0f82127f"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "4.1.0"
+    version: "4.2.2"
   vector_math:
     dependency: transitive
     description:
@@ -533,62 +525,70 @@ packages:
       url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.1.4"
+  web:
+    dependency: transitive
+    description:
+      name: web
+      sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "0.1.4-beta"
   webview_flutter:
     dependency: "direct main"
     description:
       name: webview_flutter
-      sha256: c1ab9b81090705c6069197d9fdc1625e587b52b8d70cdde2339d177ad0dbb98e
+      sha256: "71e1bfaef41016c8d5954291df5e9f8c6172f1f6ff3af01b5656456ddb11f94c"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "4.4.1"
+    version: "4.4.4"
   webview_flutter_android:
     dependency: transitive
     description:
       name: webview_flutter_android
-      sha256: b0cd33dd7d3dd8e5f664e11a19e17ba12c352647269921a3b568406b001f1dff
+      sha256: "161af93c2abaf94ef2192bffb53a3658b2d721a3bf99b69aa1e47814ee18cc96"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "3.12.0"
+    version: "3.13.2"
   webview_flutter_platform_interface:
     dependency: transitive
     description:
       name: webview_flutter_platform_interface
-      sha256: "6d9213c65f1060116757a7c473247c60f3f7f332cac33dc417c9e362a9a13e4f"
+      sha256: d937581d6e558908d7ae3dc1989c4f87b786891ab47bb9df7de548a151779d8d
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "2.6.0"
+    version: "2.10.0"
   webview_flutter_wkwebview:
     dependency: transitive
     description:
       name: webview_flutter_wkwebview
-      sha256: "30b9af6bdd457b44c08748b9190d23208b5165357cc2eb57914fee1366c42974"
+      sha256: "4d062ad505390ecef1c4bfb6001cd857a51e00912cc9dfb66edb1886a9ebd80c"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "3.9.1"
+    version: "3.10.2"
   win32:
     dependency: transitive
     description:
       name: win32
-      sha256: "5a751eddf9db89b3e5f9d50c20ab8612296e4e8db69009788d6c8b060a84191c"
+      sha256: b0f37db61ba2f2e9b7a78a1caece0052564d1bc70668156cf3a29d676fe4e574
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "4.1.4"
+    version: "5.1.1"
   xdg_directories:
     dependency: transitive
     description:
       name: xdg_directories
-      sha256: "589ada45ba9e39405c198fe34eb0f607cddb2108527e658136120892beac46d2"
+      sha256: faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "1.0.3"
+    version: "1.0.4"
   xml:
     dependency: transitive
     description:
       name: xml
-      sha256: "979ee37d622dec6365e2efa4d906c37470995871fe9ae080d967e192d88286b5"
+      sha256: "5bc72e1e45e941d825fd7468b9b4cc3b9327942649aeb6fc5cdbf135f0a86e84"
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "6.2.2"
+    version: "6.3.0"
 sdks:
-  dart: ">=2.19.0 <3.0.0"
-  flutter: ">=3.7.0"
+  dart: ">=3.1.0 <4.0.0"
+  flutter: ">=3.10.0"

+ 3 - 3
pubspec.yaml

@@ -4,7 +4,7 @@ publish_to: 'none'
 version: 1.2.3+1
 
 environment:
-  sdk: '>=2.12.0 <3.0.0'
+  sdk: '>=2.19.2 <3.0.0'
 
 dependencies:
   flutter:
@@ -17,8 +17,8 @@ dependencies:
   webview_flutter: ^4.2.4
   share: ^2.0.4
   fluttertoast: ^8.2.2
-  battery_plus: ^4.0.2
-  intl: ^0.18.1
+  battery_plus: ^5.0.2
+  intl: ^0.19.0
   device_info: ^2.0.3
 
 dev_dependencies: