From 5cc994319c07864c7f0516c88153bace97560764 Mon Sep 17 00:00:00 2001 From: weilu Date: Tue, 6 Apr 2021 13:47:15 +0800 Subject: [PATCH 001/206] flutter 2.0.4 --- .github/ISSUE_TEMPLATE/deer-issue-template.md | 2 +- .github/workflows/flutter-drive.yml | 6 +++--- .github/workflows/flutter-web-deploy.yml | 2 +- README-EN.md | 2 +- README.md | 2 +- pubspec.yaml | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/deer-issue-template.md b/.github/ISSUE_TEMPLATE/deer-issue-template.md index 36c4fec64..a314f82c5 100644 --- a/.github/ISSUE_TEMPLATE/deer-issue-template.md +++ b/.github/ISSUE_TEMPLATE/deer-issue-template.md @@ -12,7 +12,7 @@ assignees: '' - [x] 电脑系统:如:`Windows 10` - [x] 设备型号:如:`小米MIX 2s` - [x] 设备系统版本:如 `Android 10` -- [x] Flutter 版本:如 `2.0.3` +- [x] Flutter 版本:如 `2.0.4` ### 具体问题描述 ### diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index b1efff756..606294fe5 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -46,7 +46,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v1 with: - flutter-version: '2.0.3' + flutter-version: '2.0.4' channel: 'stable' # or: 'dev' or 'beta' - name: "Run Flutter Driver tests" run: "flutter drive --target=test_driver/driver.dart" @@ -64,7 +64,7 @@ jobs: - uses: actions/checkout@v2 - uses: subosito/flutter-action@v1 with: - flutter-version: '2.0.3' + flutter-version: '2.0.4' channel: 'stable' # or: 'dev' or 'beta' - name: "Run Flutter Driver tests" # GitHub Action for installing, configuring and running Android Emulators (work only Mac OS) @@ -89,7 +89,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v1 with: - flutter-version: '2.0.3' + flutter-version: '2.0.4' channel: 'stable' - run: "flutter pub get" - name: "Run Flutter Accessibility Tests" diff --git a/.github/workflows/flutter-web-deploy.yml b/.github/workflows/flutter-web-deploy.yml index efb638759..d4bcf2bd6 100644 --- a/.github/workflows/flutter-web-deploy.yml +++ b/.github/workflows/flutter-web-deploy.yml @@ -14,7 +14,7 @@ jobs: - uses: actions/checkout@v2.3.1 - uses: subosito/flutter-action@v1 with: - flutter-version: '2.0.3' + flutter-version: '2.0.4' channel: 'stable' - name: "Web Build 🔧" run: | diff --git a/README-EN.md b/README-EN.md index 735a778bb..12e706bfe 100644 --- a/README-EN.md +++ b/README-EN.md @@ -59,7 +59,7 @@ Web:https://simplezhli.github.io/flutter_deer/ [![Build Status](https://github.com/simplezhli/flutter_deer/workflows/flutter_deer%20driver/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions?query=workflow%3A%22flutter_deer+driver%22+branch%3Amaster) - 1. Flutter version 2.0.3 + 1. Flutter version 2.0.4 2. Dart version 2.12.2 diff --git a/README.md b/README.md index 22d95ce82..c6295ac18 100644 --- a/README.md +++ b/README.md @@ -63,7 +63,7 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ [![Build Status](https://github.com/simplezhli/flutter_deer/workflows/flutter_deer%20driver/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions?query=workflow%3A%22flutter_deer+driver%22+branch%3Amaster) - 1. Flutter version 2.0.3 + 1. Flutter version 2.0.4 2. Dart version 2.12.2 diff --git a/pubspec.yaml b/pubspec.yaml index def8fdbdc..95a9fa3f1 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -37,7 +37,7 @@ dependencies: # 侧滑删除 https://github.com/letsar/flutter_slidable flutter_slidable: ^0.5.7 # WebView插件 https://github.com/flutter/plugins/tree/master/packages/webview_flutter - webview_flutter: 2.0.2 + webview_flutter: 2.0.3 # 处理键盘事件 https://github.com/diegoveloper/flutter_keyboard_actions keyboard_actions: ^3.4.0 # 列表悬浮头 https://github.com/fluttercommunity/flutter_sticky_headers From 79b56e2b0d3aadf1bea74671391db15abc1d7351 Mon Sep 17 00:00:00 2001 From: weilu Date: Thu, 8 Apr 2021 08:36:23 +0800 Subject: [PATCH 002/206] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=89=AB=E7=A0=81?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/CHANGELOG.md | 4 ++++ lib/goods/page/qr_code_scanner_page.dart | 5 +++-- lib/setting/widgets/update_dialog.dart | 15 +++++++++------ pubspec.yaml | 4 ++-- 4 files changed, 18 insertions(+), 10 deletions(-) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 22de15160..dcf4bfade 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -64,4 +64,8 @@ * 启动页适配深色模式。 * 更好的无障碍支持。 +## 1.0.7 + +* 优化商品列表 + diff --git a/lib/goods/page/qr_code_scanner_page.dart b/lib/goods/page/qr_code_scanner_page.dart index 205e01201..35478fb68 100644 --- a/lib/goods/page/qr_code_scanner_page.dart +++ b/lib/goods/page/qr_code_scanner_page.dart @@ -17,7 +17,6 @@ class QrCodeScannerPage extends StatefulWidget { class _QrCodeScannerPageState extends State { final GlobalKey qrKey = GlobalKey(debugLabel: 'QR'); - Barcode result; QRViewController controller; /// In order to get hot reload to work we need to pause the camera if the platform @@ -86,7 +85,9 @@ class _QrCodeScannerPageState extends State { void _onQRViewCreated(QRViewController controller) { this.controller = controller; controller.scannedDataStream.listen((scanData) { - NavigatorUtils.goBackWithParams(context, result.code); + /// 避免扫描结果多次回调 + controller?.dispose(); + NavigatorUtils.goBackWithParams(context, scanData.code); }); } diff --git a/lib/setting/widgets/update_dialog.dart b/lib/setting/widgets/update_dialog.dart index 29ce04938..370239479 100644 --- a/lib/setting/widgets/update_dialog.dart +++ b/lib/setting/widgets/update_dialog.dart @@ -77,11 +77,14 @@ class _UpdateDialogState extends State { Gaps.vGap10, const Text('1.又双叒修复了一大堆bug。\n\n2.祭天了多名程序猿。'), Gaps.vGap15, - if (_isDownload) LinearProgressIndicator( - backgroundColor: Colours.line, - valueColor: AlwaysStoppedAnimation(primaryColor), - value: _value, - ) else _buildButton(context), + if (_isDownload) + LinearProgressIndicator( + backgroundColor: Colours.line, + valueColor: AlwaysStoppedAnimation(primaryColor), + value: _value, + ) + else + _buildButton(context), ], ), ), @@ -154,7 +157,7 @@ class _UpdateDialogState extends State { final String path = DirectoryUtil.getStoragePath(fileName: 'deer', category: 'Download', format: 'apk'); final File file = File(path); /// 链接可能会失效 - await Dio().download('https://54a0bf2343ff38bdc347780545bd8c9e.dd.cdntips.com/imtt.dd.qq.com/16891/apk/E664A57DD3EA0540676EFC830BFDDE97.apk', + await Dio().download('http://imtt.dd.qq.com/16891/apk/FF9625F40FD26F015F4CDED37B6B66AE.apk', file.path, cancelToken: _cancelToken, onReceiveProgress: (int count, int total) { diff --git a/pubspec.yaml b/pubspec.yaml index 95a9fa3f1..73f329acb 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,7 +1,7 @@ name: flutter_deer description: Flutter Deer -version: 1.1.6+16 +version: 1.1.7+17 author: 唯鹿 homepage: https://weilu.blog.csdn.net/ @@ -37,7 +37,7 @@ dependencies: # 侧滑删除 https://github.com/letsar/flutter_slidable flutter_slidable: ^0.5.7 # WebView插件 https://github.com/flutter/plugins/tree/master/packages/webview_flutter - webview_flutter: 2.0.3 + webview_flutter: 2.0.4 # 处理键盘事件 https://github.com/diegoveloper/flutter_keyboard_actions keyboard_actions: ^3.4.0 # 列表悬浮头 https://github.com/fluttercommunity/flutter_sticky_headers From 41733c202593d750e2d7946bc43d98cffed23be4 Mon Sep 17 00:00:00 2001 From: weilu Date: Mon, 12 Apr 2021 08:23:24 +0800 Subject: [PATCH 003/206] =?UTF-8?q?PopupWindow=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README-EN.md | 2 +- README.md | 2 +- lib/goods/page/goods_page.dart | 84 ++----------------- lib/goods/page/goods_size_page.dart | 12 +-- lib/goods/widgets/goods_add_menu.dart | 111 ++++++++++++++++++++++++++ lib/shop/page/shop_setting_page.dart | 2 +- lib/widgets/popup_window.dart | 100 ++++++++++------------- 7 files changed, 164 insertions(+), 149 deletions(-) create mode 100644 lib/goods/widgets/goods_add_menu.dart diff --git a/README-EN.md b/README-EN.md index 12e706bfe..413f9cf1d 100644 --- a/README-EN.md +++ b/README-EN.md @@ -159,7 +159,7 @@ For details, please refer to the [pubspec.yaml](https://github.com/simplezhli/fl you may not use this file except in compliance with the License. You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 + https://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, diff --git a/README.md b/README.md index c6295ac18..767570d2d 100644 --- a/README.md +++ b/README.md @@ -191,7 +191,7 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ you may not use this file except in compliance with the License. You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 + https://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, diff --git a/lib/goods/page/goods_page.dart b/lib/goods/page/goods_page.dart index 89ad59185..4348d3715 100644 --- a/lib/goods/page/goods_page.dart +++ b/lib/goods/page/goods_page.dart @@ -1,7 +1,9 @@ import 'package:flutter/material.dart'; +import 'package:flutter_deer/goods/goods_router.dart'; import 'package:flutter_deer/goods/page/goods_list_page.dart'; import 'package:flutter_deer/goods/provider/goods_page_provider.dart'; +import 'package:flutter_deer/goods/widgets/goods_add_menu.dart'; import 'package:flutter_deer/goods/widgets/goods_sort_menu.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; @@ -11,8 +13,6 @@ import 'package:flutter_deer/widgets/load_image.dart'; import 'package:flutter_deer/widgets/popup_window.dart'; import 'package:provider/provider.dart'; -import '../goods_router.dart'; - /// design/4商品/index.html class GoodsPage extends StatefulWidget { @@ -166,22 +166,12 @@ class _GoodsPageState extends State with SingleTickerProviderStateMix void _showSortMenu() { // 获取点击控件的坐标 final RenderBox button = _buttonKey.currentContext.findRenderObject() as RenderBox; - final RenderBox overlay = Overlay.of(context).context.findRenderObject() as RenderBox; - // 获得控件左下方的坐标 - final Offset a = button.localToGlobal(Offset(0.0, button.size.height + 12.0), ancestor: overlay); - // 获得控件右下方的坐标 - final Offset b = button.localToGlobal(button.size.bottomLeft(const Offset(0, 12.0)), ancestor: overlay); - final RelativeRect position = RelativeRect.fromRect( - Rect.fromPoints(a, b), - Offset.zero & overlay.size, - ); final RenderBox body = _bodyKey.currentContext.findRenderObject() as RenderBox; showPopupWindow( context: context, - fullWidth: true, - position: position, - elevation: 0.0, + offset: const Offset(0.0, 12.0), + anchor: button, child: GoodsSortMenu( data: _sortList, height: body.size.height - button.size.height, @@ -198,71 +188,13 @@ class _GoodsPageState extends State with SingleTickerProviderStateMix /// design/4商品/index.html#artboard4 void _showAddMenu() { final RenderBox button = _addKey.currentContext.findRenderObject() as RenderBox; - final RenderBox overlay = Overlay.of(context).context.findRenderObject() as RenderBox; - final a = button.localToGlobal(Offset(button.size.width - 8.0, button.size.height - 12.0), ancestor: overlay); - final b = button.localToGlobal(button.size.bottomLeft(const Offset(0, - 12.0)), ancestor: overlay); - final RelativeRect position = RelativeRect.fromRect( - Rect.fromPoints(a, b), - Offset.zero & overlay.size, - ); - final Color backgroundColor = context.backgroundColor; - final Color _iconColor = ThemeUtils.getIconColor(context); + showPopupWindow( context: context, - fullWidth: false, isShowBg: true, - position: position, - elevation: 0.0, - child: Column( - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - Padding( - padding: const EdgeInsets.only(right: 12.0), - child: LoadAssetImage('goods/jt', width: 8.0, height: 4.0, - color: ThemeUtils.getDarkColor(context, Colours.dark_bg_color), - ), - ), - SizedBox( - width: 120.0, - height: 40.0, - child: TextButton.icon( - onPressed: () { - NavigatorUtils.push(context, '${GoodsRouter.goodsEditPage}?isAdd=true&isScan=true', replace: true); - }, - icon: LoadAssetImage('goods/scanning', width: 16.0, height: 16.0, color: _iconColor,), - label: const Text('扫码添加'), - style: TextButton.styleFrom( - primary: Theme.of(context).textTheme.bodyText2.color, - onSurface: Theme.of(context).textTheme.bodyText2.color.withOpacity(0.12), - backgroundColor: backgroundColor, - shape: const RoundedRectangleBorder( - borderRadius: BorderRadius.only(topLeft: Radius.circular(8.0), topRight: Radius.circular(8.0)), - ), - ), - ), - ), - Container(width: 120.0, height: 0.6, color: Colours.line), - SizedBox( - width: 120.0, - height: 40.0, - child: TextButton.icon( - onPressed: () { - NavigatorUtils.push(context, '${GoodsRouter.goodsEditPage}?isAdd=true', replace: true); - }, - icon: LoadAssetImage('goods/add2', width: 16.0, height: 16.0, color: _iconColor,), - label: const Text('添加商品'), - style: TextButton.styleFrom( - primary: Theme.of(context).textTheme.bodyText2.color, - onSurface: Theme.of(context).textTheme.bodyText2.color.withOpacity(0.12), - backgroundColor: backgroundColor, - shape: const RoundedRectangleBorder( - borderRadius: BorderRadius.only(bottomLeft: Radius.circular(8.0), bottomRight: Radius.circular(8.0)), - ), - ), - ), - ), - ], - ), + offset: Offset(button.size.width - 8.0, -12.0), + anchor: button, + child: const GoodsAddMenu(), ); } diff --git a/lib/goods/page/goods_size_page.dart b/lib/goods/page/goods_size_page.dart index 66812493d..26dea7db8 100644 --- a/lib/goods/page/goods_size_page.dart +++ b/lib/goods/page/goods_size_page.dart @@ -56,19 +56,11 @@ class _GoodsSizePageState extends State { /// design/4商品/index.html#artboard18 void _showHint() { final RenderBox hint = _hintKey.currentContext.findRenderObject() as RenderBox; - final RenderBox overlay = Overlay.of(context).context.findRenderObject() as RenderBox; - final a = hint.localToGlobal(Offset(50.0, hint.size.height + 150.0), ancestor: overlay); - final b = hint.localToGlobal(hint.size.bottomLeft(const Offset(50.0, 150.0)), ancestor: overlay); - final RelativeRect position = RelativeRect.fromRect( - Rect.fromPoints(a, b), - Offset.zero & overlay.size, - ); showPopupWindow( context: context, - fullWidth: false, isShowBg: true, - position: position, - elevation: 0.0, + offset: const Offset(50.0, 150.0), + anchor: hint, child: Semantics( label: '弹出引导页', hint: '向左滑动可删除列表,点击可关闭', diff --git a/lib/goods/widgets/goods_add_menu.dart b/lib/goods/widgets/goods_add_menu.dart new file mode 100644 index 000000000..b6a6d2722 --- /dev/null +++ b/lib/goods/widgets/goods_add_menu.dart @@ -0,0 +1,111 @@ + +import 'package:flutter_deer/routers/fluro_navigator.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_deer/res/resources.dart'; +import 'package:flutter_deer/util/theme_utils.dart'; +import 'package:flutter_deer/widgets/load_image.dart'; +import 'package:flutter_deer/goods/goods_router.dart'; + +class GoodsAddMenu extends StatefulWidget { + + const GoodsAddMenu({ + Key key, + }): super(key: key); + + @override + _GoodsAddMenuState createState() => _GoodsAddMenuState(); +} + +class _GoodsAddMenuState extends State with SingleTickerProviderStateMixin { + + AnimationController _controller; + Animation _scaleAnimation; + @override + void initState() { + super.initState(); + _controller = AnimationController( + duration: const Duration(milliseconds: 200), + vsync: this, + ); + + _scaleAnimation = Tween(begin: 0.0, end: 1.0).animate(_controller); + _controller.forward(); + } + + @override + void dispose() { + _controller.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final Color backgroundColor = context.backgroundColor; + final Color iconColor = ThemeUtils.getIconColor(context); + + final Widget body = Column( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + Padding( + padding: const EdgeInsets.only(right: 12.0), + child: LoadAssetImage('goods/jt', width: 8.0, height: 4.0, + color: ThemeUtils.getDarkColor(context, Colours.dark_bg_color), + ), + ), + SizedBox( + width: 120.0, + height: 40.0, + child: TextButton.icon( + onPressed: () { + NavigatorUtils.push(context, '${GoodsRouter.goodsEditPage}?isAdd=true&isScan=true', replace: true); + }, + icon: LoadAssetImage('goods/scanning', width: 16.0, height: 16.0, color: iconColor,), + label: const Text('扫码添加'), + style: TextButton.styleFrom( + primary: Theme.of(context).textTheme.bodyText2.color, + onSurface: Theme.of(context).textTheme.bodyText2.color.withOpacity(0.12), + backgroundColor: backgroundColor, + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.only(topLeft: Radius.circular(8.0), topRight: Radius.circular(8.0)), + ), + ), + ), + ), + Container(width: 120.0, height: 0.6, color: Colours.line), + SizedBox( + width: 120.0, + height: 40.0, + child: TextButton.icon( + onPressed: () { + NavigatorUtils.push(context, '${GoodsRouter.goodsEditPage}?isAdd=true', replace: true); + }, + icon: LoadAssetImage('goods/add2', width: 16.0, height: 16.0, color: iconColor,), + label: const Text('添加商品'), + style: TextButton.styleFrom( + primary: Theme.of(context).textTheme.bodyText2.color, + onSurface: Theme.of(context).textTheme.bodyText2.color.withOpacity(0.12), + backgroundColor: backgroundColor, + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.only(bottomLeft: Radius.circular(8.0), bottomRight: Radius.circular(8.0)), + ), + ), + ), + ), + ], + ); + + return AnimatedBuilder( + animation: _scaleAnimation, + builder: (_, child) { + return Transform.scale( + scale: _scaleAnimation.value, + alignment: Alignment.topRight, + child: child, + ); + }, + child: body, + ); + } + + +} diff --git a/lib/shop/page/shop_setting_page.dart b/lib/shop/page/shop_setting_page.dart index 44a5b827c..ba36c34d0 100644 --- a/lib/shop/page/shop_setting_page.dart +++ b/lib/shop/page/shop_setting_page.dart @@ -255,7 +255,7 @@ class _ShopSettingPageState extends State { } void _showSendTypeDialog() { - showElasticDialog ( + showElasticDialog( context: context, barrierDismissible: false, builder: (BuildContext context) { diff --git a/lib/widgets/popup_window.dart b/lib/widgets/popup_window.dart index 797caca5e..a63263fb6 100644 --- a/lib/widgets/popup_window.dart +++ b/lib/widgets/popup_window.dart @@ -4,22 +4,20 @@ import 'package:flutter/material.dart'; ///create by elileo on 2018/12/21 ///https://github.com/elileo1/flutter_travel_friends/blob/master/lib/widget/PopupWindow.dart /// -/// weilu update: 去除了IntrinsicWidth限制,添加了默认蒙版 -const Duration _kWindowDuration = Duration(milliseconds: 300); +/// weilu update: +/// 1.去除了IntrinsicWidth限制,添加了默认蒙版。 +/// 2.简化position计算。 +const Duration _kWindowDuration = Duration(milliseconds: 0); const double _kWindowCloseIntervalEnd = 2.0 / 3.0; -const double _kWindowMaxWidth = 240.0; -const double _kWindowMinWidth = 48.0; -const double _kWindowVerticalPadding = 0.0; const double _kWindowScreenPadding = 0.0; ///弹窗方法 Future showPopupWindow({ @required BuildContext context, - RelativeRect position, + @required RenderBox anchor, @required Widget child, - double elevation = 8.0, + Offset offset, String semanticLabel, - bool fullWidth, bool isShowBg = false, }) { assert(context != null); @@ -35,17 +33,30 @@ Future showPopupWindow({ case TargetPlatform.windows: label = semanticLabel ?? MaterialLocalizations.of(context)?.popupMenuLabel; } + final RenderBox overlay = Overlay.of(context).context.findRenderObject() as RenderBox; + // 默认位置锚点下方 + final Offset _offset = Offset(0, anchor.size.height); + + if (offset == null) { + offset = _offset; + } else { + offset = offset + _offset; + } + // 获得控件左下方的坐标 + final a = anchor.localToGlobal(offset, ancestor: overlay); + // 获得控件右下方的坐标 + final b = anchor.localToGlobal(anchor.size.bottomLeft(offset), ancestor: overlay); + final RelativeRect position = RelativeRect.fromRect( + Rect.fromPoints(a, b), + Offset.zero & overlay.size, + ); return Navigator.push(context, _PopupWindowRoute( position: position, child: child, - elevation: elevation, semanticLabel: label, - theme: Theme.of(context), - barrierLabel: - MaterialLocalizations.of(context).modalBarrierDismissLabel, - fullWidth: fullWidth, + barrierLabel: MaterialLocalizations.of(context).modalBarrierDismissLabel, isShowBg: isShowBg )); } @@ -56,20 +67,14 @@ class _PopupWindowRoute extends PopupRoute { RouteSettings settings, this.child, this.position, - this.elevation = 8.0, - this.theme, this.barrierLabel, this.semanticLabel, - this.fullWidth, this.isShowBg, }) : super(settings: settings); final Widget child; final RelativeRect position; - double elevation; - final ThemeData theme; final String semanticLabel; - final bool fullWidth; final bool isShowBg; @override @@ -95,14 +100,10 @@ class _PopupWindowRoute extends PopupRoute { @override Widget buildPage(BuildContext context, Animation animation, Animation secondaryAnimation) { - Widget win = _PopupWindow( + final Widget win = _PopupWindow( route: this, semanticLabel: semanticLabel, - fullWidth: fullWidth, ); - if (theme != null) { - win = Theme(data: theme, child: win); - } return MediaQuery.removePadding( context: context, @@ -122,7 +123,7 @@ class _PopupWindowRoute extends PopupRoute { color: isShowBg ? const Color(0x99000000) : null, child: CustomSingleChildLayout( delegate: _PopupWindowLayoutDelegate( - position, null, Directionality.of(context) + position, Directionality.of(context) ), child: win, ), @@ -141,12 +142,10 @@ class _PopupWindow extends StatelessWidget { Key key, this.route, this.semanticLabel, - this.fullWidth = false, }) : super(key: key); final _PopupWindowRoute route; final String semanticLabel; - final bool fullWidth; @override Widget build(BuildContext context) { @@ -158,15 +157,8 @@ class _PopupWindow extends StatelessWidget { final CurveTween width = CurveTween(curve: const Interval(0.0, unit)); final CurveTween height = CurveTween(curve: const Interval(0.0, unit * length)); - final Widget child = ConstrainedBox( - constraints: BoxConstraints( - minWidth: fullWidth ? double.infinity : _kWindowMinWidth, - maxWidth: fullWidth ? double.infinity : _kWindowMaxWidth, - ), - child: SingleChildScrollView( - padding: const EdgeInsets.symmetric(vertical: _kWindowVerticalPadding), - child: route.child, - ) + final Widget child = SingleChildScrollView( + child: route.child, ); return AnimatedBuilder( @@ -174,20 +166,16 @@ class _PopupWindow extends StatelessWidget { builder: (BuildContext context, Widget child) { return Opacity( opacity: opacity.evaluate(route.animation), - child: Material( - type: route.elevation == 0 ? MaterialType.transparency : MaterialType.card, - elevation: route.elevation, - child: Align( - alignment: AlignmentDirectional.topEnd, - widthFactor: width.evaluate(route.animation), - heightFactor: height.evaluate(route.animation), - child: Semantics( - scopesRoute: true, - namesRoute: true, - explicitChildNodes: true, - label: semanticLabel, - child: child, - ), + child: Align( + alignment: AlignmentDirectional.topEnd, + widthFactor: width.evaluate(route.animation), + heightFactor: height.evaluate(route.animation), + child: Semantics( + scopesRoute: true, + namesRoute: true, + explicitChildNodes: true, + label: semanticLabel, + child: child, ), ), ); @@ -200,10 +188,9 @@ class _PopupWindow extends StatelessWidget { ///自定义委托内容:子控件大小及其位置计算 class _PopupWindowLayoutDelegate extends SingleChildLayoutDelegate { _PopupWindowLayoutDelegate( - this.position, this.selectedItemOffset, this.textDirection); + this.position, this.textDirection); final RelativeRect position; - final double selectedItemOffset; final TextDirection textDirection; @override @@ -221,14 +208,7 @@ class _PopupWindowLayoutDelegate extends SingleChildLayoutDelegate { // getConstraintsForChild. // Find the ideal vertical position. - double y; - if (selectedItemOffset == null) { - y = position.top; - } else { - y = position.top + - (size.height - position.top - position.bottom) / 2.0 - - selectedItemOffset; - } + double y = position.top; // Find the ideal horizontal position. double x; From 9870f9334085fa0c98d9108a423fdd3cbf05edcb Mon Sep 17 00:00:00 2001 From: weilu Date: Tue, 13 Apr 2021 08:13:41 +0800 Subject: [PATCH 004/206] =?UTF-8?q?=E5=8E=BB=E9=99=A4=E7=BD=91=E9=A1=B5URL?= =?UTF-8?q?=E4=B8=AD=E7=9A=84=E2=80=9C#=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/flutter-web-deploy.yml | 2 +- README.md | 2 +- lib/home/splash_page.dart | 4 ++-- lib/login/widgets/my_text_field.dart | 13 ++++++++----- lib/main.dart | 5 +++++ pubspec.yaml | 8 +++++--- web/index.html | 9 +++++++++ 7 files changed, 31 insertions(+), 12 deletions(-) diff --git a/.github/workflows/flutter-web-deploy.yml b/.github/workflows/flutter-web-deploy.yml index d4bcf2bd6..4ac801c3a 100644 --- a/.github/workflows/flutter-web-deploy.yml +++ b/.github/workflows/flutter-web-deploy.yml @@ -5,7 +5,7 @@ name: flutter_deer web deploy on: push: paths: - - 'pubspec1.yaml' + - 'pubspec.yaml' jobs: web_build_and_deploy: diff --git a/README.md b/README.md index 767570d2d..d16e35f2e 100644 --- a/README.md +++ b/README.md @@ -173,7 +173,7 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ ## 已知存在问题: -- 2.0.0 已知存在问题(#68571 #73351 #73388) +- 2.0.0 已知存在问题(#68571 #73351 #73388 #79773 #79931) - ListView在没有设置分割线的情况下,个别Item之间存在大约1像素的间隔([像素对齐问题](https://github.com/flutter/flutter/issues/14288))。 diff --git a/lib/home/splash_page.dart b/lib/home/splash_page.dart index c28e768aa..06c652cd1 100644 --- a/lib/home/splash_page.dart +++ b/lib/home/splash_page.dart @@ -91,12 +91,12 @@ class _SplashPageState extends State { return Material( color: context.backgroundColor, child: _status == 0 ? - FractionallyAlignedSizedBox( + const FractionallyAlignedSizedBox( heightFactor: 0.3, widthFactor: 0.33, leftFactor: 0.33, bottomFactor: 0, - child: const LoadAssetImage('logo') + child: LoadAssetImage('logo') ) : Swiper( key: const Key('swiper'), diff --git a/lib/login/widgets/my_text_field.dart b/lib/login/widgets/my_text_field.dart index 28d8e75ec..6af3fa626 100644 --- a/lib/login/widgets/my_text_field.dart +++ b/lib/login/widgets/my_text_field.dart @@ -4,6 +4,7 @@ import 'dart:async'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:flutter_deer/util/device_utils.dart'; import 'package:flutter_gen/gen_l10n/deer_localizations.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/widgets/load_image.dart'; @@ -128,11 +129,13 @@ class _MyTextFieldState extends State { ), ); - /// 个别机型(华为、vivo)密码安全键盘不弹出问题,临时修复方法:https://github.com/flutter/flutter/issues/68571 (issues/61446) - textField = Listener( - onPointerDown: (e) => FocusScope.of(context).requestFocus(widget.focusNode), - child: textField, - ); + /// 个别Android机型(华为、vivo)的密码安全键盘不弹出问题,临时修复方法:https://github.com/flutter/flutter/issues/68571 (issues/61446) + if (Device.isAndroid) { + textField = Listener( + onPointerDown: (e) => FocusScope.of(context).requestFocus(widget.focusNode), + child: textField, + ); + } Widget clearButton; diff --git a/lib/main.dart b/lib/main.dart index 73dab9152..1163ac3f1 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -20,13 +20,18 @@ import 'package:provider/provider.dart'; import 'package:quick_actions/quick_actions.dart'; import 'package:sp_util/sp_util.dart'; import 'package:flutter_deer/demo/demo_page.dart'; +import 'package:url_strategy/url_strategy.dart'; Future main() async { // debugProfileBuildsEnabled = true; // debugPaintLayerBordersEnabled = true; // debugProfilePaintsEnabled = true; // debugRepaintRainbowEnabled = true; + + // 确保初始化完成 WidgetsFlutterBinding.ensureInitialized(); + // 去除URL中的“#”(hash),仅针对Web。默认为setHashUrlStrategy + setPathUrlStrategy(); /// sp初始化 await SpUtil.getInstance(); /// 异常处理 diff --git a/pubspec.yaml b/pubspec.yaml index 73f329acb..ed8d9b2dd 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -16,6 +16,8 @@ dependencies: sdk: flutter flutter_localizations: sdk: flutter + # 去除网页URL中的“#”(hash) https://flutter.cn/docs/development/ui/navigation/url-strategies + url_strategy: 0.2.0 # Localization https://github.com/dart-lang/intl intl: ^0.17.0 # Toast插件 https://github.com/OpenFlutter/flutter_oktoast @@ -35,7 +37,7 @@ dependencies: # 图片选择插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/image_picker image_picker: 0.7.4 # 侧滑删除 https://github.com/letsar/flutter_slidable - flutter_slidable: ^0.5.7 + flutter_slidable: ^0.6.0 # WebView插件 https://github.com/flutter/plugins/tree/master/packages/webview_flutter webview_flutter: 2.0.4 # 处理键盘事件 https://github.com/diegoveloper/flutter_keyboard_actions @@ -43,7 +45,7 @@ dependencies: # 列表悬浮头 https://github.com/fluttercommunity/flutter_sticky_headers sticky_headers: ^0.2.0 # 城市选择列表 https://github.com/flutterchina/azlistview - azlistview: ^1.1.1 + azlistview: ^2.0.0-nullsafety.0 # 手势识别 https://github.com/aleksanderwozniak/simple_gesture_detector # simple_gesture_detector: ^0.1.4 # 路由框架 https://github.com/theyakka/fluro @@ -61,7 +63,7 @@ dependencies: # 刮刮卡 https://github.com/vintage/scratcher scratcher: ^2.0.1 # 振动(支持Web) https://github.com/benjamindean/flutter_vibration - vibration: ^1.7.3 + vibration: ^1.7.4-nullsafety.0 # 获取当前设备信息 https://github.com/flutter/plugins/tree/master/packages/device_info device_info: 2.0.0 # 高德2D地图插件(支持Web) https://github.com/simplezhli/flutter_2d_amap diff --git a/web/index.html b/web/index.html index 8ede012e4..a3a736735 100644 --- a/web/index.html +++ b/web/index.html @@ -1,6 +1,15 @@ + + From fc1867ef7713f793d153347073dc612ee2e4c6d4 Mon Sep 17 00:00:00 2001 From: weilu Date: Wed, 14 Apr 2021 10:00:18 +0800 Subject: [PATCH 005/206] =?UTF-8?q?=E5=95=86=E5=93=81=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E8=BF=9B=E5=85=A5=E7=BC=96=E8=BE=91=E9=A1=B5=E6=97=B6=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0Hero=E5=8A=A8=E7=94=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/CHANGELOG.md | 1 + lib/goods/goods_router.dart | 5 +++- lib/goods/page/goods_edit_page.dart | 14 +++++++++-- lib/goods/page/goods_list_page.dart | 6 ++++- lib/goods/widgets/goods_item.dart | 11 +++++++-- lib/widgets/selected_image.dart | 38 +++++++++++++++++++---------- 6 files changed, 56 insertions(+), 19 deletions(-) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index dcf4bfade..65f18b287 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -4,6 +4,7 @@ * 深色模式适配导航栏,优化启动效果。 * 适配Android 11键盘弹出动画。 +* 商品列表进入编辑页时添加Hero动画。 ## 1.1.6 diff --git a/lib/goods/goods_router.dart b/lib/goods/goods_router.dart index eb9771ff1..8ca722e3d 100644 --- a/lib/goods/goods_router.dart +++ b/lib/goods/goods_router.dart @@ -1,4 +1,5 @@ +import 'package:common_utils/common_utils.dart'; import 'package:fluro/fluro.dart'; import 'package:flutter_deer/goods/page/qr_code_scanner_page.dart'; import 'package:flutter_deer/routers/i_router.dart'; @@ -25,7 +26,9 @@ class GoodsRouter implements IRouterProvider{ router.define(goodsEditPage, handler: Handler(handlerFunc: (_, Map> params) { final bool isAdd = params['isAdd']?.first == 'true'; final bool isScan = params['isScan']?.first == 'true'; - return GoodsEditPage(isAdd: isAdd, isScan: isScan,); + final String url = EncryptUtil.decodeBase64(params['url']?.first ?? ''); + final String heroTag = params['heroTag']?.first ?? 'heroTag'; + return GoodsEditPage(isAdd: isAdd, isScan: isScan, goodsImageUrl: url, heroTag: heroTag,); })); router.define(goodsSearchPage, handler: Handler(handlerFunc: (_, __) => const GoodsSearchPage())); router.define(goodsSizePage, handler: Handler(handlerFunc: (_, __) => const GoodsSizePage())); diff --git a/lib/goods/page/goods_edit_page.dart b/lib/goods/page/goods_edit_page.dart index 11a6db2b6..c52f655a2 100644 --- a/lib/goods/page/goods_edit_page.dart +++ b/lib/goods/page/goods_edit_page.dart @@ -20,10 +20,18 @@ import '../goods_router.dart'; /// design/4商品/index.html#artboard5 class GoodsEditPage extends StatefulWidget { - const GoodsEditPage({Key key, this.isAdd = true, this.isScan = false}) : super(key: key); + const GoodsEditPage({ + Key key, + this.isAdd = true, + this.isScan = false, + this.heroTag, + this.goodsImageUrl + }) : super(key: key); final bool isAdd; final bool isScan; + final String heroTag; + final String goodsImageUrl; @override _GoodsEditPageState createState() => _GoodsEditPageState(); @@ -73,8 +81,10 @@ class _GoodsEditPageState extends State { ), ), Gaps.vGap16, - const Center( + Center( child: SelectedImage( + heroTag: widget.heroTag, + url: widget.goodsImageUrl, size: 96.0, ), ), diff --git a/lib/goods/page/goods_list_page.dart b/lib/goods/page/goods_list_page.dart index f8c40f132..90b9c9ac7 100644 --- a/lib/goods/page/goods_list_page.dart +++ b/lib/goods/page/goods_list_page.dart @@ -1,5 +1,6 @@ +import 'package:common_utils/common_utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_deer/goods/models/goods_item_entity.dart'; import 'package:flutter_deer/goods/provider/goods_page_provider.dart'; @@ -108,8 +109,10 @@ class _GoodsListPageState extends State with AutomaticKeepAliveCl loadMore: _loadMore, hasMore: _page < _maxPage, itemBuilder: (_, index) { + final String heroTag = 'goodsImg${widget.index}-$index'; return GoodsItem( index: index, + heroTag: heroTag, selectIndex: _selectIndex, item: _list[index], animation: _animation, @@ -137,7 +140,8 @@ class _GoodsListPageState extends State with AutomaticKeepAliveCl setState(() { _selectIndex = -1; }); - NavigatorUtils.push(context, '${GoodsRouter.goodsEditPage}?isAdd=false'); + final String url = EncryptUtil.encodeBase64(_list[index].icon); + NavigatorUtils.push(context, '${GoodsRouter.goodsEditPage}?isAdd=false&url=$url&heroTag=$heroTag'); }, onTapOperation: () { Toast.show('下架'); diff --git a/lib/goods/widgets/goods_item.dart b/lib/goods/widgets/goods_item.dart index bc04a43bb..000dfa026 100644 --- a/lib/goods/widgets/goods_item.dart +++ b/lib/goods/widgets/goods_item.dart @@ -24,7 +24,8 @@ class GoodsItem extends StatelessWidget { @required this.onTapOperation, @required this.onTapDelete, @required this.onTapMenuClose, - @required this.animation + @required this.animation, + @required this.heroTag, }): super(key: key); final GoodsItemEntity item; @@ -36,13 +37,19 @@ class GoodsItem extends StatelessWidget { final VoidCallback onTapDelete; final VoidCallback onTapMenuClose; final Animation animation; + final String heroTag; @override Widget build(BuildContext context) { final Row child = Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ - ExcludeSemantics(child: LoadImage(item.icon, width: 72.0, height: 72.0)), + ExcludeSemantics( + child: Hero( + tag: heroTag, + child: LoadImage(item.icon, width: 72.0, height: 72.0), + ), + ), Gaps.hGap8, Expanded( child: Column( diff --git a/lib/widgets/selected_image.dart b/lib/widgets/selected_image.dart index 367985806..946106fbd 100644 --- a/lib/widgets/selected_image.dart +++ b/lib/widgets/selected_image.dart @@ -1,6 +1,7 @@ import 'dart:io'; +import 'package:common_utils/common_utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/util/device_utils.dart'; @@ -13,9 +14,13 @@ class SelectedImage extends StatefulWidget { const SelectedImage({ Key key, + this.url, + this.heroTag, this.size = 80.0, }): super(key: key); + final String url; + final String heroTag; final double size; @override @@ -57,25 +62,32 @@ class SelectedImageState extends State { ThemeUtils.isDark(context) ? Colours.dark_unselected_item_color : Colours.text_gray, BlendMode.srcIn ); + + Widget image = Container( + width: widget.size, + height: widget.size, + decoration: BoxDecoration( + // 图片圆角展示 + borderRadius: BorderRadius.circular(16.0), + image: DecorationImage( + image: _imageProvider ?? ImageUtils.getImageProvider(widget.url, holderImg: 'store/icon_zj'), + fit: BoxFit.cover, + colorFilter: _imageProvider == null && TextUtil.isEmpty(widget.url) ? _colorFilter : null + ), + ), + ); + + if (widget.heroTag != null && !Device.isWeb) { + image = Hero(tag: widget.heroTag, child: image); + } + return Semantics( label: '选择图片', hint: '跳转相册选择图片', child: InkWell( borderRadius: BorderRadius.circular(16.0), onTap: _getImage, - child: Container( - width: widget.size, - height: widget.size, - decoration: BoxDecoration( - // 图片圆角展示 - borderRadius: BorderRadius.circular(16.0), - image: DecorationImage( - image: _imageProvider ?? ImageUtils.getAssetImage('store/icon_zj'), - fit: BoxFit.cover, - colorFilter: _imageProvider == null ? _colorFilter : null - ), - ), - ), + child: image, ), ); } From 13029704f1ccf8cf94143a9c3cc2a14d658ed4b0 Mon Sep 17 00:00:00 2001 From: weilu Date: Fri, 16 Apr 2021 09:47:39 +0800 Subject: [PATCH 006/206] =?UTF-8?q?=E6=B7=BB=E5=8A=A0lottie=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E7=A4=BA=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README-EN.md | 3 +- README.md | 4 +- assets/lottie/bunny_new_mouth.json | 17135 ++++++++++++++++ docs/CHANGELOG.md | 1 + lib/demo/demo_page.dart | 9 +- lib/demo/lottie/bunny.dart | 132 + lib/demo/lottie/lottie_demo.dart | 232 + ..._page.dart => ripples_animation_page.dart} | 6 +- preview/lottie.gif | Bin 0 -> 1717012 bytes pubspec.yaml | 9 +- 10 files changed, 17522 insertions(+), 9 deletions(-) create mode 100644 assets/lottie/bunny_new_mouth.json create mode 100644 lib/demo/lottie/bunny.dart create mode 100644 lib/demo/lottie/lottie_demo.dart rename lib/demo/ripple/{home_page.dart => ripples_animation_page.dart} (94%) create mode 100644 preview/lottie.gif diff --git a/README-EN.md b/README-EN.md index 413f9cf1d..b5e15d1ba 100644 --- a/README-EN.md +++ b/README-EN.md @@ -19,7 +19,7 @@ The effect of some pages is as follows: | ![](./preview/Screenshot_13.png) | ![](./preview/Screenshot_14.png) | ![](./preview/Screenshot_15.png) | ![](./preview/Screenshot_17.png) | | ![](./preview/Screenshot_18.png) | ![](./preview/Screenshot_19.png) | ![](./preview/Screenshot_20.png) | ![](./preview/Screenshot_21.png) | | ![](./preview/Screenshot_22.jpg) | ![](./preview/Screenshot_23.jpg) | ![](./preview/Screenshot_24.jpg) | ![](./preview/Screenshot_25.jpg) | -| ![](./preview/Screenshot_26.jpg) | ![](./preview/Screenshot_27.jpg) | | | +| ![](./preview/Screenshot_26.jpg) | ![](./preview/Screenshot_27.jpg) | ![](./preview/lottie.gif) | | ## Content @@ -138,6 +138,7 @@ Web:https://simplezhli.github.io/flutter_deer/ | [qr_code_scanner](https://github.com/juliuscanute/qr_code_scanner) | **Scan code** | | [intl](https://github.com/dart-lang/intl) | **Localization** | | [vibration](https://github.com/benjamindean/flutter_vibration) | **Vibration** | +| [lottie](https://github.com/xvrh/lottie-flutter) | **lottie** | For details, please refer to the [pubspec.yaml](https://github.com/simplezhli/flutter_deer/blob/master/pubspec.yaml) file. diff --git a/README.md b/README.md index d16e35f2e..2b925b295 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ | ![](./preview/Screenshot_13.png) | ![](./preview/Screenshot_14.png) | ![](./preview/Screenshot_15.png) | ![](./preview/Screenshot_17.png) | | ![](./preview/Screenshot_18.png) | ![](./preview/Screenshot_19.png) | ![](./preview/Screenshot_20.png) | ![](./preview/Screenshot_21.png) | | ![](./preview/Screenshot_22.jpg) | ![](./preview/Screenshot_23.jpg) | ![](./preview/Screenshot_24.jpg) | ![](./preview/Screenshot_25.jpg) | -| ![](./preview/Screenshot_26.jpg) | ![](./preview/Screenshot_27.jpg) | | | +| ![](./preview/Screenshot_26.jpg) | ![](./preview/Screenshot_27.jpg) | ![](./preview/lottie.gif) | | **觉得还可以的话,来个Star、Fork支持一波!有问题欢迎提Issue。** @@ -49,6 +49,7 @@ * 自定义简易日历 * 曲线图及[饼状图](https://dartpad.cn/d06f8f737d6eb2d87978eb2d14b87864) * 模块化路由管理 +* 更多Demo(水波纹动画、刮刮卡、lottie) * 更多的细节优化 具体可以下载体验: @@ -146,6 +147,7 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ | [qr_code_scanner](https://github.com/juliuscanute/qr_code_scanner) | **扫码功能** | | [intl](https://github.com/dart-lang/intl) | **本地化** | | [vibration](https://github.com/benjamindean/flutter_vibration) | **振动** | +| [lottie](https://github.com/xvrh/lottie-flutter) | **动画效果** | 详细内容可以参看[pubspec.yaml](https://github.com/simplezhli/flutter_deer/blob/master/pubspec.yaml)文件 diff --git a/assets/lottie/bunny_new_mouth.json b/assets/lottie/bunny_new_mouth.json new file mode 100644 index 000000000..e2832274d --- /dev/null +++ b/assets/lottie/bunny_new_mouth.json @@ -0,0 +1,17135 @@ +{ + "assets": [], + "layers": [ + { + "ddd": 0, + "ind": 0, + "ty": 4, + "nm": "left_hand_mask", + "td": 1, + "ks": { + "o": { + "k": 100 + }, + "r": { + "k": 0 + }, + "p": { + "k": [ + 500, + 500, + 0 + ] + }, + "a": { + "k": [ + 476.25, + 476.25, + 0 + ] + }, + "s": { + "k": [ + 100, + 100, + 100 + ] + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ + 0, + 262.888 + ], + [ + 262.888, + 0 + ], + [ + 0, + -262.888 + ], + [ + -262.888, + 0 + ] + ], + "o": [ + [ + 0, + -262.888 + ], + [ + -262.888, + 0 + ], + [ + 0, + 262.888 + ], + [ + 262.888, + 0 + ] + ], + "v": [ + [ + 476, + 0 + ], + [ + 0, + -476 + ], + [ + -476, + 0 + ], + [ + 0, + 476 + ] + ], + "c": true + } + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group" + }, + { + "ty": "fl", + "fillEnabled": true, + "c": { + "k": [ + 0.62, + 0.79, + 0.81, + 1 + ] + }, + "o": { + "k": 100 + }, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill" + }, + { + "ty": "tr", + "p": { + "k": [ + 476.25, + 476.25 + ], + "ix": 2 + }, + "a": { + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 1", + "np": 2, + "mn": "ADBE Vector Group" + } + ], + "ip": 0, + "op": 78, + "st": 0, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 1, + "ty": 4, + "nm": "hand_left", + "tt": 1, + "ks": { + "o": { + "k": 100 + }, + "r": { + "k": 0 + }, + "p": { + "k": [ + { + "i": { + "x": 0.69, + "y": 1 + }, + "o": { + "x": 1, + "y": 0 + }, + "n": "0p69_1_1_0", + "t": 29, + "s": [ + 208.794, + 1161.368, + 0 + ], + "e": [ + 312.794, + 745.368, + 0 + ], + "to": [ + 17.3333339691162, + -69.3333358764648, + 0 + ], + "ti": [ + -17.3333339691162, + 69.3333358764648, + 0 + ] + }, + { + "i": { + "x": 0.21, + "y": 0.21 + }, + "o": { + "x": 1, + "y": 1 + }, + "n": "0p21_0p21_1_1", + "t": 39, + "s": [ + 312.794, + 745.368, + 0 + ], + "e": [ + 312.794, + 745.368, + 0 + ], + "to": [ + 0, + 0, + 0 + ], + "ti": [ + 0, + 0, + 0 + ] + }, + { + "i": { + "x": 0.21, + "y": 1 + }, + "o": { + "x": 0.13, + "y": 0 + }, + "n": "0p21_1_0p13_0", + "t": 44, + "s": [ + 312.794, + 745.368, + 0 + ], + "e": [ + 208.794, + 1161.368, + 0 + ], + "to": [ + -17.3333339691162, + 69.3333358764648, + 0 + ], + "ti": [ + 0, + 0, + 0 + ] + }, + { + "i": { + "x": 0.667, + "y": 1 + }, + "o": { + "x": 0.13, + "y": 0 + }, + "n": "0p667_1_0p13_0", + "t": 54, + "s": [ + 208.794, + 1161.368, + 0 + ], + "e": [ + 312.794, + 745.368, + 0 + ], + "to": [ + 0, + 0, + 0 + ], + "ti": [ + -17.3333339691162, + 69.3333358764648, + 0 + ] + }, + { + "i": { + "x": 0.69, + "y": 0.69 + }, + "o": { + "x": 0.333, + "y": 0.333 + }, + "n": "0p69_0p69_0p333_0p333", + "t": 59, + "s": [ + 312.794, + 745.368, + 0 + ], + "e": [ + 312.794, + 745.368, + 0 + ], + "to": [ + 0, + 0, + 0 + ], + "ti": [ + 0, + 0, + 0 + ] + }, + { + "i": { + "x": 0.69, + "y": 1 + }, + "o": { + "x": 0.86, + "y": 0 + }, + "n": "0p69_1_0p86_0", + "t": 67.904, + "s": [ + 312.794, + 745.368, + 0 + ], + "e": [ + 208.794, + 1161.368, + 0 + ], + "to": [ + -17.3333339691162, + 69.3333358764648, + 0 + ], + "ti": [ + 17.3333339691162, + -69.3333358764648, + 0 + ] + }, + { + "t": 76 + } + ] + }, + "a": { + "k": [ + 109.858, + 208.134, + 0 + ] + }, + "s": { + "k": [ + 100, + 100, + 100 + ] + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ + -0.087, + 0.362 + ], + [ + -0.849, + 3.519 + ], + [ + -1.155, + 4.776 + ], + [ + -0.76, + 3.148 + ], + [ + -1.315, + 5.442 + ], + [ + -1.023, + 4.221 + ], + [ + -1.171, + 4.85 + ], + [ + -0.84, + 3.481 + ], + [ + -1.157, + 4.774 + ], + [ + -0.926, + 3.814 + ], + [ + -1.17, + 4.85 + ], + [ + -0.839, + 3.482 + ], + [ + -1.158, + 4.775 + ], + [ + -0.922, + 3.814 + ], + [ + -1.154, + 4.776 + ], + [ + -1.023, + 4.22 + ], + [ + -1.17, + 4.85 + ], + [ + -0.839, + 3.481 + ], + [ + -1.158, + 4.774 + ], + [ + -0.924, + 3.814 + ], + [ + -1.171, + 4.85 + ], + [ + -0.839, + 3.481 + ], + [ + -1.156, + 4.775 + ], + [ + -0.758, + 3.149 + ], + [ + -1.37, + 5.821 + ], + [ + -0.54, + 5.338 + ], + [ + -0.42, + 1.913 + ], + [ + 0.047, + 0.178 + ], + [ + 0.021, + 1.028 + ], + [ + 0.052, + 0.414 + ], + [ + 0.518, + 2.7 + ], + [ + 1.959, + 4.408 + ], + [ + 1.197, + 2.003 + ], + [ + 2.498, + 2.793 + ], + [ + 2.407, + 2.031 + ], + [ + 3.596, + 2.031 + ], + [ + 3.788, + 1.248 + ], + [ + 4.518, + 0.388 + ], + [ + 2.353, + -0.169 + ], + [ + 2.464, + -0.317 + ], + [ + 2.752, + -0.768 + ], + [ + 4.156, + -2.244 + ], + [ + 3.729, + -3.237 + ], + [ + 1.854, + -2.234 + ], + [ + 2.259, + -4.752 + ], + [ + 0.72, + -2.134 + ], + [ + 0.626, + -2.636 + ], + [ + 1.193, + -4.923 + ], + [ + 1.681, + -7 + ], + [ + 1.637, + -6.696 + ], + [ + 1.23, + -5.228 + ], + [ + 1.408, + -5.811 + ], + [ + 1.766, + -7.293 + ], + [ + 1.244, + -5.147 + ], + [ + 1.426, + -5.886 + ], + [ + 1.767, + -7.253 + ], + [ + 0.872, + -3.591 + ], + [ + 1.171, + -4.85 + ], + [ + 0.831, + -3.443 + ], + [ + 1.184, + -4.886 + ], + [ + 0.907, + -3.739 + ], + [ + 1.332, + -5.517 + ], + [ + 0.838, + -3.481 + ], + [ + 1.315, + -5.442 + ], + [ + 0.686, + -2.797 + ], + [ + -40.643, + -16.932 + ] + ], + "o": [ + [ + 0.85, + -3.518 + ], + [ + 1.152, + -4.776 + ], + [ + 0.762, + -3.147 + ], + [ + 1.314, + -5.443 + ], + [ + 1.02, + -4.221 + ], + [ + 1.176, + -4.848 + ], + [ + 0.84, + -3.48 + ], + [ + 1.151, + -4.775 + ], + [ + 0.924, + -3.814 + ], + [ + 1.176, + -4.848 + ], + [ + 0.84, + -3.481 + ], + [ + 1.151, + -4.776 + ], + [ + 0.924, + -3.812 + ], + [ + 1.155, + -4.775 + ], + [ + 1.02, + -4.221 + ], + [ + 1.175, + -4.849 + ], + [ + 0.84, + -3.48 + ], + [ + 1.152, + -4.775 + ], + [ + 0.924, + -3.814 + ], + [ + 1.177, + -4.848 + ], + [ + 0.84, + -3.481 + ], + [ + 1.152, + -4.776 + ], + [ + 0.762, + -3.147 + ], + [ + 1.399, + -5.813 + ], + [ + 1.221, + -5.184 + ], + [ + 0.195, + -1.936 + ], + [ + 0.04, + -0.182 + ], + [ + -0.265, + -1.021 + ], + [ + -0.009, + -0.421 + ], + [ + -0.338, + -2.718 + ], + [ + -0.911, + -4.753 + ], + [ + -0.947, + -2.131 + ], + [ + -1.924, + -3.218 + ], + [ + -2.087, + -2.334 + ], + [ + -3.168, + -2.671 + ], + [ + -3.468, + -1.959 + ], + [ + -4.328, + -1.427 + ], + [ + -2.296, + -0.196 + ], + [ + -2.467, + 0.177 + ], + [ + -2.844, + 0.368 + ], + [ + -4.542, + 1.269 + ], + [ + -4.358, + 2.353 + ], + [ + -2.197, + 1.908 + ], + [ + -3.354, + 4.041 + ], + [ + -0.967, + 2.035 + ], + [ + -0.865, + 2.564 + ], + [ + -1.172, + 4.929 + ], + [ + -1.696, + 6.996 + ], + [ + -1.611, + 6.703 + ], + [ + -1.276, + 5.217 + ], + [ + -1.368, + 5.821 + ], + [ + -1.766, + 7.293 + ], + [ + -1.247, + 5.146 + ], + [ + -1.424, + 5.886 + ], + [ + -1.758, + 7.256 + ], + [ + -0.874, + 3.59 + ], + [ + -1.178, + 4.848 + ], + [ + -0.832, + 3.443 + ], + [ + -1.179, + 4.888 + ], + [ + -0.905, + 3.739 + ], + [ + -1.336, + 5.516 + ], + [ + -0.841, + 3.48 + ], + [ + -1.31, + 5.444 + ], + [ + -0.676, + 2.799 + ], + [ + 34.022, + 26.956 + ], + [ + 0.087, + -0.362 + ] + ], + "v": [ + [ + 17.125, + 196.379 + ], + [ + 19.69, + 185.829 + ], + [ + 23.133, + 171.498 + ], + [ + 25.45, + 162.064 + ], + [ + 29.37, + 145.732 + ], + [ + 32.463, + 133.076 + ], + [ + 35.968, + 118.525 + ], + [ + 38.499, + 108.085 + ], + [ + 41.944, + 93.755 + ], + [ + 44.748, + 82.322 + ], + [ + 48.253, + 67.771 + ], + [ + 50.784, + 57.331 + ], + [ + 54.229, + 43 + ], + [ + 57.032, + 31.568 + ], + [ + 60.466, + 17.234 + ], + [ + 63.557, + 4.579 + ], + [ + 67.062, + -9.973 + ], + [ + 69.591, + -20.413 + ], + [ + 73.04, + -34.742 + ], + [ + 75.841, + -46.176 + ], + [ + 79.347, + -60.727 + ], + [ + 81.876, + -71.167 + ], + [ + 85.324, + -85.497 + ], + [ + 87.637, + -94.933 + ], + [ + 91.803, + -112.38 + ], + [ + 95.063, + -128.023 + ], + [ + 95.547, + -133.832 + ], + [ + 95.546, + -134.402 + ], + [ + 95.415, + -137.487 + ], + [ + 95.409, + -138.749 + ], + [ + 94.28, + -146.888 + ], + [ + 89.919, + -160.601 + ], + [ + 86.662, + -166.785 + ], + [ + 80.106, + -175.871 + ], + [ + 73.416, + -182.468 + ], + [ + 63.265, + -189.504 + ], + [ + 52.348, + -194.232 + ], + [ + 39.068, + -197.004 + ], + [ + 32.109, + -197.297 + ], + [ + 24.709, + -196.721 + ], + [ + 16.32, + -195.009 + ], + [ + 3.285, + -189.717 + ], + [ + -8.791, + -181.263 + ], + [ + -14.825, + -174.988 + ], + [ + -23.31, + -161.822 + ], + [ + -25.88, + -155.575 + ], + [ + -28.075, + -147.761 + ], + [ + -31.685, + -132.998 + ], + [ + -36.743, + -112.002 + ], + [ + -41.57, + -91.892 + ], + [ + -45.367, + -76.234 + ], + [ + -49.575, + -58.795 + ], + [ + -54.878, + -36.917 + ], + [ + -58.609, + -21.478 + ], + [ + -62.883, + -3.82 + ], + [ + -68.164, + 17.945 + ], + [ + -70.814, + 28.708 + ], + [ + -74.32, + 43.259 + ], + [ + -76.828, + 53.586 + ], + [ + -80.358, + 68.25 + ], + [ + -83.1, + 79.462 + ], + [ + -87.092, + 96.012 + ], + [ + -89.624, + 106.451 + ], + [ + -93.542, + 122.784 + ], + [ + -95.593, + 131.176 + ], + [ + 16.864, + 197.466 + ] + ], + "c": true + } + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group" + }, + { + "ty": "fl", + "fillEnabled": true, + "c": { + "k": [ + 0.94, + 0.94, + 0.94, + 1 + ] + }, + "o": { + "k": 100 + }, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill" + }, + { + "ty": "tr", + "p": { + "k": [ + 108.871, + 212.877 + ], + "ix": 2 + }, + "a": { + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 1", + "np": 2, + "mn": "ADBE Vector Group" + }, + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ + -2.786, + 11.518 + ], + [ + -3.055, + 12.631 + ], + [ + -3.136, + 12.966 + ], + [ + -3.461, + 14.304 + ], + [ + -3.307, + 13.672 + ], + [ + -2.958, + 12.223 + ], + [ + -2.635, + 10.886 + ], + [ + -3.051, + 12.632 + ], + [ + -0.322, + 4.6 + ], + [ + -0.29, + 0.427 + ], + [ + -0.07, + 3.445 + ], + [ + 0.031, + 0.271 + ], + [ + -0.008, + 0.346 + ], + [ + 0.138, + 1.291 + ], + [ + 3.501, + 7.461 + ], + [ + 7.346, + 6.858 + ], + [ + 6.083, + 3.294 + ], + [ + 5.005, + 1.469 + ], + [ + 5.277, + 0.165 + ], + [ + 0.422, + 0.008 + ], + [ + 0.358, + 0.007 + ], + [ + 0.311, + 0.236 + ], + [ + 0, + 0 + ], + [ + 0.34, + -0.041 + ], + [ + 0.303, + 0.006 + ], + [ + 0.426, + -0.167 + ], + [ + 1.784, + -0.213 + ], + [ + 4.574, + -1.424 + ], + [ + 7.008, + -5.122 + ], + [ + 5.118, + -7.737 + ], + [ + 2.11, + -8.664 + ], + [ + 2.446, + -10.105 + ], + [ + 3.411, + -14.078 + ], + [ + 2.887, + -11.923 + ], + [ + 2.614, + -10.81 + ], + [ + 3.056, + -12.63 + ], + [ + 2.623, + -10.848 + ], + [ + 3.468, + -14.34 + ], + [ + 1.587, + -6.55 + ], + [ + -4.407, + -3.492 + ], + [ + -0.677, + 2.799 + ], + [ + -1.31, + 5.444 + ], + [ + -0.841, + 3.48 + ], + [ + -1.337, + 5.516 + ], + [ + -0.906, + 3.739 + ], + [ + -1.18, + 4.888 + ], + [ + -0.831, + 3.443 + ], + [ + -1.178, + 4.848 + ], + [ + -0.874, + 3.59 + ], + [ + -1.758, + 7.256 + ], + [ + -1.423, + 5.887 + ], + [ + -1.246, + 5.146 + ], + [ + -1.767, + 7.293 + ], + [ + -1.369, + 5.821 + ], + [ + -1.275, + 5.217 + ], + [ + -1.61, + 6.703 + ], + [ + -1.696, + 6.996 + ], + [ + -1.172, + 4.929 + ], + [ + -0.866, + 2.564 + ], + [ + -0.967, + 2.035 + ], + [ + -3.355, + 4.041 + ], + [ + -2.197, + 1.908 + ], + [ + -4.358, + 2.353 + ], + [ + -4.543, + 1.269 + ], + [ + -2.845, + 0.367 + ], + [ + -2.467, + 0.177 + ], + [ + -2.295, + -0.196 + ], + [ + -4.329, + -1.427 + ], + [ + -3.468, + -1.959 + ], + [ + -3.168, + -2.671 + ], + [ + -2.087, + -2.334 + ], + [ + -1.924, + -3.218 + ], + [ + -0.947, + -2.13 + ], + [ + -0.912, + -4.753 + ], + [ + -0.339, + -2.718 + ], + [ + -0.009, + -0.421 + ], + [ + -0.264, + -1.021 + ], + [ + 0.04, + -0.182 + ], + [ + 0.196, + -1.936 + ], + [ + 1.221, + -5.184 + ], + [ + 1.399, + -5.813 + ], + [ + 0.761, + -3.148 + ], + [ + 1.151, + -4.776 + ], + [ + 0.841, + -3.48 + ], + [ + 1.176, + -4.848 + ], + [ + 0.924, + -3.814 + ], + [ + 1.151, + -4.775 + ], + [ + 0.839, + -3.48 + ], + [ + 1.175, + -4.85 + ], + [ + 1.02, + -4.221 + ], + [ + 1.155, + -4.775 + ], + [ + 0.924, + -3.813 + ], + [ + 1.151, + -4.776 + ], + [ + 0.84, + -3.481 + ], + [ + 1.177, + -4.848 + ], + [ + 0.925, + -3.814 + ], + [ + 1.151, + -4.775 + ], + [ + 0.84, + -3.48 + ], + [ + 1.176, + -4.848 + ], + [ + 1.02, + -4.22 + ], + [ + 1.314, + -5.442 + ], + [ + 0.762, + -3.147 + ], + [ + 1.152, + -4.776 + ], + [ + 0.85, + -3.518 + ], + [ + 0.087, + -0.362 + ], + [ + -4.789, + -1.816 + ], + [ + 0, + 0 + ] + ], + "o": [ + [ + 3.055, + -12.632 + ], + [ + 3.136, + -12.966 + ], + [ + 3.461, + -14.304 + ], + [ + 3.309, + -13.672 + ], + [ + 2.957, + -12.222 + ], + [ + 2.635, + -10.884 + ], + [ + 3.058, + -12.631 + ], + [ + 1.077, + -4.46 + ], + [ + 0.214, + -0.44 + ], + [ + 0.07, + -3.445 + ], + [ + -0.207, + -0.25 + ], + [ + 0.007, + -0.346 + ], + [ + 0.042, + -1.299 + ], + [ + -0.88, + -8.221 + ], + [ + -4.248, + -9.053 + ], + [ + -5.069, + -4.733 + ], + [ + -4.591, + -2.489 + ], + [ + -5.034, + -1.476 + ], + [ + -0.422, + -0.009 + ], + [ + -0.358, + -0.008 + ], + [ + -0.336, + -0.055 + ], + [ + 0, + 0 + ], + [ + -0.323, + 0.224 + ], + [ + -0.303, + -0.007 + ], + [ + -0.433, + 0.031 + ], + [ + -1.791, + 0.153 + ], + [ + -4.754, + 0.569 + ], + [ + -8.293, + 2.582 + ], + [ + -7.495, + 5.478 + ], + [ + -4.922, + 7.439 + ], + [ + -2.461, + 10.1 + ], + [ + -3.408, + 14.078 + ], + [ + -2.888, + 11.924 + ], + [ + -2.617, + 10.811 + ], + [ + -3.054, + 12.63 + ], + [ + -2.625, + 10.847 + ], + [ + -3.467, + 14.34 + ], + [ + -1.584, + 6.55 + ], + [ + 4.278, + 3.642 + ], + [ + 0.686, + -2.797 + ], + [ + 1.315, + -5.442 + ], + [ + 0.837, + -3.481 + ], + [ + 1.333, + -5.517 + ], + [ + 0.906, + -3.739 + ], + [ + 1.183, + -4.886 + ], + [ + 0.831, + -3.443 + ], + [ + 1.172, + -4.85 + ], + [ + 0.872, + -3.591 + ], + [ + 1.766, + -7.254 + ], + [ + 1.426, + -5.886 + ], + [ + 1.245, + -5.146 + ], + [ + 1.766, + -7.293 + ], + [ + 1.407, + -5.811 + ], + [ + 1.229, + -5.228 + ], + [ + 1.637, + -6.696 + ], + [ + 1.682, + -7 + ], + [ + 1.194, + -4.923 + ], + [ + 0.627, + -2.636 + ], + [ + 0.72, + -2.134 + ], + [ + 2.259, + -4.752 + ], + [ + 1.854, + -2.234 + ], + [ + 3.728, + -3.237 + ], + [ + 4.156, + -2.244 + ], + [ + 2.752, + -0.768 + ], + [ + 2.464, + -0.317 + ], + [ + 2.353, + -0.169 + ], + [ + 4.518, + 0.388 + ], + [ + 3.787, + 1.248 + ], + [ + 3.597, + 2.031 + ], + [ + 2.408, + 2.031 + ], + [ + 2.498, + 2.793 + ], + [ + 1.198, + 2.003 + ], + [ + 1.96, + 4.409 + ], + [ + 0.517, + 2.7 + ], + [ + 0.051, + 0.414 + ], + [ + 0.022, + 1.028 + ], + [ + 0.047, + 0.178 + ], + [ + -0.421, + 1.913 + ], + [ + -0.54, + 5.337 + ], + [ + -1.37, + 5.82 + ], + [ + -0.757, + 3.149 + ], + [ + -1.157, + 4.775 + ], + [ + -0.839, + 3.48 + ], + [ + -1.17, + 4.851 + ], + [ + -0.925, + 3.814 + ], + [ + -1.158, + 4.774 + ], + [ + -0.84, + 3.481 + ], + [ + -1.171, + 4.85 + ], + [ + -1.023, + 4.22 + ], + [ + -1.153, + 4.776 + ], + [ + -0.922, + 3.814 + ], + [ + -1.157, + 4.775 + ], + [ + -0.839, + 3.481 + ], + [ + -1.171, + 4.85 + ], + [ + -0.925, + 3.814 + ], + [ + -1.157, + 4.774 + ], + [ + -0.839, + 3.481 + ], + [ + -1.171, + 4.85 + ], + [ + -1.023, + 4.221 + ], + [ + -1.316, + 5.443 + ], + [ + -0.761, + 3.149 + ], + [ + -1.155, + 4.775 + ], + [ + -0.848, + 3.519 + ], + [ + -0.088, + 0.362 + ], + [ + 4.714, + 1.964 + ], + [ + 0, + 0 + ], + [ + 2.789, + -11.518 + ] + ], + "v": [ + [ + 41.848, + 159.493 + ], + [ + 51.007, + 121.597 + ], + [ + 60.422, + 82.7 + ], + [ + 70.799, + 39.788 + ], + [ + 80.73, + -1.226 + ], + [ + 89.593, + -37.897 + ], + [ + 97.511, + -70.549 + ], + [ + 106.671, + -108.445 + ], + [ + 109.181, + -121.959 + ], + [ + 109.398, + -123.344 + ], + [ + 109.608, + -133.679 + ], + [ + 109.506, + -134.493 + ], + [ + 109.527, + -135.532 + ], + [ + 109.389, + -139.419 + ], + [ + 102.719, + -162.942 + ], + [ + 85.432, + -186.885 + ], + [ + 68.712, + -198.905 + ], + [ + 54.295, + -204.815 + ], + [ + 38.875, + -207.592 + ], + [ + 37.61, + -207.617 + ], + [ + 36.536, + -207.639 + ], + [ + 35.524, + -207.778 + ], + [ + 31.62, + -207.857 + ], + [ + 30.597, + -207.759 + ], + [ + 29.688, + -207.778 + ], + [ + 28.388, + -207.717 + ], + [ + 23.015, + -207.247 + ], + [ + 9.016, + -204.266 + ], + [ + -13.915, + -192.662 + ], + [ + -32.81, + -172.808 + ], + [ + -43.335, + -148.634 + ], + [ + -50.671, + -118.321 + ], + [ + -60.899, + -76.087 + ], + [ + -69.566, + -40.317 + ], + [ + -77.412, + -7.885 + ], + [ + -86.575, + 30.007 + ], + [ + -94.456, + 62.547 + ], + [ + -104.849, + 105.568 + ], + [ + -109.608, + 125.217 + ], + [ + -96.579, + 135.919 + ], + [ + -94.528, + 127.527 + ], + [ + -90.61, + 111.194 + ], + [ + -88.079, + 100.755 + ], + [ + -84.086, + 84.205 + ], + [ + -81.344, + 72.993 + ], + [ + -77.814, + 58.329 + ], + [ + -75.307, + 48.002 + ], + [ + -71.8, + 33.451 + ], + [ + -69.15, + 22.688 + ], + [ + -63.87, + 0.923 + ], + [ + -59.596, + -16.736 + ], + [ + -55.865, + -32.174 + ], + [ + -50.561, + -54.052 + ], + [ + -46.353, + -71.491 + ], + [ + -42.557, + -87.149 + ], + [ + -37.73, + -107.259 + ], + [ + -32.672, + -128.255 + ], + [ + -29.062, + -143.018 + ], + [ + -26.866, + -150.832 + ], + [ + -24.296, + -157.079 + ], + [ + -15.811, + -170.245 + ], + [ + -9.777, + -176.52 + ], + [ + 2.298, + -184.974 + ], + [ + 15.334, + -190.266 + ], + [ + 23.723, + -191.978 + ], + [ + 31.122, + -192.554 + ], + [ + 38.081, + -192.261 + ], + [ + 51.362, + -189.489 + ], + [ + 62.278, + -184.761 + ], + [ + 72.429, + -177.725 + ], + [ + 79.119, + -171.128 + ], + [ + 85.675, + -162.042 + ], + [ + 88.932, + -155.859 + ], + [ + 93.294, + -142.145 + ], + [ + 94.423, + -134.006 + ], + [ + 94.428, + -132.744 + ], + [ + 94.559, + -129.659 + ], + [ + 94.561, + -129.089 + ], + [ + 94.076, + -123.28 + ], + [ + 90.817, + -107.637 + ], + [ + 86.65, + -90.19 + ], + [ + 84.338, + -80.754 + ], + [ + 80.89, + -66.424 + ], + [ + 78.36, + -55.985 + ], + [ + 74.855, + -41.433 + ], + [ + 72.053, + -29.999 + ], + [ + 68.605, + -15.67 + ], + [ + 66.076, + -5.23 + ], + [ + 62.57, + 9.322 + ], + [ + 59.479, + 21.977 + ], + [ + 56.045, + 36.311 + ], + [ + 53.242, + 47.743 + ], + [ + 49.797, + 62.074 + ], + [ + 47.267, + 72.514 + ], + [ + 43.761, + 87.065 + ], + [ + 40.957, + 98.498 + ], + [ + 37.512, + 112.828 + ], + [ + 34.982, + 123.268 + ], + [ + 31.476, + 137.819 + ], + [ + 28.384, + 150.474 + ], + [ + 24.464, + 166.806 + ], + [ + 22.146, + 176.241 + ], + [ + 18.703, + 190.572 + ], + [ + 16.139, + 201.122 + ], + [ + 15.878, + 202.209 + ], + [ + 30.131, + 207.884 + ], + [ + 33.483, + 194.044 + ] + ], + "c": true + } + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group" + }, + { + "ty": "fl", + "fillEnabled": true, + "c": { + "k": [ + 1, + 0.74, + 0.75, + 1 + ] + }, + "o": { + "k": 100 + }, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill" + }, + { + "ty": "tr", + "p": { + "k": [ + 109.858, + 208.134 + ], + "ix": 2 + }, + "a": { + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 2", + "np": 2, + "mn": "ADBE Vector Group" + } + ], + "ip": 0, + "op": 78, + "st": 0, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 2, + "ty": 4, + "nm": "right_hand_mask", + "td": 1, + "ks": { + "o": { + "k": 100 + }, + "r": { + "k": 0 + }, + "p": { + "k": [ + 500, + 500, + 0 + ] + }, + "a": { + "k": [ + 476.25, + 476.25, + 0 + ] + }, + "s": { + "k": [ + 100, + 100, + 100 + ] + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ + 0, + 262.888 + ], + [ + 262.888, + 0 + ], + [ + 0, + -262.888 + ], + [ + -262.888, + 0 + ] + ], + "o": [ + [ + 0, + -262.888 + ], + [ + -262.888, + 0 + ], + [ + 0, + 262.888 + ], + [ + 262.888, + 0 + ] + ], + "v": [ + [ + 476, + 0 + ], + [ + 0, + -476 + ], + [ + -476, + 0 + ], + [ + 0, + 476 + ] + ], + "c": true + } + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group" + }, + { + "ty": "fl", + "fillEnabled": true, + "c": { + "k": [ + 0.62, + 0.79, + 0.81, + 1 + ] + }, + "o": { + "k": 100 + }, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill" + }, + { + "ty": "tr", + "p": { + "k": [ + 476.25, + 476.25 + ], + "ix": 2 + }, + "a": { + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 1", + "np": 2, + "mn": "ADBE Vector Group" + } + ], + "ip": 0, + "op": 78, + "st": 0, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 3, + "ty": 4, + "nm": "hand_right", + "tt": 1, + "ks": { + "o": { + "k": 100 + }, + "r": { + "k": 0 + }, + "p": { + "k": [ + { + "i": { + "x": 0.69, + "y": 1 + }, + "o": { + "x": 1, + "y": 0 + }, + "n": "0p69_1_1_0", + "t": 29, + "s": [ + 819.292, + 1149.194, + 0 + ], + "e": [ + 689.292, + 745.194, + 0 + ], + "to": [ + -21.6666660308838, + -67.3333358764648, + 0 + ], + "ti": [ + 21.6666660308838, + 67.3333358764648, + 0 + ] + }, + { + "i": { + "x": 0.21, + "y": 0.21 + }, + "o": { + "x": 1, + "y": 1 + }, + "n": "0p21_0p21_1_1", + "t": 39, + "s": [ + 689.292, + 745.194, + 0 + ], + "e": [ + 689.292, + 745.194, + 0 + ], + "to": [ + 0, + 0, + 0 + ], + "ti": [ + 0, + 0, + 0 + ] + }, + { + "i": { + "x": 0.21, + "y": 1 + }, + "o": { + "x": 0.13, + "y": 0 + }, + "n": "0p21_1_0p13_0", + "t": 44, + "s": [ + 689.292, + 745.194, + 0 + ], + "e": [ + 819.292, + 1149.194, + 0 + ], + "to": [ + 21.6666660308838, + 67.3333358764648, + 0 + ], + "ti": [ + 0, + 0, + 0 + ] + }, + { + "i": { + "x": 0.515, + "y": 1 + }, + "o": { + "x": 0.13, + "y": 0 + }, + "n": "0p515_1_0p13_0", + "t": 54, + "s": [ + 819.292, + 1149.194, + 0 + ], + "e": [ + 689.292, + 745.194, + 0 + ], + "to": [ + 0, + 0, + 0 + ], + "ti": [ + 13.3333330154419, + 40.3333320617676, + 0 + ] + }, + { + "i": { + "x": 0.69, + "y": 1 + }, + "o": { + "x": 0.95, + "y": 0 + }, + "n": "0p69_1_0p95_0", + "t": 59, + "s": [ + 689.292, + 745.194, + 0 + ], + "e": [ + 739.292, + 907.194, + 0 + ], + "to": [ + -13.3333330154419, + -40.3333320617676, + 0 + ], + "ti": [ + -21.6666660308838, + -67.3333358764648, + 0 + ] + }, + { + "i": { + "x": 0.69, + "y": 1 + }, + "o": { + "x": 0.86, + "y": 0 + }, + "n": "0p69_1_0p86_0", + "t": 67.904, + "s": [ + 739.292, + 907.194, + 0 + ], + "e": [ + 819.292, + 1149.194, + 0 + ], + "to": [ + 21.6666660308838, + 67.3333358764648, + 0 + ], + "ti": [ + -13.3333330154419, + -40.3333320617676, + 0 + ] + }, + { + "t": 76 + } + ] + }, + "a": { + "k": [ + 109.772, + 207.96, + 0 + ] + }, + "s": { + "k": [ + 100, + 100, + 100 + ] + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ + 0.622, + 2.577 + ], + [ + 1.31, + 5.443 + ], + [ + 0.841, + 3.48 + ], + [ + 1.336, + 5.515 + ], + [ + 0.906, + 3.739 + ], + [ + 1.18, + 4.887 + ], + [ + 0.831, + 3.443 + ], + [ + 1.178, + 4.847 + ], + [ + 0.874, + 3.59 + ], + [ + 1.758, + 7.255 + ], + [ + 1.423, + 5.887 + ], + [ + 1.246, + 5.145 + ], + [ + 1.766, + 7.293 + ], + [ + 1.369, + 5.822 + ], + [ + 1.276, + 5.217 + ], + [ + 1.611, + 6.703 + ], + [ + 1.695, + 6.996 + ], + [ + 1.172, + 4.929 + ], + [ + 0.865, + 2.564 + ], + [ + 0.966, + 2.035 + ], + [ + 3.356, + 4.041 + ], + [ + 2.197, + 1.907 + ], + [ + 4.358, + 2.353 + ], + [ + 4.542, + 1.269 + ], + [ + 2.845, + 0.367 + ], + [ + 2.467, + 0.177 + ], + [ + 2.296, + -0.196 + ], + [ + 4.328, + -1.426 + ], + [ + 3.468, + -1.959 + ], + [ + 3.168, + -2.671 + ], + [ + 2.087, + -2.334 + ], + [ + 1.924, + -3.218 + ], + [ + 0.947, + -2.131 + ], + [ + 0.911, + -4.753 + ], + [ + 0.338, + -2.718 + ], + [ + 0.009, + -0.421 + ], + [ + 0.265, + -1.02 + ], + [ + -0.041, + -0.182 + ], + [ + -0.197, + -1.935 + ], + [ + -1.22, + -5.185 + ], + [ + -1.399, + -5.813 + ], + [ + -0.762, + -3.148 + ], + [ + -1.152, + -4.777 + ], + [ + -0.84, + -3.48 + ], + [ + -1.176, + -4.849 + ], + [ + -0.924, + -3.814 + ], + [ + -1.151, + -4.776 + ], + [ + -0.84, + -3.48 + ], + [ + -1.175, + -4.85 + ], + [ + -1.02, + -4.221 + ], + [ + -1.155, + -4.775 + ], + [ + -0.923, + -3.813 + ], + [ + -1.151, + -4.776 + ], + [ + -0.841, + -3.48 + ], + [ + -1.176, + -4.849 + ], + [ + -0.924, + -3.814 + ], + [ + -1.15, + -4.776 + ], + [ + -0.841, + -3.48 + ], + [ + -1.176, + -4.849 + ], + [ + -1.021, + -4.22 + ], + [ + -1.315, + -5.442 + ], + [ + -0.762, + -3.148 + ], + [ + -1.152, + -4.776 + ], + [ + -0.851, + -3.518 + ], + [ + 0, + 0 + ], + [ + -33.986, + 27.051 + ] + ], + "o": [ + [ + -1.315, + -5.442 + ], + [ + -0.838, + -3.481 + ], + [ + -1.332, + -5.517 + ], + [ + -0.907, + -3.74 + ], + [ + -1.183, + -4.886 + ], + [ + -0.831, + -3.444 + ], + [ + -1.172, + -4.85 + ], + [ + -0.872, + -3.591 + ], + [ + -1.766, + -7.254 + ], + [ + -1.426, + -5.886 + ], + [ + -1.245, + -5.146 + ], + [ + -1.767, + -7.293 + ], + [ + -1.408, + -5.812 + ], + [ + -1.229, + -5.227 + ], + [ + -1.637, + -6.696 + ], + [ + -1.681, + -7 + ], + [ + -1.195, + -4.923 + ], + [ + -0.627, + -2.637 + ], + [ + -0.721, + -2.134 + ], + [ + -2.259, + -4.752 + ], + [ + -1.853, + -2.234 + ], + [ + -3.728, + -3.237 + ], + [ + -4.156, + -2.244 + ], + [ + -2.752, + -0.769 + ], + [ + -2.464, + -0.317 + ], + [ + -2.353, + -0.169 + ], + [ + -4.518, + 0.388 + ], + [ + -3.788, + 1.248 + ], + [ + -3.596, + 2.031 + ], + [ + -2.407, + 2.03 + ], + [ + -2.498, + 2.793 + ], + [ + -1.197, + 2.003 + ], + [ + -1.96, + 4.408 + ], + [ + -0.518, + 2.699 + ], + [ + -0.052, + 0.414 + ], + [ + -0.022, + 1.028 + ], + [ + -0.047, + 0.179 + ], + [ + 0.42, + 1.913 + ], + [ + 0.54, + 5.338 + ], + [ + 1.37, + 5.82 + ], + [ + 0.757, + 3.149 + ], + [ + 1.156, + 4.775 + ], + [ + 0.839, + 3.48 + ], + [ + 1.17, + 4.851 + ], + [ + 0.925, + 3.814 + ], + [ + 1.158, + 4.774 + ], + [ + 0.84, + 3.481 + ], + [ + 1.17, + 4.85 + ], + [ + 1.023, + 4.22 + ], + [ + 1.154, + 4.776 + ], + [ + 0.922, + 3.814 + ], + [ + 1.158, + 4.775 + ], + [ + 0.839, + 3.481 + ], + [ + 1.17, + 4.851 + ], + [ + 0.926, + 3.814 + ], + [ + 1.157, + 4.774 + ], + [ + 0.84, + 3.481 + ], + [ + 1.17, + 4.85 + ], + [ + 1.024, + 4.221 + ], + [ + 1.315, + 5.443 + ], + [ + 0.76, + 3.149 + ], + [ + 1.155, + 4.775 + ], + [ + 0.848, + 3.518 + ], + [ + 0, + 0 + ], + [ + 40.632, + -17.027 + ], + [ + -0.632, + -2.576 + ] + ], + "v": [ + [ + 93.624, + 122.973 + ], + [ + 89.706, + 106.64 + ], + [ + 87.174, + 96.201 + ], + [ + 83.182, + 79.651 + ], + [ + 80.438, + 68.439 + ], + [ + 76.909, + 53.775 + ], + [ + 74.401, + 43.448 + ], + [ + 70.895, + 28.897 + ], + [ + 68.245, + 18.134 + ], + [ + 62.964, + -3.631 + ], + [ + 58.69, + -21.29 + ], + [ + 54.961, + -36.728 + ], + [ + 49.656, + -58.606 + ], + [ + 45.448, + -76.046 + ], + [ + 41.651, + -91.703 + ], + [ + 36.825, + -111.813 + ], + [ + 31.768, + -132.809 + ], + [ + 28.156, + -147.572 + ], + [ + 25.962, + -155.386 + ], + [ + 23.391, + -161.633 + ], + [ + 14.906, + -174.799 + ], + [ + 8.872, + -181.074 + ], + [ + -3.203, + -189.528 + ], + [ + -16.238, + -194.82 + ], + [ + -24.628, + -196.532 + ], + [ + -32.027, + -197.108 + ], + [ + -38.987, + -196.815 + ], + [ + -52.266, + -194.044 + ], + [ + -63.183, + -189.315 + ], + [ + -73.334, + -182.279 + ], + [ + -80.024, + -175.682 + ], + [ + -86.581, + -166.596 + ], + [ + -89.837, + -160.413 + ], + [ + -94.198, + -146.699 + ], + [ + -95.328, + -138.56 + ], + [ + -95.333, + -137.298 + ], + [ + -95.464, + -134.214 + ], + [ + -95.466, + -133.643 + ], + [ + -94.98, + -127.835 + ], + [ + -91.722, + -112.191 + ], + [ + -87.555, + -94.744 + ], + [ + -85.242, + -85.308 + ], + [ + -81.794, + -70.978 + ], + [ + -79.266, + -60.539 + ], + [ + -75.76, + -45.987 + ], + [ + -72.958, + -34.553 + ], + [ + -69.51, + -20.224 + ], + [ + -66.98, + -9.784 + ], + [ + -63.475, + 4.768 + ], + [ + -60.384, + 17.423 + ], + [ + -56.951, + 31.757 + ], + [ + -54.147, + 43.189 + ], + [ + -50.703, + 57.52 + ], + [ + -48.172, + 67.959 + ], + [ + -44.667, + 82.511 + ], + [ + -41.862, + 93.944 + ], + [ + -38.417, + 108.274 + ], + [ + -35.886, + 118.714 + ], + [ + -32.381, + 133.265 + ], + [ + -29.289, + 145.92 + ], + [ + -25.368, + 162.252 + ], + [ + -23.052, + 171.687 + ], + [ + -19.609, + 186.018 + ], + [ + -17.044, + 196.568 + ], + [ + -16.873, + 197.277 + ], + [ + 95.511, + 130.699 + ] + ], + "c": true + } + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group" + }, + { + "ty": "fl", + "fillEnabled": true, + "c": { + "k": [ + 0.94, + 0.94, + 0.94, + 1 + ] + }, + "o": { + "k": 100 + }, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill" + }, + { + "ty": "tr", + "p": { + "k": [ + 110.763, + 212.689 + ], + "ix": 2 + }, + "a": { + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 1", + "np": 2, + "mn": "ADBE Vector Group" + }, + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ + 3.468, + 14.34 + ], + [ + 2.625, + 10.848 + ], + [ + 3.055, + 12.63 + ], + [ + 2.618, + 10.81 + ], + [ + 2.889, + 11.924 + ], + [ + 3.407, + 14.078 + ], + [ + 2.461, + 10.1 + ], + [ + 4.922, + 7.438 + ], + [ + 7.495, + 5.479 + ], + [ + 8.293, + 2.582 + ], + [ + 4.755, + 0.569 + ], + [ + 1.791, + 0.154 + ], + [ + 0.433, + 0.03 + ], + [ + 0.304, + -0.006 + ], + [ + 0.322, + 0.223 + ], + [ + 1.301, + -0.027 + ], + [ + 0.336, + -0.054 + ], + [ + 0.358, + -0.008 + ], + [ + 0.422, + -0.008 + ], + [ + 5.034, + -1.477 + ], + [ + 4.592, + -2.488 + ], + [ + 5.07, + -4.733 + ], + [ + 4.249, + -9.054 + ], + [ + 0.88, + -8.221 + ], + [ + -0.042, + -1.299 + ], + [ + -0.008, + -0.346 + ], + [ + 0.207, + -0.25 + ], + [ + -0.07, + -3.445 + ], + [ + -0.215, + -0.439 + ], + [ + -1.077, + -4.46 + ], + [ + -3.057, + -12.631 + ], + [ + -2.635, + -10.885 + ], + [ + -2.957, + -12.223 + ], + [ + -3.307, + -13.672 + ], + [ + -3.46, + -14.303 + ], + [ + -3.136, + -12.966 + ], + [ + -3.054, + -12.632 + ], + [ + -2.789, + -11.518 + ], + [ + -1.089, + -4.498 + ], + [ + -4.712, + 1.975 + ], + [ + 0, + 0 + ], + [ + 0.848, + 3.519 + ], + [ + 1.156, + 4.776 + ], + [ + 0.76, + 3.148 + ], + [ + 1.316, + 5.442 + ], + [ + 1.024, + 4.221 + ], + [ + 1.17, + 4.849 + ], + [ + 0.84, + 3.482 + ], + [ + 1.157, + 4.775 + ], + [ + 0.926, + 3.813 + ], + [ + 1.17, + 4.85 + ], + [ + 0.839, + 3.482 + ], + [ + 1.157, + 4.776 + ], + [ + 0.922, + 3.813 + ], + [ + 1.154, + 4.775 + ], + [ + 1.022, + 4.22 + ], + [ + 1.171, + 4.849 + ], + [ + 0.84, + 3.482 + ], + [ + 1.158, + 4.775 + ], + [ + 0.925, + 3.813 + ], + [ + 1.169, + 4.85 + ], + [ + 0.839, + 3.481 + ], + [ + 1.156, + 4.776 + ], + [ + 0.756, + 3.148 + ], + [ + 1.37, + 5.821 + ], + [ + 0.54, + 5.338 + ], + [ + 0.42, + 1.913 + ], + [ + -0.047, + 0.179 + ], + [ + -0.021, + 1.028 + ], + [ + -0.052, + 0.414 + ], + [ + -0.518, + 2.699 + ], + [ + -1.96, + 4.408 + ], + [ + -1.197, + 2.003 + ], + [ + -2.497, + 2.793 + ], + [ + -2.407, + 2.03 + ], + [ + -3.597, + 2.032 + ], + [ + -3.788, + 1.248 + ], + [ + -4.518, + 0.388 + ], + [ + -2.353, + -0.169 + ], + [ + -2.464, + -0.318 + ], + [ + -2.752, + -0.769 + ], + [ + -4.156, + -2.244 + ], + [ + -3.728, + -3.238 + ], + [ + -1.853, + -2.233 + ], + [ + -2.259, + -4.752 + ], + [ + -0.721, + -2.134 + ], + [ + -0.627, + -2.637 + ], + [ + -1.195, + -4.923 + ], + [ + -1.681, + -7 + ], + [ + -1.638, + -6.697 + ], + [ + -1.229, + -5.228 + ], + [ + -1.408, + -5.811 + ], + [ + -1.766, + -7.293 + ], + [ + -1.245, + -5.147 + ], + [ + -1.426, + -5.886 + ], + [ + -1.765, + -7.254 + ], + [ + -0.872, + -3.591 + ], + [ + -1.172, + -4.85 + ], + [ + -0.831, + -3.443 + ], + [ + -1.184, + -4.885 + ], + [ + -0.906, + -3.739 + ], + [ + -1.332, + -5.517 + ], + [ + -0.838, + -3.481 + ], + [ + -1.315, + -5.442 + ], + [ + -0.632, + -2.575 + ], + [ + -4.275, + 3.657 + ], + [ + 1.527, + 6.314 + ] + ], + "o": [ + [ + -2.623, + -10.848 + ], + [ + -3.056, + -12.63 + ], + [ + -2.614, + -10.81 + ], + [ + -2.886, + -11.924 + ], + [ + -3.41, + -14.078 + ], + [ + -2.446, + -10.105 + ], + [ + -2.11, + -8.664 + ], + [ + -5.118, + -7.738 + ], + [ + -7.008, + -5.122 + ], + [ + -4.575, + -1.424 + ], + [ + -1.784, + -0.213 + ], + [ + -0.427, + -0.167 + ], + [ + -0.302, + 0.006 + ], + [ + -0.34, + -0.041 + ], + [ + -1.302, + 0.026 + ], + [ + -0.312, + 0.235 + ], + [ + -0.359, + 0.007 + ], + [ + -0.422, + 0.009 + ], + [ + -5.276, + 0.165 + ], + [ + -5.005, + 1.468 + ], + [ + -6.083, + 3.295 + ], + [ + -7.344, + 6.859 + ], + [ + -3.501, + 7.461 + ], + [ + -0.137, + 1.291 + ], + [ + 0.007, + 0.347 + ], + [ + -0.031, + 0.271 + ], + [ + 0.07, + 3.446 + ], + [ + 0.291, + 0.427 + ], + [ + 0.322, + 4.601 + ], + [ + 3.051, + 12.633 + ], + [ + 2.635, + 10.886 + ], + [ + 2.959, + 12.222 + ], + [ + 3.308, + 13.671 + ], + [ + 3.461, + 14.304 + ], + [ + 3.137, + 12.966 + ], + [ + 3.056, + 12.632 + ], + [ + 2.786, + 11.518 + ], + [ + 1.088, + 4.497 + ], + [ + 4.787, + -1.826 + ], + [ + 0, + 0 + ], + [ + -0.85, + -3.517 + ], + [ + -1.152, + -4.776 + ], + [ + -0.761, + -3.147 + ], + [ + -1.314, + -5.443 + ], + [ + -1.02, + -4.221 + ], + [ + -1.175, + -4.848 + ], + [ + -0.84, + -3.481 + ], + [ + -1.15, + -4.775 + ], + [ + -0.924, + -3.813 + ], + [ + -1.176, + -4.849 + ], + [ + -0.84, + -3.481 + ], + [ + -1.15, + -4.776 + ], + [ + -0.924, + -3.812 + ], + [ + -1.154, + -4.776 + ], + [ + -1.02, + -4.222 + ], + [ + -1.176, + -4.849 + ], + [ + -0.84, + -3.481 + ], + [ + -1.151, + -4.775 + ], + [ + -0.924, + -3.813 + ], + [ + -1.175, + -4.849 + ], + [ + -0.841, + -3.481 + ], + [ + -1.152, + -4.776 + ], + [ + -0.762, + -3.147 + ], + [ + -1.4, + -5.814 + ], + [ + -1.221, + -5.184 + ], + [ + -0.197, + -1.936 + ], + [ + -0.041, + -0.181 + ], + [ + 0.265, + -1.021 + ], + [ + 0.009, + -0.421 + ], + [ + 0.338, + -2.718 + ], + [ + 0.911, + -4.753 + ], + [ + 0.948, + -2.131 + ], + [ + 1.924, + -3.218 + ], + [ + 2.088, + -2.334 + ], + [ + 3.168, + -2.671 + ], + [ + 3.467, + -1.959 + ], + [ + 4.328, + -1.427 + ], + [ + 2.296, + -0.196 + ], + [ + 2.468, + 0.177 + ], + [ + 2.845, + 0.367 + ], + [ + 4.542, + 1.268 + ], + [ + 4.358, + 2.353 + ], + [ + 2.198, + 1.907 + ], + [ + 3.356, + 4.041 + ], + [ + 0.967, + 2.035 + ], + [ + 0.865, + 2.565 + ], + [ + 1.172, + 4.928 + ], + [ + 1.695, + 6.996 + ], + [ + 1.611, + 6.703 + ], + [ + 1.275, + 5.216 + ], + [ + 1.37, + 5.821 + ], + [ + 1.766, + 7.293 + ], + [ + 1.246, + 5.146 + ], + [ + 1.422, + 5.886 + ], + [ + 1.758, + 7.256 + ], + [ + 0.874, + 3.589 + ], + [ + 1.177, + 4.848 + ], + [ + 0.831, + 3.443 + ], + [ + 1.18, + 4.888 + ], + [ + 0.905, + 3.74 + ], + [ + 1.336, + 5.516 + ], + [ + 0.841, + 3.48 + ], + [ + 1.31, + 5.444 + ], + [ + 0.622, + 2.578 + ], + [ + 4.404, + -3.506 + ], + [ + -1.53, + -6.314 + ], + [ + -3.468, + -14.339 + ] + ], + "v": [ + [ + 94.541, + 62.721 + ], + [ + 86.66, + 30.181 + ], + [ + 77.497, + -7.711 + ], + [ + 69.651, + -40.142 + ], + [ + 60.984, + -75.913 + ], + [ + 50.757, + -118.147 + ], + [ + 43.421, + -148.46 + ], + [ + 32.895, + -172.633 + ], + [ + 14, + -192.488 + ], + [ + -8.93, + -204.091 + ], + [ + -22.93, + -207.073 + ], + [ + -28.302, + -207.543 + ], + [ + -29.603, + -207.603 + ], + [ + -30.512, + -207.585 + ], + [ + -31.534, + -207.682 + ], + [ + -35.438, + -207.603 + ], + [ + -36.45, + -207.465 + ], + [ + -37.524, + -207.443 + ], + [ + -38.79, + -207.418 + ], + [ + -54.209, + -204.64 + ], + [ + -68.627, + -198.731 + ], + [ + -85.347, + -186.711 + ], + [ + -102.634, + -162.767 + ], + [ + -109.304, + -139.245 + ], + [ + -109.441, + -135.358 + ], + [ + -109.42, + -134.319 + ], + [ + -109.522, + -133.505 + ], + [ + -109.313, + -123.17 + ], + [ + -109.095, + -121.785 + ], + [ + -106.585, + -108.271 + ], + [ + -97.425, + -70.375 + ], + [ + -89.508, + -37.722 + ], + [ + -80.645, + -1.051 + ], + [ + -70.714, + 39.962 + ], + [ + -60.337, + 82.874 + ], + [ + -50.922, + 121.771 + ], + [ + -41.763, + 159.667 + ], + [ + -33.397, + 194.218 + ], + [ + -30.13, + 207.71 + ], + [ + -15.883, + 202.005 + ], + [ + -16.053, + 201.296 + ], + [ + -18.618, + 190.746 + ], + [ + -22.061, + 176.415 + ], + [ + -24.378, + 166.981 + ], + [ + -28.298, + 150.649 + ], + [ + -31.391, + 137.993 + ], + [ + -34.896, + 123.443 + ], + [ + -37.427, + 113.002 + ], + [ + -40.872, + 98.672 + ], + [ + -43.676, + 87.24 + ], + [ + -47.181, + 72.688 + ], + [ + -49.712, + 62.248 + ], + [ + -53.156, + 47.917 + ], + [ + -55.96, + 36.486 + ], + [ + -59.394, + 22.152 + ], + [ + -62.484, + 9.496 + ], + [ + -65.99, + -5.055 + ], + [ + -68.52, + -15.496 + ], + [ + -71.968, + -29.825 + ], + [ + -74.77, + -41.258 + ], + [ + -78.274, + -55.81 + ], + [ + -80.804, + -66.25 + ], + [ + -84.252, + -80.58 + ], + [ + -86.564, + -90.015 + ], + [ + -90.731, + -107.463 + ], + [ + -93.99, + -123.106 + ], + [ + -94.475, + -128.915 + ], + [ + -94.474, + -129.485 + ], + [ + -94.343, + -132.57 + ], + [ + -94.337, + -133.832 + ], + [ + -93.208, + -141.97 + ], + [ + -88.847, + -155.684 + ], + [ + -85.59, + -161.868 + ], + [ + -79.034, + -170.954 + ], + [ + -72.344, + -177.55 + ], + [ + -62.192, + -184.587 + ], + [ + -51.275, + -189.315 + ], + [ + -37.996, + -192.087 + ], + [ + -31.037, + -192.38 + ], + [ + -23.638, + -191.803 + ], + [ + -15.248, + -190.091 + ], + [ + -2.213, + -184.8 + ], + [ + 9.863, + -176.345 + ], + [ + 15.896, + -170.071 + ], + [ + 24.382, + -156.905 + ], + [ + 26.952, + -150.658 + ], + [ + 29.147, + -142.843 + ], + [ + 32.758, + -128.081 + ], + [ + 37.815, + -107.085 + ], + [ + 42.643, + -86.974 + ], + [ + 46.438, + -71.317 + ], + [ + 50.647, + -53.878 + ], + [ + 55.951, + -32 + ], + [ + 59.682, + -16.561 + ], + [ + 63.955, + 1.097 + ], + [ + 69.235, + 22.863 + ], + [ + 71.886, + 33.625 + ], + [ + 75.393, + 48.176 + ], + [ + 77.899, + 58.503 + ], + [ + 81.43, + 73.167 + ], + [ + 84.172, + 84.379 + ], + [ + 88.164, + 100.929 + ], + [ + 90.696, + 111.368 + ], + [ + 94.614, + 127.701 + ], + [ + 96.502, + 135.427 + ], + [ + 109.522, + 124.682 + ], + [ + 104.935, + 105.742 + ] + ], + "c": true + } + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group" + }, + { + "ty": "fl", + "fillEnabled": true, + "c": { + "k": [ + 1, + 0.74, + 0.75, + 1 + ] + }, + "o": { + "k": 100 + }, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill" + }, + { + "ty": "tr", + "p": { + "k": [ + 109.772, + 207.96 + ], + "ix": 2 + }, + "a": { + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 2", + "np": 2, + "mn": "ADBE Vector Group" + } + ], + "ip": 0, + "op": 78, + "st": 0, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 4, + "ty": 4, + "nm": "mouth_smile", + "ks": { + "o": { + "k": 100 + }, + "r": { + "k": 0 + }, + "p": { + "k": [ + 500.75, + 815.75, + 0 + ] + }, + "a": { + "k": [ + 0.5, + -0.61, + 0 + ] + }, + "s": { + "k": [ + 100, + 100, + 100 + ] + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": [ + { + "i": { + "x": 0, + "y": 1 + }, + "o": { + "x": 1, + "y": 0 + }, + "n": "0_1_1_0", + "t": 32, + "s": [ + { + "i": [ + [ + -0.081, + 0.416 + ], + [ + 0, + 0.614 + ], + [ + 0.017, + 0.114 + ], + [ + 4.432, + 1.114 + ], + [ + 0.455, + 0.099 + ], + [ + 0.63, + 0 + ], + [ + 0.118, + -0.012 + ], + [ + 1.098, + -0.552 + ], + [ + 5.005, + -1.792 + ], + [ + 17.596, + -1.761 + ], + [ + 5.449, + -0.216 + ], + [ + 10.022, + 0.979 + ], + [ + 5.427, + 0.928 + ], + [ + 9.789, + 3.142 + ], + [ + 6.284, + 3.051 + ], + [ + 0.79, + 0.255 + ], + [ + 0.915, + 0.206 + ], + [ + 0.63, + 0 + ], + [ + 0.098, + -0.016 + ], + [ + 1.538, + -3.764 + ], + [ + 0.246, + -0.951 + ], + [ + 0, + -0.58 + ], + [ + -0.022, + -0.149 + ], + [ + -2.832, + -1.687 + ], + [ + -1.661, + -0.753 + ], + [ + -10.509, + -2.813 + ], + [ + -8.427, + -1.306 + ], + [ + -5.769, + -0.425 + ], + [ + -5.447, + -0.289 + ], + [ + -0.241, + -0.027 + ], + [ + -3.43, + 0 + ], + [ + -0.312, + 0.015 + ], + [ + -4.293, + 0.255 + ], + [ + -5.555, + 0.778 + ], + [ + -6.003, + 1.316 + ], + [ + -9.441, + 3.427 + ], + [ + -5.316, + 2.752 + ], + [ + -0.737, + 3.161 + ] + ], + "o": [ + [ + 0, + -0.614 + ], + [ + -0.035, + -0.111 + ], + [ + -0.645, + -4.395 + ], + [ + -0.451, + -0.113 + ], + [ + -0.63, + 0 + ], + [ + -0.116, + 0.032 + ], + [ + -1.23, + 0.122 + ], + [ + -4.743, + 2.385 + ], + [ + -16.622, + 5.95 + ], + [ + -5.424, + 0.543 + ], + [ + -10.064, + 0.399 + ], + [ + -5.48, + -0.536 + ], + [ + -10.152, + -1.736 + ], + [ + -6.661, + -2.138 + ], + [ + -0.75, + -0.364 + ], + [ + -0.888, + -0.287 + ], + [ + -0.63, + 0 + ], + [ + -0.095, + 0.034 + ], + [ + -4.089, + 0.654 + ], + [ + -0.369, + 0.903 + ], + [ + 0, + 0.58 + ], + [ + 0.038, + 0.147 + ], + [ + 0.472, + 3.212 + ], + [ + 1.56, + 0.929 + ], + [ + 9.893, + 4.481 + ], + [ + 8.226, + 2.203 + ], + [ + 5.716, + 0.886 + ], + [ + 5.438, + 0.4 + ], + [ + 0.242, + 0.013 + ], + [ + 3.43, + 0 + ], + [ + 0.311, + -0.029 + ], + [ + 4.296, + -0.209 + ], + [ + 5.604, + -0.333 + ], + [ + 6.089, + -0.852 + ], + [ + 9.827, + -2.154 + ], + [ + 5.635, + -2.045 + ], + [ + 2.928, + -1.516 + ], + [ + 0.096, + -0.413 + ] + ], + "v": [ + [ + -0.25, + -37.45 + ], + [ + -0.25, + -39.292 + ], + [ + -0.352, + -39.627 + ], + [ + -8.441, + -48.41 + ], + [ + -9.805, + -48.71 + ], + [ + -11.695, + -48.71 + ], + [ + -12.043, + -48.617 + ], + [ + -15.549, + -47.635 + ], + [ + -30.201, + -41.435 + ], + [ + -81.575, + -30.008 + ], + [ + -97.904, + -28.937 + ], + [ + -128.04, + -29.897 + ], + [ + -144.399, + -32.098 + ], + [ + -174.316, + -39.388 + ], + [ + -193.782, + -47.058 + ], + [ + -196.066, + -48.073 + ], + [ + -198.805, + -48.71 + ], + [ + -200.695, + -48.71 + ], + [ + -200.982, + -48.612 + ], + [ + -209.494, + -42.035 + ], + [ + -210.25, + -39.19 + ], + [ + -210.25, + -37.45 + ], + [ + -210.139, + -37.008 + ], + [ + -205.218, + -29.585 + ], + [ + -200.329, + -27.133 + ], + [ + -169.658, + -16.368 + ], + [ + -144.675, + -11.119 + ], + [ + -127.458, + -9.034 + ], + [ + -111.119, + -8.149 + ], + [ + -110.395, + -8.07 + ], + [ + -100.105, + -8.07 + ], + [ + -99.172, + -8.154 + ], + [ + -86.283, + -8.786 + ], + [ + -69.554, + -10.561 + ], + [ + -51.415, + -13.81 + ], + [ + -22.49, + -22.107 + ], + [ + -5.996, + -29.157 + ], + [ + -0.494, + -36.201 + ] + ], + "c": true + } + ], + "e": [ + { + "i": [ + [ + -0.044, + 0.566 + ], + [ + 0, + 0.797 + ], + [ + 0.009, + 0.092 + ], + [ + 0.473, + 1.052 + ], + [ + 2.267, + 1.723 + ], + [ + 3.546, + 1.383 + ], + [ + 4.958, + 1.036 + ], + [ + 5.038, + 0.506 + ], + [ + 3.295, + 0.201 + ], + [ + 3.27, + 0.122 + ], + [ + 0.157, + 0.015 + ], + [ + 2.008, + 0 + ], + [ + 0.123, + -0.004 + ], + [ + 2.525, + -0.137 + ], + [ + 3.032, + -0.3 + ], + [ + 3.359, + -0.467 + ], + [ + 3.986, + -0.994 + ], + [ + 4.243, + -1.98 + ], + [ + 2.404, + -2.298 + ], + [ + 0.547, + -2.511 + ], + [ + 0.082, + -0.477 + ], + [ + 0, + -0.797 + ], + [ + -0.009, + -0.122 + ], + [ + -0.09, + -0.954 + ], + [ + -0.77, + -2.696 + ], + [ + -4.189, + -5.385 + ], + [ + -7.486, + -4.304 + ], + [ + -9.579, + -1.491 + ], + [ + -2.987, + -0.129 + ], + [ + -0.602, + -0.035 + ], + [ + -1.278, + 0 + ], + [ + -0.169, + 0.005 + ], + [ + -3.481, + 0.546 + ], + [ + -4.049, + 1.347 + ], + [ + -6.01, + 4.45 + ], + [ + -3.397, + 4.433 + ], + [ + -1.64, + 6.947 + ], + [ + -0.167, + 2.53 + ] + ], + "o": [ + [ + 0, + -0.797 + ], + [ + -0.023, + -0.091 + ], + [ + -0.106, + -1.121 + ], + [ + -1.087, + -2.417 + ], + [ + -2.906, + -2.208 + ], + [ + -4.636, + -1.808 + ], + [ + -4.922, + -1.029 + ], + [ + -3.281, + -0.33 + ], + [ + -3.263, + -0.199 + ], + [ + -0.158, + -0.006 + ], + [ + -2.008, + 0 + ], + [ + -0.123, + 0.014 + ], + [ + -2.53, + 0.082 + ], + [ + -3.048, + 0.165 + ], + [ + -3.381, + 0.335 + ], + [ + -4.103, + 0.571 + ], + [ + -4.648, + 1.159 + ], + [ + -3.171, + 1.48 + ], + [ + -1.997, + 1.909 + ], + [ + -0.103, + 0.473 + ], + [ + 0, + 0.797 + ], + [ + 0.02, + 0.121 + ], + [ + 0.072, + 0.955 + ], + [ + 0.261, + 2.763 + ], + [ + 1.783, + 6.242 + ], + [ + 4.941, + 6.352 + ], + [ + 8.015, + 4.608 + ], + [ + 2.94, + 0.458 + ], + [ + 0.602, + 0.026 + ], + [ + 1.278, + 0 + ], + [ + 0.169, + -0.017 + ], + [ + 3.538, + -0.113 + ], + [ + 4.291, + -0.673 + ], + [ + 7.471, + -2.485 + ], + [ + 4.723, + -3.497 + ], + [ + 4.574, + -5.97 + ], + [ + 0.587, + -2.486 + ], + [ + 0.037, + -0.566 + ] + ], + "v": [ + [ + -36.789, + -43.354 + ], + [ + -36.789, + -45.744 + ], + [ + -36.856, + -46.019 + ], + [ + -37.73, + -49.279 + ], + [ + -42.925, + -55.398 + ], + [ + -52.719, + -60.643 + ], + [ + -67.157, + -64.804 + ], + [ + -82.094, + -67.138 + ], + [ + -91.959, + -67.967 + ], + [ + -101.766, + -68.346 + ], + [ + -102.238, + -68.39 + ], + [ + -108.262, + -68.39 + ], + [ + -108.631, + -68.349 + ], + [ + -116.22, + -68.095 + ], + [ + -125.351, + -67.445 + ], + [ + -135.461, + -66.212 + ], + [ + -147.59, + -63.828 + ], + [ + -161, + -59.264 + ], + [ + -169.508, + -53.749 + ], + [ + -173.463, + -47.173 + ], + [ + -173.711, + -45.744 + ], + [ + -173.711, + -43.354 + ], + [ + -173.652, + -42.991 + ], + [ + -173.44, + -40.125 + ], + [ + -171.868, + -31.94 + ], + [ + -162.909, + -14.495 + ], + [ + -144.266, + 1.498 + ], + [ + -117.864, + 10.635 + ], + [ + -108.971, + 11.506 + ], + [ + -107.167, + 11.61 + ], + [ + -103.333, + 11.61 + ], + [ + -102.827, + 11.56 + ], + [ + -92.3, + 10.584 + ], + [ + -79.789, + 7.549 + ], + [ + -59.57, + -2.862 + ], + [ + -47.388, + -14.757 + ], + [ + -38.06, + -34.133 + ], + [ + -36.92, + -41.656 + ] + ], + "c": true + } + ] + }, + { + "i": { + "x": 0, + "y": 1 + }, + "o": { + "x": 0.333, + "y": 0 + }, + "n": "0_1_0p333_0", + "t": 37, + "s": [ + { + "i": [ + [ + -0.044, + 0.566 + ], + [ + 0, + 0.797 + ], + [ + 0.009, + 0.092 + ], + [ + 0.473, + 1.052 + ], + [ + 2.267, + 1.723 + ], + [ + 3.546, + 1.383 + ], + [ + 4.958, + 1.036 + ], + [ + 5.038, + 0.506 + ], + [ + 3.295, + 0.201 + ], + [ + 3.27, + 0.122 + ], + [ + 0.157, + 0.015 + ], + [ + 2.008, + 0 + ], + [ + 0.123, + -0.004 + ], + [ + 2.525, + -0.137 + ], + [ + 3.032, + -0.3 + ], + [ + 3.359, + -0.467 + ], + [ + 3.986, + -0.994 + ], + [ + 4.243, + -1.98 + ], + [ + 2.404, + -2.298 + ], + [ + 0.547, + -2.511 + ], + [ + 0.082, + -0.477 + ], + [ + 0, + -0.797 + ], + [ + -0.009, + -0.122 + ], + [ + -0.09, + -0.954 + ], + [ + -0.77, + -2.696 + ], + [ + -4.189, + -5.385 + ], + [ + -7.486, + -4.304 + ], + [ + -9.579, + -1.491 + ], + [ + -2.987, + -0.129 + ], + [ + -0.602, + -0.035 + ], + [ + -1.278, + 0 + ], + [ + -0.169, + 0.005 + ], + [ + -3.481, + 0.546 + ], + [ + -4.049, + 1.347 + ], + [ + -6.01, + 4.45 + ], + [ + -3.397, + 4.433 + ], + [ + -1.64, + 6.947 + ], + [ + -0.167, + 2.53 + ] + ], + "o": [ + [ + 0, + -0.797 + ], + [ + -0.023, + -0.091 + ], + [ + -0.106, + -1.121 + ], + [ + -1.087, + -2.417 + ], + [ + -2.906, + -2.208 + ], + [ + -4.636, + -1.808 + ], + [ + -4.922, + -1.029 + ], + [ + -3.281, + -0.33 + ], + [ + -3.263, + -0.199 + ], + [ + -0.158, + -0.006 + ], + [ + -2.008, + 0 + ], + [ + -0.123, + 0.014 + ], + [ + -2.53, + 0.082 + ], + [ + -3.048, + 0.165 + ], + [ + -3.381, + 0.335 + ], + [ + -4.103, + 0.571 + ], + [ + -4.648, + 1.159 + ], + [ + -3.171, + 1.48 + ], + [ + -1.997, + 1.909 + ], + [ + -0.103, + 0.473 + ], + [ + 0, + 0.797 + ], + [ + 0.02, + 0.121 + ], + [ + 0.072, + 0.955 + ], + [ + 0.261, + 2.763 + ], + [ + 1.783, + 6.242 + ], + [ + 4.941, + 6.352 + ], + [ + 8.015, + 4.608 + ], + [ + 2.94, + 0.458 + ], + [ + 0.602, + 0.026 + ], + [ + 1.278, + 0 + ], + [ + 0.169, + -0.017 + ], + [ + 3.538, + -0.113 + ], + [ + 4.291, + -0.673 + ], + [ + 7.471, + -2.485 + ], + [ + 4.723, + -3.497 + ], + [ + 4.574, + -5.97 + ], + [ + 0.587, + -2.486 + ], + [ + 0.037, + -0.566 + ] + ], + "v": [ + [ + -36.789, + -43.354 + ], + [ + -36.789, + -45.744 + ], + [ + -36.856, + -46.019 + ], + [ + -37.73, + -49.279 + ], + [ + -42.925, + -55.398 + ], + [ + -52.719, + -60.643 + ], + [ + -67.157, + -64.804 + ], + [ + -82.094, + -67.138 + ], + [ + -91.959, + -67.967 + ], + [ + -101.766, + -68.346 + ], + [ + -102.238, + -68.39 + ], + [ + -108.262, + -68.39 + ], + [ + -108.631, + -68.349 + ], + [ + -116.22, + -68.095 + ], + [ + -125.351, + -67.445 + ], + [ + -135.461, + -66.212 + ], + [ + -147.59, + -63.828 + ], + [ + -161, + -59.264 + ], + [ + -169.508, + -53.749 + ], + [ + -173.463, + -47.173 + ], + [ + -173.711, + -45.744 + ], + [ + -173.711, + -43.354 + ], + [ + -173.652, + -42.991 + ], + [ + -173.44, + -40.125 + ], + [ + -171.868, + -31.94 + ], + [ + -162.909, + -14.495 + ], + [ + -144.266, + 1.498 + ], + [ + -117.864, + 10.635 + ], + [ + -108.971, + 11.506 + ], + [ + -107.167, + 11.61 + ], + [ + -103.333, + 11.61 + ], + [ + -102.827, + 11.56 + ], + [ + -92.3, + 10.584 + ], + [ + -79.789, + 7.549 + ], + [ + -59.57, + -2.862 + ], + [ + -47.388, + -14.757 + ], + [ + -38.06, + -34.133 + ], + [ + -36.92, + -41.656 + ] + ], + "c": true + } + ], + "e": [ + { + "i": [ + [ + -0.044, + 0.566 + ], + [ + 0, + 0.797 + ], + [ + 0.009, + 0.092 + ], + [ + 0.473, + 1.052 + ], + [ + 2.267, + 1.723 + ], + [ + 3.546, + 1.383 + ], + [ + 4.958, + 1.036 + ], + [ + 5.038, + 0.506 + ], + [ + 3.295, + 0.201 + ], + [ + 3.27, + 0.122 + ], + [ + 0.157, + 0.015 + ], + [ + 2.008, + 0 + ], + [ + 0.123, + -0.004 + ], + [ + 2.525, + -0.137 + ], + [ + 3.032, + -0.3 + ], + [ + 3.359, + -0.467 + ], + [ + 3.986, + -0.994 + ], + [ + 4.243, + -1.98 + ], + [ + 2.404, + -2.298 + ], + [ + 0.547, + -2.511 + ], + [ + 0.082, + -0.477 + ], + [ + 0, + -0.797 + ], + [ + -0.009, + -0.122 + ], + [ + -0.09, + -0.954 + ], + [ + -0.77, + -2.696 + ], + [ + -4.189, + -5.385 + ], + [ + -7.486, + -4.304 + ], + [ + -9.579, + -1.491 + ], + [ + -2.987, + -0.129 + ], + [ + -0.602, + -0.035 + ], + [ + -1.278, + 0 + ], + [ + -0.169, + 0.005 + ], + [ + -3.481, + 0.546 + ], + [ + -4.049, + 1.347 + ], + [ + -6.01, + 4.45 + ], + [ + -3.397, + 4.433 + ], + [ + -1.64, + 6.947 + ], + [ + -0.167, + 2.53 + ] + ], + "o": [ + [ + 0, + -0.797 + ], + [ + -0.023, + -0.091 + ], + [ + -0.106, + -1.121 + ], + [ + -1.087, + -2.417 + ], + [ + -2.906, + -2.208 + ], + [ + -4.636, + -1.808 + ], + [ + -4.922, + -1.029 + ], + [ + -3.281, + -0.33 + ], + [ + -3.263, + -0.199 + ], + [ + -0.158, + -0.006 + ], + [ + -2.008, + 0 + ], + [ + -0.123, + 0.014 + ], + [ + -2.53, + 0.082 + ], + [ + -3.048, + 0.165 + ], + [ + -3.381, + 0.335 + ], + [ + -4.103, + 0.571 + ], + [ + -4.648, + 1.159 + ], + [ + -3.171, + 1.48 + ], + [ + -1.997, + 1.909 + ], + [ + -0.103, + 0.473 + ], + [ + 0, + 0.797 + ], + [ + 0.02, + 0.121 + ], + [ + 0.072, + 0.955 + ], + [ + 0.261, + 2.763 + ], + [ + 1.783, + 6.242 + ], + [ + 4.941, + 6.352 + ], + [ + 8.015, + 4.608 + ], + [ + 2.94, + 0.458 + ], + [ + 0.602, + 0.026 + ], + [ + 1.278, + 0 + ], + [ + 0.169, + -0.017 + ], + [ + 3.538, + -0.113 + ], + [ + 4.291, + -0.673 + ], + [ + 7.471, + -2.485 + ], + [ + 4.723, + -3.497 + ], + [ + 4.574, + -5.97 + ], + [ + 0.587, + -2.486 + ], + [ + 0.037, + -0.566 + ] + ], + "v": [ + [ + -36.789, + -43.354 + ], + [ + -36.789, + -45.744 + ], + [ + -36.856, + -46.019 + ], + [ + -37.73, + -49.279 + ], + [ + -42.925, + -55.398 + ], + [ + -52.719, + -60.643 + ], + [ + -67.157, + -64.804 + ], + [ + -82.094, + -67.138 + ], + [ + -91.959, + -67.967 + ], + [ + -101.766, + -68.346 + ], + [ + -102.238, + -68.39 + ], + [ + -108.262, + -68.39 + ], + [ + -108.631, + -68.349 + ], + [ + -116.22, + -68.095 + ], + [ + -125.351, + -67.445 + ], + [ + -135.461, + -66.212 + ], + [ + -147.59, + -63.828 + ], + [ + -161, + -59.264 + ], + [ + -169.508, + -53.749 + ], + [ + -173.463, + -47.173 + ], + [ + -173.711, + -45.744 + ], + [ + -173.711, + -43.354 + ], + [ + -173.652, + -42.991 + ], + [ + -173.44, + -40.125 + ], + [ + -171.868, + -31.94 + ], + [ + -162.909, + -14.495 + ], + [ + -144.266, + 1.498 + ], + [ + -117.864, + 10.635 + ], + [ + -108.971, + 11.506 + ], + [ + -107.167, + 11.61 + ], + [ + -103.333, + 11.61 + ], + [ + -102.827, + 11.56 + ], + [ + -92.3, + 10.584 + ], + [ + -79.789, + 7.549 + ], + [ + -59.57, + -2.862 + ], + [ + -47.388, + -14.757 + ], + [ + -38.06, + -34.133 + ], + [ + -36.92, + -41.656 + ] + ], + "c": true + } + ] + }, + { + "i": { + "x": 0.667, + "y": 1 + }, + "o": { + "x": 0.333, + "y": 0 + }, + "n": "0p667_1_0p333_0", + "t": 44, + "s": [ + { + "i": [ + [ + -0.044, + 0.566 + ], + [ + 0, + 0.797 + ], + [ + 0.009, + 0.092 + ], + [ + 0.473, + 1.052 + ], + [ + 2.267, + 1.723 + ], + [ + 3.546, + 1.383 + ], + [ + 4.958, + 1.036 + ], + [ + 5.038, + 0.506 + ], + [ + 3.295, + 0.201 + ], + [ + 3.27, + 0.122 + ], + [ + 0.157, + 0.015 + ], + [ + 2.008, + 0 + ], + [ + 0.123, + -0.004 + ], + [ + 2.525, + -0.137 + ], + [ + 3.032, + -0.3 + ], + [ + 3.359, + -0.467 + ], + [ + 3.986, + -0.994 + ], + [ + 4.243, + -1.98 + ], + [ + 2.404, + -2.298 + ], + [ + 0.547, + -2.511 + ], + [ + 0.082, + -0.477 + ], + [ + 0, + -0.797 + ], + [ + -0.009, + -0.122 + ], + [ + -0.09, + -0.954 + ], + [ + -0.77, + -2.696 + ], + [ + -4.189, + -5.385 + ], + [ + -7.486, + -4.304 + ], + [ + -9.579, + -1.491 + ], + [ + -2.987, + -0.129 + ], + [ + -0.602, + -0.035 + ], + [ + -1.278, + 0 + ], + [ + -0.169, + 0.005 + ], + [ + -3.481, + 0.546 + ], + [ + -4.049, + 1.347 + ], + [ + -6.01, + 4.45 + ], + [ + -3.397, + 4.433 + ], + [ + -1.64, + 6.947 + ], + [ + -0.167, + 2.53 + ] + ], + "o": [ + [ + 0, + -0.797 + ], + [ + -0.023, + -0.091 + ], + [ + -0.106, + -1.121 + ], + [ + -1.087, + -2.417 + ], + [ + -2.906, + -2.208 + ], + [ + -4.636, + -1.808 + ], + [ + -4.922, + -1.029 + ], + [ + -3.281, + -0.33 + ], + [ + -3.263, + -0.199 + ], + [ + -0.158, + -0.006 + ], + [ + -2.008, + 0 + ], + [ + -0.123, + 0.014 + ], + [ + -2.53, + 0.082 + ], + [ + -3.048, + 0.165 + ], + [ + -3.381, + 0.335 + ], + [ + -4.103, + 0.571 + ], + [ + -4.648, + 1.159 + ], + [ + -3.171, + 1.48 + ], + [ + -1.997, + 1.909 + ], + [ + -0.103, + 0.473 + ], + [ + 0, + 0.797 + ], + [ + 0.02, + 0.121 + ], + [ + 0.072, + 0.955 + ], + [ + 0.261, + 2.763 + ], + [ + 1.783, + 6.242 + ], + [ + 4.941, + 6.352 + ], + [ + 8.015, + 4.608 + ], + [ + 2.94, + 0.458 + ], + [ + 0.602, + 0.026 + ], + [ + 1.278, + 0 + ], + [ + 0.169, + -0.017 + ], + [ + 3.538, + -0.113 + ], + [ + 4.291, + -0.673 + ], + [ + 7.471, + -2.485 + ], + [ + 4.723, + -3.497 + ], + [ + 4.574, + -5.97 + ], + [ + 0.587, + -2.486 + ], + [ + 0.037, + -0.566 + ] + ], + "v": [ + [ + -36.789, + -43.354 + ], + [ + -36.789, + -45.744 + ], + [ + -36.856, + -46.019 + ], + [ + -37.73, + -49.279 + ], + [ + -42.925, + -55.398 + ], + [ + -52.719, + -60.643 + ], + [ + -67.157, + -64.804 + ], + [ + -82.094, + -67.138 + ], + [ + -91.959, + -67.967 + ], + [ + -101.766, + -68.346 + ], + [ + -102.238, + -68.39 + ], + [ + -108.262, + -68.39 + ], + [ + -108.631, + -68.349 + ], + [ + -116.22, + -68.095 + ], + [ + -125.351, + -67.445 + ], + [ + -135.461, + -66.212 + ], + [ + -147.59, + -63.828 + ], + [ + -161, + -59.264 + ], + [ + -169.508, + -53.749 + ], + [ + -173.463, + -47.173 + ], + [ + -173.711, + -45.744 + ], + [ + -173.711, + -43.354 + ], + [ + -173.652, + -42.991 + ], + [ + -173.44, + -40.125 + ], + [ + -171.868, + -31.94 + ], + [ + -162.909, + -14.495 + ], + [ + -144.266, + 1.498 + ], + [ + -117.864, + 10.635 + ], + [ + -108.971, + 11.506 + ], + [ + -107.167, + 11.61 + ], + [ + -103.333, + 11.61 + ], + [ + -102.827, + 11.56 + ], + [ + -92.3, + 10.584 + ], + [ + -79.789, + 7.549 + ], + [ + -59.57, + -2.862 + ], + [ + -47.388, + -14.757 + ], + [ + -38.06, + -34.133 + ], + [ + -36.92, + -41.656 + ] + ], + "c": true + } + ], + "e": [ + { + "i": [ + [ + -0.081, + 0.416 + ], + [ + 0, + 0.614 + ], + [ + 0.017, + 0.114 + ], + [ + 4.432, + 1.114 + ], + [ + 0.455, + 0.099 + ], + [ + 0.63, + 0 + ], + [ + 0.118, + -0.012 + ], + [ + 1.098, + -0.552 + ], + [ + 5.005, + -1.792 + ], + [ + 17.596, + -1.761 + ], + [ + 5.449, + -0.216 + ], + [ + 10.022, + 0.979 + ], + [ + 5.427, + 0.928 + ], + [ + 9.789, + 3.142 + ], + [ + 6.284, + 3.051 + ], + [ + 0.79, + 0.255 + ], + [ + 0.915, + 0.206 + ], + [ + 0.63, + 0 + ], + [ + 0.098, + -0.016 + ], + [ + 1.538, + -3.764 + ], + [ + 0.246, + -0.951 + ], + [ + 0, + -0.58 + ], + [ + -0.022, + -0.149 + ], + [ + -2.832, + -1.687 + ], + [ + -1.661, + -0.753 + ], + [ + -10.509, + -2.813 + ], + [ + -8.427, + -1.306 + ], + [ + -5.769, + -0.425 + ], + [ + -5.447, + -0.289 + ], + [ + -0.241, + -0.027 + ], + [ + -3.43, + 0 + ], + [ + -0.312, + 0.015 + ], + [ + -4.293, + 0.255 + ], + [ + -5.555, + 0.778 + ], + [ + -6.003, + 1.316 + ], + [ + -9.441, + 3.427 + ], + [ + -5.316, + 2.752 + ], + [ + -0.737, + 3.161 + ] + ], + "o": [ + [ + 0, + -0.614 + ], + [ + -0.035, + -0.111 + ], + [ + -0.645, + -4.395 + ], + [ + -0.451, + -0.113 + ], + [ + -0.63, + 0 + ], + [ + -0.116, + 0.032 + ], + [ + -1.23, + 0.122 + ], + [ + -4.743, + 2.385 + ], + [ + -16.622, + 5.95 + ], + [ + -5.424, + 0.543 + ], + [ + -10.064, + 0.399 + ], + [ + -5.48, + -0.536 + ], + [ + -10.152, + -1.736 + ], + [ + -6.661, + -2.138 + ], + [ + -0.75, + -0.364 + ], + [ + -0.888, + -0.287 + ], + [ + -0.63, + 0 + ], + [ + -0.095, + 0.034 + ], + [ + -4.089, + 0.654 + ], + [ + -0.369, + 0.903 + ], + [ + 0, + 0.58 + ], + [ + 0.038, + 0.147 + ], + [ + 0.472, + 3.212 + ], + [ + 1.56, + 0.929 + ], + [ + 9.893, + 4.481 + ], + [ + 8.226, + 2.203 + ], + [ + 5.716, + 0.886 + ], + [ + 5.438, + 0.4 + ], + [ + 0.242, + 0.013 + ], + [ + 3.43, + 0 + ], + [ + 0.311, + -0.029 + ], + [ + 4.296, + -0.209 + ], + [ + 5.604, + -0.333 + ], + [ + 6.089, + -0.852 + ], + [ + 9.827, + -2.154 + ], + [ + 5.635, + -2.045 + ], + [ + 2.928, + -1.516 + ], + [ + 0.096, + -0.413 + ] + ], + "v": [ + [ + -0.25, + -37.45 + ], + [ + -0.25, + -39.292 + ], + [ + -0.352, + -39.627 + ], + [ + -8.441, + -48.41 + ], + [ + -9.805, + -48.71 + ], + [ + -11.695, + -48.71 + ], + [ + -12.043, + -48.617 + ], + [ + -15.549, + -47.635 + ], + [ + -30.201, + -41.435 + ], + [ + -81.575, + -30.008 + ], + [ + -97.904, + -28.937 + ], + [ + -128.04, + -29.897 + ], + [ + -144.399, + -32.098 + ], + [ + -174.316, + -39.388 + ], + [ + -193.782, + -47.058 + ], + [ + -196.066, + -48.073 + ], + [ + -198.805, + -48.71 + ], + [ + -200.695, + -48.71 + ], + [ + -200.982, + -48.612 + ], + [ + -209.494, + -42.035 + ], + [ + -210.25, + -39.19 + ], + [ + -210.25, + -37.45 + ], + [ + -210.139, + -37.008 + ], + [ + -205.218, + -29.585 + ], + [ + -200.329, + -27.133 + ], + [ + -169.658, + -16.368 + ], + [ + -144.675, + -11.119 + ], + [ + -127.458, + -9.034 + ], + [ + -111.119, + -8.149 + ], + [ + -110.395, + -8.07 + ], + [ + -100.105, + -8.07 + ], + [ + -99.172, + -8.154 + ], + [ + -86.283, + -8.786 + ], + [ + -69.554, + -10.561 + ], + [ + -51.415, + -13.81 + ], + [ + -22.49, + -22.107 + ], + [ + -5.996, + -29.157 + ], + [ + -0.494, + -36.201 + ] + ], + "c": true + } + ] + }, + { + "i": { + "x": 0.667, + "y": 1 + }, + "o": { + "x": 1, + "y": 0 + }, + "n": "0p667_1_1_0", + "t": 48, + "s": [ + { + "i": [ + [ + -0.081, + 0.416 + ], + [ + 0, + 0.614 + ], + [ + 0.017, + 0.114 + ], + [ + 4.432, + 1.114 + ], + [ + 0.455, + 0.099 + ], + [ + 0.63, + 0 + ], + [ + 0.118, + -0.012 + ], + [ + 1.098, + -0.552 + ], + [ + 5.005, + -1.792 + ], + [ + 17.596, + -1.761 + ], + [ + 5.449, + -0.216 + ], + [ + 10.022, + 0.979 + ], + [ + 5.427, + 0.928 + ], + [ + 9.789, + 3.142 + ], + [ + 6.284, + 3.051 + ], + [ + 0.79, + 0.255 + ], + [ + 0.915, + 0.206 + ], + [ + 0.63, + 0 + ], + [ + 0.098, + -0.016 + ], + [ + 1.538, + -3.764 + ], + [ + 0.246, + -0.951 + ], + [ + 0, + -0.58 + ], + [ + -0.022, + -0.149 + ], + [ + -2.832, + -1.687 + ], + [ + -1.661, + -0.753 + ], + [ + -10.509, + -2.813 + ], + [ + -8.427, + -1.306 + ], + [ + -5.769, + -0.425 + ], + [ + -5.447, + -0.289 + ], + [ + -0.241, + -0.027 + ], + [ + -3.43, + 0 + ], + [ + -0.312, + 0.015 + ], + [ + -4.293, + 0.255 + ], + [ + -5.555, + 0.778 + ], + [ + -6.003, + 1.316 + ], + [ + -9.441, + 3.427 + ], + [ + -5.316, + 2.752 + ], + [ + -0.737, + 3.161 + ] + ], + "o": [ + [ + 0, + -0.614 + ], + [ + -0.035, + -0.111 + ], + [ + -0.645, + -4.395 + ], + [ + -0.451, + -0.113 + ], + [ + -0.63, + 0 + ], + [ + -0.116, + 0.032 + ], + [ + -1.23, + 0.122 + ], + [ + -4.743, + 2.385 + ], + [ + -16.622, + 5.95 + ], + [ + -5.424, + 0.543 + ], + [ + -10.064, + 0.399 + ], + [ + -5.48, + -0.536 + ], + [ + -10.152, + -1.736 + ], + [ + -6.661, + -2.138 + ], + [ + -0.75, + -0.364 + ], + [ + -0.888, + -0.287 + ], + [ + -0.63, + 0 + ], + [ + -0.095, + 0.034 + ], + [ + -4.089, + 0.654 + ], + [ + -0.369, + 0.903 + ], + [ + 0, + 0.58 + ], + [ + 0.038, + 0.147 + ], + [ + 0.472, + 3.212 + ], + [ + 1.56, + 0.929 + ], + [ + 9.893, + 4.481 + ], + [ + 8.226, + 2.203 + ], + [ + 5.716, + 0.886 + ], + [ + 5.438, + 0.4 + ], + [ + 0.242, + 0.013 + ], + [ + 3.43, + 0 + ], + [ + 0.311, + -0.029 + ], + [ + 4.296, + -0.209 + ], + [ + 5.604, + -0.333 + ], + [ + 6.089, + -0.852 + ], + [ + 9.827, + -2.154 + ], + [ + 5.635, + -2.045 + ], + [ + 2.928, + -1.516 + ], + [ + 0.096, + -0.413 + ] + ], + "v": [ + [ + -0.25, + -37.45 + ], + [ + -0.25, + -39.292 + ], + [ + -0.352, + -39.627 + ], + [ + -8.441, + -48.41 + ], + [ + -9.805, + -48.71 + ], + [ + -11.695, + -48.71 + ], + [ + -12.043, + -48.617 + ], + [ + -15.549, + -47.635 + ], + [ + -30.201, + -41.435 + ], + [ + -81.575, + -30.008 + ], + [ + -97.904, + -28.937 + ], + [ + -128.04, + -29.897 + ], + [ + -144.399, + -32.098 + ], + [ + -174.316, + -39.388 + ], + [ + -193.782, + -47.058 + ], + [ + -196.066, + -48.073 + ], + [ + -198.805, + -48.71 + ], + [ + -200.695, + -48.71 + ], + [ + -200.982, + -48.612 + ], + [ + -209.494, + -42.035 + ], + [ + -210.25, + -39.19 + ], + [ + -210.25, + -37.45 + ], + [ + -210.139, + -37.008 + ], + [ + -205.218, + -29.585 + ], + [ + -200.329, + -27.133 + ], + [ + -169.658, + -16.368 + ], + [ + -144.675, + -11.119 + ], + [ + -127.458, + -9.034 + ], + [ + -111.119, + -8.149 + ], + [ + -110.395, + -8.07 + ], + [ + -100.105, + -8.07 + ], + [ + -99.172, + -8.154 + ], + [ + -86.283, + -8.786 + ], + [ + -69.554, + -10.561 + ], + [ + -51.415, + -13.81 + ], + [ + -22.49, + -22.107 + ], + [ + -5.996, + -29.157 + ], + [ + -0.494, + -36.201 + ] + ], + "c": true + } + ], + "e": [ + { + "i": [ + [ + -0.081, + 0.416 + ], + [ + 0, + 0.614 + ], + [ + 0.017, + 0.114 + ], + [ + 4.432, + 1.114 + ], + [ + 0.455, + 0.099 + ], + [ + 0.63, + 0 + ], + [ + 0.118, + -0.012 + ], + [ + 1.098, + -0.552 + ], + [ + 5.005, + -1.792 + ], + [ + 17.596, + -1.761 + ], + [ + 5.449, + -0.216 + ], + [ + 10.022, + 0.979 + ], + [ + 5.427, + 0.928 + ], + [ + 9.789, + 3.142 + ], + [ + 6.284, + 3.051 + ], + [ + 0.79, + 0.255 + ], + [ + 0.915, + 0.206 + ], + [ + 0.63, + 0 + ], + [ + 0.098, + -0.016 + ], + [ + 1.538, + -3.764 + ], + [ + 0.246, + -0.951 + ], + [ + 0, + -0.58 + ], + [ + -0.022, + -0.149 + ], + [ + -2.832, + -1.687 + ], + [ + -1.661, + -0.753 + ], + [ + -10.509, + -2.813 + ], + [ + -8.427, + -1.306 + ], + [ + -5.769, + -0.425 + ], + [ + -5.447, + -0.289 + ], + [ + -0.241, + -0.027 + ], + [ + -3.43, + 0 + ], + [ + -0.312, + 0.015 + ], + [ + -4.293, + 0.255 + ], + [ + -5.555, + 0.778 + ], + [ + -6.003, + 1.316 + ], + [ + -9.441, + 3.427 + ], + [ + -5.316, + 2.752 + ], + [ + -0.737, + 3.161 + ] + ], + "o": [ + [ + 0, + -0.614 + ], + [ + -0.035, + -0.111 + ], + [ + -0.645, + -4.395 + ], + [ + -0.451, + -0.113 + ], + [ + -0.63, + 0 + ], + [ + -0.116, + 0.032 + ], + [ + -1.23, + 0.122 + ], + [ + -4.743, + 2.385 + ], + [ + -16.622, + 5.95 + ], + [ + -5.424, + 0.543 + ], + [ + -10.064, + 0.399 + ], + [ + -5.48, + -0.536 + ], + [ + -10.152, + -1.736 + ], + [ + -6.661, + -2.138 + ], + [ + -0.75, + -0.364 + ], + [ + -0.888, + -0.287 + ], + [ + -0.63, + 0 + ], + [ + -0.095, + 0.034 + ], + [ + -4.089, + 0.654 + ], + [ + -0.369, + 0.903 + ], + [ + 0, + 0.58 + ], + [ + 0.038, + 0.147 + ], + [ + 0.472, + 3.212 + ], + [ + 1.56, + 0.929 + ], + [ + 9.893, + 4.481 + ], + [ + 8.226, + 2.203 + ], + [ + 5.716, + 0.886 + ], + [ + 5.438, + 0.4 + ], + [ + 0.242, + 0.013 + ], + [ + 3.43, + 0 + ], + [ + 0.311, + -0.029 + ], + [ + 4.296, + -0.209 + ], + [ + 5.604, + -0.333 + ], + [ + 6.089, + -0.852 + ], + [ + 9.827, + -2.154 + ], + [ + 5.635, + -2.045 + ], + [ + 2.928, + -1.516 + ], + [ + 0.096, + -0.413 + ] + ], + "v": [ + [ + -0.25, + -37.45 + ], + [ + -0.25, + -39.292 + ], + [ + -0.352, + -39.627 + ], + [ + -8.441, + -48.41 + ], + [ + -9.805, + -48.71 + ], + [ + -11.695, + -48.71 + ], + [ + -12.043, + -48.617 + ], + [ + -15.549, + -47.635 + ], + [ + -30.201, + -41.435 + ], + [ + -81.575, + -30.008 + ], + [ + -97.904, + -28.937 + ], + [ + -128.04, + -29.897 + ], + [ + -144.399, + -32.098 + ], + [ + -174.316, + -39.388 + ], + [ + -193.782, + -47.058 + ], + [ + -196.066, + -48.073 + ], + [ + -198.805, + -48.71 + ], + [ + -200.695, + -48.71 + ], + [ + -200.982, + -48.612 + ], + [ + -209.494, + -42.035 + ], + [ + -210.25, + -39.19 + ], + [ + -210.25, + -37.45 + ], + [ + -210.139, + -37.008 + ], + [ + -205.218, + -29.585 + ], + [ + -200.329, + -27.133 + ], + [ + -169.658, + -16.368 + ], + [ + -144.675, + -11.119 + ], + [ + -127.458, + -9.034 + ], + [ + -111.119, + -8.149 + ], + [ + -110.395, + -8.07 + ], + [ + -100.105, + -8.07 + ], + [ + -99.172, + -8.154 + ], + [ + -86.283, + -8.786 + ], + [ + -69.554, + -10.561 + ], + [ + -51.415, + -13.81 + ], + [ + -22.49, + -22.107 + ], + [ + -5.996, + -29.157 + ], + [ + -0.494, + -36.201 + ] + ], + "c": true + } + ] + }, + { + "i": { + "x": 0, + "y": 1 + }, + "o": { + "x": 1, + "y": 0 + }, + "n": "0_1_1_0", + "t": 55, + "s": [ + { + "i": [ + [ + -0.081, + 0.416 + ], + [ + 0, + 0.614 + ], + [ + 0.017, + 0.114 + ], + [ + 4.432, + 1.114 + ], + [ + 0.455, + 0.099 + ], + [ + 0.63, + 0 + ], + [ + 0.118, + -0.012 + ], + [ + 1.098, + -0.552 + ], + [ + 5.005, + -1.792 + ], + [ + 17.596, + -1.761 + ], + [ + 5.449, + -0.216 + ], + [ + 10.022, + 0.979 + ], + [ + 5.427, + 0.928 + ], + [ + 9.789, + 3.142 + ], + [ + 6.284, + 3.051 + ], + [ + 0.79, + 0.255 + ], + [ + 0.915, + 0.206 + ], + [ + 0.63, + 0 + ], + [ + 0.098, + -0.016 + ], + [ + 1.538, + -3.764 + ], + [ + 0.246, + -0.951 + ], + [ + 0, + -0.58 + ], + [ + -0.022, + -0.149 + ], + [ + -2.832, + -1.687 + ], + [ + -1.661, + -0.753 + ], + [ + -10.509, + -2.813 + ], + [ + -8.427, + -1.306 + ], + [ + -5.769, + -0.425 + ], + [ + -5.447, + -0.289 + ], + [ + -0.241, + -0.027 + ], + [ + -3.43, + 0 + ], + [ + -0.312, + 0.015 + ], + [ + -4.293, + 0.255 + ], + [ + -5.555, + 0.778 + ], + [ + -6.003, + 1.316 + ], + [ + -9.441, + 3.427 + ], + [ + -5.316, + 2.752 + ], + [ + -0.737, + 3.161 + ] + ], + "o": [ + [ + 0, + -0.614 + ], + [ + -0.035, + -0.111 + ], + [ + -0.645, + -4.395 + ], + [ + -0.451, + -0.113 + ], + [ + -0.63, + 0 + ], + [ + -0.116, + 0.032 + ], + [ + -1.23, + 0.122 + ], + [ + -4.743, + 2.385 + ], + [ + -16.622, + 5.95 + ], + [ + -5.424, + 0.543 + ], + [ + -10.064, + 0.399 + ], + [ + -5.48, + -0.536 + ], + [ + -10.152, + -1.736 + ], + [ + -6.661, + -2.138 + ], + [ + -0.75, + -0.364 + ], + [ + -0.888, + -0.287 + ], + [ + -0.63, + 0 + ], + [ + -0.095, + 0.034 + ], + [ + -4.089, + 0.654 + ], + [ + -0.369, + 0.903 + ], + [ + 0, + 0.58 + ], + [ + 0.038, + 0.147 + ], + [ + 0.472, + 3.212 + ], + [ + 1.56, + 0.929 + ], + [ + 9.893, + 4.481 + ], + [ + 8.226, + 2.203 + ], + [ + 5.716, + 0.886 + ], + [ + 5.438, + 0.4 + ], + [ + 0.242, + 0.013 + ], + [ + 3.43, + 0 + ], + [ + 0.311, + -0.029 + ], + [ + 4.296, + -0.209 + ], + [ + 5.604, + -0.333 + ], + [ + 6.089, + -0.852 + ], + [ + 9.827, + -2.154 + ], + [ + 5.635, + -2.045 + ], + [ + 2.928, + -1.516 + ], + [ + 0.096, + -0.413 + ] + ], + "v": [ + [ + -0.25, + -37.45 + ], + [ + -0.25, + -39.292 + ], + [ + -0.352, + -39.627 + ], + [ + -8.441, + -48.41 + ], + [ + -9.805, + -48.71 + ], + [ + -11.695, + -48.71 + ], + [ + -12.043, + -48.617 + ], + [ + -15.549, + -47.635 + ], + [ + -30.201, + -41.435 + ], + [ + -81.575, + -30.008 + ], + [ + -97.904, + -28.937 + ], + [ + -128.04, + -29.897 + ], + [ + -144.399, + -32.098 + ], + [ + -174.316, + -39.388 + ], + [ + -193.782, + -47.058 + ], + [ + -196.066, + -48.073 + ], + [ + -198.805, + -48.71 + ], + [ + -200.695, + -48.71 + ], + [ + -200.982, + -48.612 + ], + [ + -209.494, + -42.035 + ], + [ + -210.25, + -39.19 + ], + [ + -210.25, + -37.45 + ], + [ + -210.139, + -37.008 + ], + [ + -205.218, + -29.585 + ], + [ + -200.329, + -27.133 + ], + [ + -169.658, + -16.368 + ], + [ + -144.675, + -11.119 + ], + [ + -127.458, + -9.034 + ], + [ + -111.119, + -8.149 + ], + [ + -110.395, + -8.07 + ], + [ + -100.105, + -8.07 + ], + [ + -99.172, + -8.154 + ], + [ + -86.283, + -8.786 + ], + [ + -69.554, + -10.561 + ], + [ + -51.415, + -13.81 + ], + [ + -22.49, + -22.107 + ], + [ + -5.996, + -29.157 + ], + [ + -0.494, + -36.201 + ] + ], + "c": true + } + ], + "e": [ + { + "i": [ + [ + -0.044, + 0.566 + ], + [ + 0, + 0.797 + ], + [ + 0.009, + 0.092 + ], + [ + 0.473, + 1.052 + ], + [ + 2.267, + 1.723 + ], + [ + 3.546, + 1.383 + ], + [ + 4.958, + 1.036 + ], + [ + 5.038, + 0.506 + ], + [ + 3.295, + 0.201 + ], + [ + 3.27, + 0.122 + ], + [ + 0.157, + 0.015 + ], + [ + 2.008, + 0 + ], + [ + 0.123, + -0.004 + ], + [ + 2.525, + -0.137 + ], + [ + 3.032, + -0.3 + ], + [ + 3.359, + -0.467 + ], + [ + 3.986, + -0.994 + ], + [ + 4.243, + -1.98 + ], + [ + 2.404, + -2.298 + ], + [ + 0.547, + -2.511 + ], + [ + 0.082, + -0.477 + ], + [ + 0, + -0.797 + ], + [ + -0.009, + -0.122 + ], + [ + -0.09, + -0.954 + ], + [ + -0.77, + -2.696 + ], + [ + -4.189, + -5.385 + ], + [ + -7.486, + -4.304 + ], + [ + -9.579, + -1.491 + ], + [ + -2.987, + -0.129 + ], + [ + -0.602, + -0.035 + ], + [ + -1.278, + 0 + ], + [ + -0.169, + 0.005 + ], + [ + -3.481, + 0.546 + ], + [ + -4.049, + 1.347 + ], + [ + -6.01, + 4.45 + ], + [ + -3.397, + 4.433 + ], + [ + -1.64, + 6.947 + ], + [ + -0.167, + 2.53 + ] + ], + "o": [ + [ + 0, + -0.797 + ], + [ + -0.023, + -0.091 + ], + [ + -0.106, + -1.121 + ], + [ + -1.087, + -2.417 + ], + [ + -2.906, + -2.208 + ], + [ + -4.636, + -1.808 + ], + [ + -4.922, + -1.029 + ], + [ + -3.281, + -0.33 + ], + [ + -3.263, + -0.199 + ], + [ + -0.158, + -0.006 + ], + [ + -2.008, + 0 + ], + [ + -0.123, + 0.014 + ], + [ + -2.53, + 0.082 + ], + [ + -3.048, + 0.165 + ], + [ + -3.381, + 0.335 + ], + [ + -4.103, + 0.571 + ], + [ + -4.648, + 1.159 + ], + [ + -3.171, + 1.48 + ], + [ + -1.997, + 1.909 + ], + [ + -0.103, + 0.473 + ], + [ + 0, + 0.797 + ], + [ + 0.02, + 0.121 + ], + [ + 0.072, + 0.955 + ], + [ + 0.261, + 2.763 + ], + [ + 1.783, + 6.242 + ], + [ + 4.941, + 6.352 + ], + [ + 8.015, + 4.608 + ], + [ + 2.94, + 0.458 + ], + [ + 0.602, + 0.026 + ], + [ + 1.278, + 0 + ], + [ + 0.169, + -0.017 + ], + [ + 3.538, + -0.113 + ], + [ + 4.291, + -0.673 + ], + [ + 7.471, + -2.485 + ], + [ + 4.723, + -3.497 + ], + [ + 4.574, + -5.97 + ], + [ + 0.587, + -2.486 + ], + [ + 0.037, + -0.566 + ] + ], + "v": [ + [ + -36.789, + -43.354 + ], + [ + -36.789, + -45.744 + ], + [ + -36.856, + -46.019 + ], + [ + -37.73, + -49.279 + ], + [ + -42.925, + -55.398 + ], + [ + -52.719, + -60.643 + ], + [ + -67.157, + -64.804 + ], + [ + -82.094, + -67.138 + ], + [ + -91.959, + -67.967 + ], + [ + -101.766, + -68.346 + ], + [ + -102.238, + -68.39 + ], + [ + -108.262, + -68.39 + ], + [ + -108.631, + -68.349 + ], + [ + -116.22, + -68.095 + ], + [ + -125.351, + -67.445 + ], + [ + -135.461, + -66.212 + ], + [ + -147.59, + -63.828 + ], + [ + -161, + -59.264 + ], + [ + -169.508, + -53.749 + ], + [ + -173.463, + -47.173 + ], + [ + -173.711, + -45.744 + ], + [ + -173.711, + -43.354 + ], + [ + -173.652, + -42.991 + ], + [ + -173.44, + -40.125 + ], + [ + -171.868, + -31.94 + ], + [ + -162.909, + -14.495 + ], + [ + -144.266, + 1.498 + ], + [ + -117.864, + 10.635 + ], + [ + -108.971, + 11.506 + ], + [ + -107.167, + 11.61 + ], + [ + -103.333, + 11.61 + ], + [ + -102.827, + 11.56 + ], + [ + -92.3, + 10.584 + ], + [ + -79.789, + 7.549 + ], + [ + -59.57, + -2.862 + ], + [ + -47.388, + -14.757 + ], + [ + -38.06, + -34.133 + ], + [ + -36.92, + -41.656 + ] + ], + "c": true + } + ] + }, + { + "i": { + "x": 1, + "y": 1 + }, + "o": { + "x": 0.333, + "y": 0 + }, + "n": "1_1_0p333_0", + "t": 58, + "s": [ + { + "i": [ + [ + -0.044, + 0.566 + ], + [ + 0, + 0.797 + ], + [ + 0.009, + 0.092 + ], + [ + 0.473, + 1.052 + ], + [ + 2.267, + 1.723 + ], + [ + 3.546, + 1.383 + ], + [ + 4.958, + 1.036 + ], + [ + 5.038, + 0.506 + ], + [ + 3.295, + 0.201 + ], + [ + 3.27, + 0.122 + ], + [ + 0.157, + 0.015 + ], + [ + 2.008, + 0 + ], + [ + 0.123, + -0.004 + ], + [ + 2.525, + -0.137 + ], + [ + 3.032, + -0.3 + ], + [ + 3.359, + -0.467 + ], + [ + 3.986, + -0.994 + ], + [ + 4.243, + -1.98 + ], + [ + 2.404, + -2.298 + ], + [ + 0.547, + -2.511 + ], + [ + 0.082, + -0.477 + ], + [ + 0, + -0.797 + ], + [ + -0.009, + -0.122 + ], + [ + -0.09, + -0.954 + ], + [ + -0.77, + -2.696 + ], + [ + -4.189, + -5.385 + ], + [ + -7.486, + -4.304 + ], + [ + -9.579, + -1.491 + ], + [ + -2.987, + -0.129 + ], + [ + -0.602, + -0.035 + ], + [ + -1.278, + 0 + ], + [ + -0.169, + 0.005 + ], + [ + -3.481, + 0.546 + ], + [ + -4.049, + 1.347 + ], + [ + -6.01, + 4.45 + ], + [ + -3.397, + 4.433 + ], + [ + -1.64, + 6.947 + ], + [ + -0.167, + 2.53 + ] + ], + "o": [ + [ + 0, + -0.797 + ], + [ + -0.023, + -0.091 + ], + [ + -0.106, + -1.121 + ], + [ + -1.087, + -2.417 + ], + [ + -2.906, + -2.208 + ], + [ + -4.636, + -1.808 + ], + [ + -4.922, + -1.029 + ], + [ + -3.281, + -0.33 + ], + [ + -3.263, + -0.199 + ], + [ + -0.158, + -0.006 + ], + [ + -2.008, + 0 + ], + [ + -0.123, + 0.014 + ], + [ + -2.53, + 0.082 + ], + [ + -3.048, + 0.165 + ], + [ + -3.381, + 0.335 + ], + [ + -4.103, + 0.571 + ], + [ + -4.648, + 1.159 + ], + [ + -3.171, + 1.48 + ], + [ + -1.997, + 1.909 + ], + [ + -0.103, + 0.473 + ], + [ + 0, + 0.797 + ], + [ + 0.02, + 0.121 + ], + [ + 0.072, + 0.955 + ], + [ + 0.261, + 2.763 + ], + [ + 1.783, + 6.242 + ], + [ + 4.941, + 6.352 + ], + [ + 8.015, + 4.608 + ], + [ + 2.94, + 0.458 + ], + [ + 0.602, + 0.026 + ], + [ + 1.278, + 0 + ], + [ + 0.169, + -0.017 + ], + [ + 3.538, + -0.113 + ], + [ + 4.291, + -0.673 + ], + [ + 7.471, + -2.485 + ], + [ + 4.723, + -3.497 + ], + [ + 4.574, + -5.97 + ], + [ + 0.587, + -2.486 + ], + [ + 0.037, + -0.566 + ] + ], + "v": [ + [ + -36.789, + -43.354 + ], + [ + -36.789, + -45.744 + ], + [ + -36.856, + -46.019 + ], + [ + -37.73, + -49.279 + ], + [ + -42.925, + -55.398 + ], + [ + -52.719, + -60.643 + ], + [ + -67.157, + -64.804 + ], + [ + -82.094, + -67.138 + ], + [ + -91.959, + -67.967 + ], + [ + -101.766, + -68.346 + ], + [ + -102.238, + -68.39 + ], + [ + -108.262, + -68.39 + ], + [ + -108.631, + -68.349 + ], + [ + -116.22, + -68.095 + ], + [ + -125.351, + -67.445 + ], + [ + -135.461, + -66.212 + ], + [ + -147.59, + -63.828 + ], + [ + -161, + -59.264 + ], + [ + -169.508, + -53.749 + ], + [ + -173.463, + -47.173 + ], + [ + -173.711, + -45.744 + ], + [ + -173.711, + -43.354 + ], + [ + -173.652, + -42.991 + ], + [ + -173.44, + -40.125 + ], + [ + -171.868, + -31.94 + ], + [ + -162.909, + -14.495 + ], + [ + -144.266, + 1.498 + ], + [ + -117.864, + 10.635 + ], + [ + -108.971, + 11.506 + ], + [ + -107.167, + 11.61 + ], + [ + -103.333, + 11.61 + ], + [ + -102.827, + 11.56 + ], + [ + -92.3, + 10.584 + ], + [ + -79.789, + 7.549 + ], + [ + -59.57, + -2.862 + ], + [ + -47.388, + -14.757 + ], + [ + -38.06, + -34.133 + ], + [ + -36.92, + -41.656 + ] + ], + "c": true + } + ], + "e": [ + { + "i": [ + [ + -0.029, + 0.566 + ], + [ + 0, + 0.797 + ], + [ + 0.006, + 0.092 + ], + [ + 0.309, + 1.052 + ], + [ + 1.481, + 1.723 + ], + [ + 2.317, + 1.383 + ], + [ + 3.239, + 1.036 + ], + [ + 3.292, + 0.506 + ], + [ + 2.153, + 0.201 + ], + [ + 2.136, + 0.122 + ], + [ + 0.103, + 0.015 + ], + [ + 1.312, + 0 + ], + [ + 0.081, + -0.004 + ], + [ + 1.65, + -0.137 + ], + [ + 1.981, + -0.3 + ], + [ + 2.195, + -0.467 + ], + [ + 2.604, + -0.994 + ], + [ + 2.772, + -1.98 + ], + [ + 1.571, + -2.298 + ], + [ + 0.357, + -2.511 + ], + [ + 0.054, + -0.477 + ], + [ + 0, + -0.797 + ], + [ + -0.006, + -0.122 + ], + [ + -0.059, + -0.954 + ], + [ + -0.503, + -2.696 + ], + [ + -2.737, + -5.385 + ], + [ + -4.891, + -4.304 + ], + [ + -6.259, + -1.491 + ], + [ + -1.952, + -0.129 + ], + [ + -0.393, + -0.035 + ], + [ + -0.835, + 0 + ], + [ + -0.111, + 0.005 + ], + [ + -2.274, + 0.546 + ], + [ + -2.646, + 1.347 + ], + [ + -3.927, + 4.45 + ], + [ + -2.219, + 4.434 + ], + [ + -1.071, + 6.947 + ], + [ + -0.109, + 2.53 + ] + ], + "o": [ + [ + 0, + -0.797 + ], + [ + -0.015, + -0.091 + ], + [ + -0.069, + -1.121 + ], + [ + -0.71, + -2.417 + ], + [ + -1.898, + -2.208 + ], + [ + -3.029, + -1.807 + ], + [ + -3.216, + -1.029 + ], + [ + -2.144, + -0.33 + ], + [ + -2.132, + -0.199 + ], + [ + -0.103, + -0.006 + ], + [ + -1.312, + 0 + ], + [ + -0.08, + 0.014 + ], + [ + -1.653, + 0.082 + ], + [ + -1.992, + 0.166 + ], + [ + -2.209, + 0.335 + ], + [ + -2.681, + 0.571 + ], + [ + -3.037, + 1.159 + ], + [ + -2.072, + 1.48 + ], + [ + -1.305, + 1.909 + ], + [ + -0.067, + 0.473 + ], + [ + 0, + 0.797 + ], + [ + 0.013, + 0.121 + ], + [ + 0.047, + 0.955 + ], + [ + 0.171, + 2.763 + ], + [ + 1.165, + 6.242 + ], + [ + 3.229, + 6.352 + ], + [ + 5.237, + 4.608 + ], + [ + 1.921, + 0.458 + ], + [ + 0.393, + 0.026 + ], + [ + 0.835, + 0 + ], + [ + 0.11, + -0.017 + ], + [ + 2.311, + -0.113 + ], + [ + 2.803, + -0.672 + ], + [ + 4.881, + -2.485 + ], + [ + 3.086, + -3.497 + ], + [ + 2.989, + -5.97 + ], + [ + 0.383, + -2.486 + ], + [ + 0.024, + -0.566 + ] + ], + "v": [ + [ + -60.519, + -43.354 + ], + [ + -60.519, + -45.744 + ], + [ + -60.563, + -46.019 + ], + [ + -61.134, + -49.279 + ], + [ + -64.529, + -55.398 + ], + [ + -70.927, + -60.643 + ], + [ + -80.361, + -64.804 + ], + [ + -90.121, + -67.138 + ], + [ + -96.566, + -67.967 + ], + [ + -102.974, + -68.346 + ], + [ + -103.282, + -68.39 + ], + [ + -107.218, + -68.39 + ], + [ + -107.459, + -68.349 + ], + [ + -112.417, + -68.095 + ], + [ + -118.384, + -67.445 + ], + [ + -124.989, + -66.212 + ], + [ + -132.914, + -63.828 + ], + [ + -141.676, + -59.264 + ], + [ + -147.235, + -53.749 + ], + [ + -149.818, + -47.173 + ], + [ + -149.981, + -45.744 + ], + [ + -149.981, + -43.354 + ], + [ + -149.942, + -42.992 + ], + [ + -149.804, + -40.125 + ], + [ + -148.776, + -31.94 + ], + [ + -142.922, + -14.495 + ], + [ + -130.742, + 1.498 + ], + [ + -113.492, + 10.635 + ], + [ + -107.682, + 11.506 + ], + [ + -106.502, + 11.61 + ], + [ + -103.997, + 11.61 + ], + [ + -103.667, + 11.56 + ], + [ + -96.789, + 10.584 + ], + [ + -88.614, + 7.549 + ], + [ + -75.404, + -2.862 + ], + [ + -67.444, + -14.757 + ], + [ + -61.35, + -34.133 + ], + [ + -60.605, + -41.656 + ] + ], + "c": true + } + ] + }, + { + "i": { + "x": 1, + "y": 1 + }, + "o": { + "x": 0, + "y": 0 + }, + "n": "1_1_0_0", + "t": 65, + "s": [ + { + "i": [ + [ + -0.029, + 0.566 + ], + [ + 0, + 0.797 + ], + [ + 0.006, + 0.092 + ], + [ + 0.309, + 1.052 + ], + [ + 1.481, + 1.723 + ], + [ + 2.317, + 1.383 + ], + [ + 3.239, + 1.036 + ], + [ + 3.292, + 0.506 + ], + [ + 2.153, + 0.201 + ], + [ + 2.136, + 0.122 + ], + [ + 0.103, + 0.015 + ], + [ + 1.312, + 0 + ], + [ + 0.081, + -0.004 + ], + [ + 1.65, + -0.137 + ], + [ + 1.981, + -0.3 + ], + [ + 2.195, + -0.467 + ], + [ + 2.604, + -0.994 + ], + [ + 2.772, + -1.98 + ], + [ + 1.571, + -2.298 + ], + [ + 0.357, + -2.511 + ], + [ + 0.054, + -0.477 + ], + [ + 0, + -0.797 + ], + [ + -0.006, + -0.122 + ], + [ + -0.059, + -0.954 + ], + [ + -0.503, + -2.696 + ], + [ + -2.737, + -5.385 + ], + [ + -4.891, + -4.304 + ], + [ + -6.259, + -1.491 + ], + [ + -1.952, + -0.129 + ], + [ + -0.393, + -0.035 + ], + [ + -0.835, + 0 + ], + [ + -0.111, + 0.005 + ], + [ + -2.274, + 0.546 + ], + [ + -2.646, + 1.347 + ], + [ + -3.927, + 4.45 + ], + [ + -2.219, + 4.434 + ], + [ + -1.071, + 6.947 + ], + [ + -0.109, + 2.53 + ] + ], + "o": [ + [ + 0, + -0.797 + ], + [ + -0.015, + -0.091 + ], + [ + -0.069, + -1.121 + ], + [ + -0.71, + -2.417 + ], + [ + -1.898, + -2.208 + ], + [ + -3.029, + -1.807 + ], + [ + -3.216, + -1.029 + ], + [ + -2.144, + -0.33 + ], + [ + -2.132, + -0.199 + ], + [ + -0.103, + -0.006 + ], + [ + -1.312, + 0 + ], + [ + -0.08, + 0.014 + ], + [ + -1.653, + 0.082 + ], + [ + -1.992, + 0.166 + ], + [ + -2.209, + 0.335 + ], + [ + -2.681, + 0.571 + ], + [ + -3.037, + 1.159 + ], + [ + -2.072, + 1.48 + ], + [ + -1.305, + 1.909 + ], + [ + -0.067, + 0.473 + ], + [ + 0, + 0.797 + ], + [ + 0.013, + 0.121 + ], + [ + 0.047, + 0.955 + ], + [ + 0.171, + 2.763 + ], + [ + 1.165, + 6.242 + ], + [ + 3.229, + 6.352 + ], + [ + 5.237, + 4.608 + ], + [ + 1.921, + 0.458 + ], + [ + 0.393, + 0.026 + ], + [ + 0.835, + 0 + ], + [ + 0.11, + -0.017 + ], + [ + 2.311, + -0.113 + ], + [ + 2.803, + -0.672 + ], + [ + 4.881, + -2.485 + ], + [ + 3.086, + -3.497 + ], + [ + 2.989, + -5.97 + ], + [ + 0.383, + -2.486 + ], + [ + 0.024, + -0.566 + ] + ], + "v": [ + [ + -60.519, + -43.354 + ], + [ + -60.519, + -45.744 + ], + [ + -60.563, + -46.019 + ], + [ + -61.134, + -49.279 + ], + [ + -64.529, + -55.398 + ], + [ + -70.927, + -60.643 + ], + [ + -80.361, + -64.804 + ], + [ + -90.121, + -67.138 + ], + [ + -96.566, + -67.967 + ], + [ + -102.974, + -68.346 + ], + [ + -103.282, + -68.39 + ], + [ + -107.218, + -68.39 + ], + [ + -107.459, + -68.349 + ], + [ + -112.417, + -68.095 + ], + [ + -118.384, + -67.445 + ], + [ + -124.989, + -66.212 + ], + [ + -132.914, + -63.828 + ], + [ + -141.676, + -59.264 + ], + [ + -147.235, + -53.749 + ], + [ + -149.818, + -47.173 + ], + [ + -149.981, + -45.744 + ], + [ + -149.981, + -43.354 + ], + [ + -149.942, + -42.992 + ], + [ + -149.804, + -40.125 + ], + [ + -148.776, + -31.94 + ], + [ + -142.922, + -14.495 + ], + [ + -130.742, + 1.498 + ], + [ + -113.492, + 10.635 + ], + [ + -107.682, + 11.506 + ], + [ + -106.502, + 11.61 + ], + [ + -103.997, + 11.61 + ], + [ + -103.667, + 11.56 + ], + [ + -96.789, + 10.584 + ], + [ + -88.614, + 7.549 + ], + [ + -75.404, + -2.862 + ], + [ + -67.444, + -14.757 + ], + [ + -61.35, + -34.133 + ], + [ + -60.605, + -41.656 + ] + ], + "c": true + } + ], + "e": [ + { + "i": [ + [ + -0.029, + 0.566 + ], + [ + 0, + 0.797 + ], + [ + 0.006, + 0.092 + ], + [ + 0.309, + 1.052 + ], + [ + 1.481, + 1.723 + ], + [ + 2.317, + 1.383 + ], + [ + 3.239, + 1.036 + ], + [ + 3.292, + 0.506 + ], + [ + 2.153, + 0.201 + ], + [ + 2.136, + 0.122 + ], + [ + 0.103, + 0.015 + ], + [ + 1.312, + 0 + ], + [ + 0.081, + -0.004 + ], + [ + 1.65, + -0.137 + ], + [ + 1.981, + -0.3 + ], + [ + 2.195, + -0.467 + ], + [ + 2.604, + -0.994 + ], + [ + 2.772, + -1.98 + ], + [ + 1.571, + -2.298 + ], + [ + 0.357, + -2.511 + ], + [ + 0.054, + -0.477 + ], + [ + 0, + -0.797 + ], + [ + -0.006, + -0.122 + ], + [ + -0.059, + -0.954 + ], + [ + -0.503, + -2.696 + ], + [ + -2.737, + -5.385 + ], + [ + -4.891, + -4.304 + ], + [ + -6.259, + -1.491 + ], + [ + -1.952, + -0.129 + ], + [ + -0.393, + -0.035 + ], + [ + -0.835, + 0 + ], + [ + -0.111, + 0.005 + ], + [ + -2.274, + 0.546 + ], + [ + -2.646, + 1.347 + ], + [ + -3.927, + 4.45 + ], + [ + -2.219, + 4.434 + ], + [ + -1.071, + 6.947 + ], + [ + -0.109, + 2.53 + ] + ], + "o": [ + [ + 0, + -0.797 + ], + [ + -0.015, + -0.091 + ], + [ + -0.069, + -1.121 + ], + [ + -0.71, + -2.417 + ], + [ + -1.898, + -2.208 + ], + [ + -3.029, + -1.807 + ], + [ + -3.216, + -1.029 + ], + [ + -2.144, + -0.33 + ], + [ + -2.132, + -0.199 + ], + [ + -0.103, + -0.006 + ], + [ + -1.312, + 0 + ], + [ + -0.08, + 0.014 + ], + [ + -1.653, + 0.082 + ], + [ + -1.992, + 0.166 + ], + [ + -2.209, + 0.335 + ], + [ + -2.681, + 0.571 + ], + [ + -3.037, + 1.159 + ], + [ + -2.072, + 1.48 + ], + [ + -1.305, + 1.909 + ], + [ + -0.067, + 0.473 + ], + [ + 0, + 0.797 + ], + [ + 0.013, + 0.121 + ], + [ + 0.047, + 0.955 + ], + [ + 0.171, + 2.763 + ], + [ + 1.165, + 6.242 + ], + [ + 3.229, + 6.352 + ], + [ + 5.237, + 4.608 + ], + [ + 1.921, + 0.458 + ], + [ + 0.393, + 0.026 + ], + [ + 0.835, + 0 + ], + [ + 0.11, + -0.017 + ], + [ + 2.311, + -0.113 + ], + [ + 2.803, + -0.672 + ], + [ + 4.881, + -2.485 + ], + [ + 3.086, + -3.497 + ], + [ + 2.989, + -5.97 + ], + [ + 0.383, + -2.486 + ], + [ + 0.024, + -0.566 + ] + ], + "v": [ + [ + -60.519, + -43.354 + ], + [ + -60.519, + -45.744 + ], + [ + -60.563, + -46.019 + ], + [ + -61.134, + -49.279 + ], + [ + -64.529, + -55.398 + ], + [ + -70.927, + -60.643 + ], + [ + -80.361, + -64.804 + ], + [ + -90.121, + -67.138 + ], + [ + -96.566, + -67.967 + ], + [ + -102.974, + -68.346 + ], + [ + -103.282, + -68.39 + ], + [ + -107.218, + -68.39 + ], + [ + -107.459, + -68.349 + ], + [ + -112.417, + -68.095 + ], + [ + -118.384, + -67.445 + ], + [ + -124.989, + -66.212 + ], + [ + -132.914, + -63.828 + ], + [ + -141.676, + -59.264 + ], + [ + -147.235, + -53.749 + ], + [ + -149.818, + -47.173 + ], + [ + -149.981, + -45.744 + ], + [ + -149.981, + -43.354 + ], + [ + -149.942, + -42.992 + ], + [ + -149.804, + -40.125 + ], + [ + -148.776, + -31.94 + ], + [ + -142.922, + -14.495 + ], + [ + -130.742, + 1.498 + ], + [ + -113.492, + 10.635 + ], + [ + -107.682, + 11.506 + ], + [ + -106.502, + 11.61 + ], + [ + -103.997, + 11.61 + ], + [ + -103.667, + 11.56 + ], + [ + -96.789, + 10.584 + ], + [ + -88.614, + 7.549 + ], + [ + -75.404, + -2.862 + ], + [ + -67.444, + -14.757 + ], + [ + -61.35, + -34.133 + ], + [ + -60.605, + -41.656 + ] + ], + "c": true + } + ] + }, + { + "i": { + "x": 0, + "y": 1 + }, + "o": { + "x": 0, + "y": 0 + }, + "n": "0_1_0_0", + "t": 68.25, + "s": [ + { + "i": [ + [ + -0.029, + 0.566 + ], + [ + 0, + 0.797 + ], + [ + 0.006, + 0.092 + ], + [ + 0.309, + 1.052 + ], + [ + 1.481, + 1.723 + ], + [ + 2.317, + 1.383 + ], + [ + 3.239, + 1.036 + ], + [ + 3.292, + 0.506 + ], + [ + 2.153, + 0.201 + ], + [ + 2.136, + 0.122 + ], + [ + 0.103, + 0.015 + ], + [ + 1.312, + 0 + ], + [ + 0.081, + -0.004 + ], + [ + 1.65, + -0.137 + ], + [ + 1.981, + -0.3 + ], + [ + 2.195, + -0.467 + ], + [ + 2.604, + -0.994 + ], + [ + 2.772, + -1.98 + ], + [ + 1.571, + -2.298 + ], + [ + 0.357, + -2.511 + ], + [ + 0.054, + -0.477 + ], + [ + 0, + -0.797 + ], + [ + -0.006, + -0.122 + ], + [ + -0.059, + -0.954 + ], + [ + -0.503, + -2.696 + ], + [ + -2.737, + -5.385 + ], + [ + -4.891, + -4.304 + ], + [ + -6.259, + -1.491 + ], + [ + -1.952, + -0.129 + ], + [ + -0.393, + -0.035 + ], + [ + -0.835, + 0 + ], + [ + -0.111, + 0.005 + ], + [ + -2.274, + 0.546 + ], + [ + -2.646, + 1.347 + ], + [ + -3.927, + 4.45 + ], + [ + -2.219, + 4.434 + ], + [ + -1.071, + 6.947 + ], + [ + -0.109, + 2.53 + ] + ], + "o": [ + [ + 0, + -0.797 + ], + [ + -0.015, + -0.091 + ], + [ + -0.069, + -1.121 + ], + [ + -0.71, + -2.417 + ], + [ + -1.898, + -2.208 + ], + [ + -3.029, + -1.807 + ], + [ + -3.216, + -1.029 + ], + [ + -2.144, + -0.33 + ], + [ + -2.132, + -0.199 + ], + [ + -0.103, + -0.006 + ], + [ + -1.312, + 0 + ], + [ + -0.08, + 0.014 + ], + [ + -1.653, + 0.082 + ], + [ + -1.992, + 0.166 + ], + [ + -2.209, + 0.335 + ], + [ + -2.681, + 0.571 + ], + [ + -3.037, + 1.159 + ], + [ + -2.072, + 1.48 + ], + [ + -1.305, + 1.909 + ], + [ + -0.067, + 0.473 + ], + [ + 0, + 0.797 + ], + [ + 0.013, + 0.121 + ], + [ + 0.047, + 0.955 + ], + [ + 0.171, + 2.763 + ], + [ + 1.165, + 6.242 + ], + [ + 3.229, + 6.352 + ], + [ + 5.237, + 4.608 + ], + [ + 1.921, + 0.458 + ], + [ + 0.393, + 0.026 + ], + [ + 0.835, + 0 + ], + [ + 0.11, + -0.017 + ], + [ + 2.311, + -0.113 + ], + [ + 2.803, + -0.672 + ], + [ + 4.881, + -2.485 + ], + [ + 3.086, + -3.497 + ], + [ + 2.989, + -5.97 + ], + [ + 0.383, + -2.486 + ], + [ + 0.024, + -0.566 + ] + ], + "v": [ + [ + -60.519, + -43.354 + ], + [ + -60.519, + -45.744 + ], + [ + -60.563, + -46.019 + ], + [ + -61.134, + -49.279 + ], + [ + -64.529, + -55.398 + ], + [ + -70.927, + -60.643 + ], + [ + -80.361, + -64.804 + ], + [ + -90.121, + -67.138 + ], + [ + -96.566, + -67.967 + ], + [ + -102.974, + -68.346 + ], + [ + -103.282, + -68.39 + ], + [ + -107.218, + -68.39 + ], + [ + -107.459, + -68.349 + ], + [ + -112.417, + -68.095 + ], + [ + -118.384, + -67.445 + ], + [ + -124.989, + -66.212 + ], + [ + -132.914, + -63.828 + ], + [ + -141.676, + -59.264 + ], + [ + -147.235, + -53.749 + ], + [ + -149.818, + -47.173 + ], + [ + -149.981, + -45.744 + ], + [ + -149.981, + -43.354 + ], + [ + -149.942, + -42.992 + ], + [ + -149.804, + -40.125 + ], + [ + -148.776, + -31.94 + ], + [ + -142.922, + -14.495 + ], + [ + -130.742, + 1.498 + ], + [ + -113.492, + 10.635 + ], + [ + -107.682, + 11.506 + ], + [ + -106.502, + 11.61 + ], + [ + -103.997, + 11.61 + ], + [ + -103.667, + 11.56 + ], + [ + -96.789, + 10.584 + ], + [ + -88.614, + 7.549 + ], + [ + -75.404, + -2.862 + ], + [ + -67.444, + -14.757 + ], + [ + -61.35, + -34.133 + ], + [ + -60.605, + -41.656 + ] + ], + "c": true + } + ], + "e": [ + { + "i": [ + [ + -0.044, + 0.566 + ], + [ + 0, + 0.797 + ], + [ + 0.009, + 0.092 + ], + [ + 0.473, + 1.052 + ], + [ + 2.267, + 1.723 + ], + [ + 3.546, + 1.383 + ], + [ + 4.958, + 1.036 + ], + [ + 5.038, + 0.506 + ], + [ + 3.295, + 0.201 + ], + [ + 3.27, + 0.122 + ], + [ + 0.157, + 0.015 + ], + [ + 2.008, + 0 + ], + [ + 0.123, + -0.004 + ], + [ + 2.525, + -0.137 + ], + [ + 3.032, + -0.3 + ], + [ + 3.359, + -0.467 + ], + [ + 3.986, + -0.994 + ], + [ + 4.243, + -1.98 + ], + [ + 2.404, + -2.298 + ], + [ + 0.547, + -2.511 + ], + [ + 0.082, + -0.477 + ], + [ + 0, + -0.797 + ], + [ + -0.009, + -0.122 + ], + [ + -0.09, + -0.954 + ], + [ + -0.77, + -2.696 + ], + [ + -4.189, + -5.385 + ], + [ + -7.486, + -4.304 + ], + [ + -9.579, + -1.491 + ], + [ + -2.987, + -0.129 + ], + [ + -0.602, + -0.035 + ], + [ + -1.278, + 0 + ], + [ + -0.169, + 0.005 + ], + [ + -3.481, + 0.546 + ], + [ + -4.049, + 1.347 + ], + [ + -6.01, + 4.45 + ], + [ + -3.397, + 4.433 + ], + [ + -1.64, + 6.947 + ], + [ + -0.167, + 2.53 + ] + ], + "o": [ + [ + 0, + -0.797 + ], + [ + -0.023, + -0.091 + ], + [ + -0.106, + -1.121 + ], + [ + -1.087, + -2.417 + ], + [ + -2.906, + -2.208 + ], + [ + -4.636, + -1.808 + ], + [ + -4.922, + -1.029 + ], + [ + -3.281, + -0.33 + ], + [ + -3.263, + -0.199 + ], + [ + -0.158, + -0.006 + ], + [ + -2.008, + 0 + ], + [ + -0.123, + 0.014 + ], + [ + -2.53, + 0.082 + ], + [ + -3.048, + 0.165 + ], + [ + -3.381, + 0.335 + ], + [ + -4.103, + 0.571 + ], + [ + -4.648, + 1.159 + ], + [ + -3.171, + 1.48 + ], + [ + -1.997, + 1.909 + ], + [ + -0.103, + 0.473 + ], + [ + 0, + 0.797 + ], + [ + 0.02, + 0.121 + ], + [ + 0.072, + 0.955 + ], + [ + 0.261, + 2.763 + ], + [ + 1.783, + 6.242 + ], + [ + 4.941, + 6.352 + ], + [ + 8.015, + 4.608 + ], + [ + 2.94, + 0.458 + ], + [ + 0.602, + 0.026 + ], + [ + 1.278, + 0 + ], + [ + 0.169, + -0.017 + ], + [ + 3.538, + -0.113 + ], + [ + 4.291, + -0.673 + ], + [ + 7.471, + -2.485 + ], + [ + 4.723, + -3.497 + ], + [ + 4.574, + -5.97 + ], + [ + 0.587, + -2.486 + ], + [ + 0.037, + -0.566 + ] + ], + "v": [ + [ + -36.789, + -43.354 + ], + [ + -36.789, + -45.744 + ], + [ + -36.856, + -46.019 + ], + [ + -37.73, + -49.279 + ], + [ + -42.925, + -55.398 + ], + [ + -52.719, + -60.643 + ], + [ + -67.157, + -64.804 + ], + [ + -82.094, + -67.138 + ], + [ + -91.959, + -67.967 + ], + [ + -101.766, + -68.346 + ], + [ + -102.238, + -68.39 + ], + [ + -108.262, + -68.39 + ], + [ + -108.631, + -68.349 + ], + [ + -116.22, + -68.095 + ], + [ + -125.351, + -67.445 + ], + [ + -135.461, + -66.212 + ], + [ + -147.59, + -63.828 + ], + [ + -161, + -59.264 + ], + [ + -169.508, + -53.749 + ], + [ + -173.463, + -47.173 + ], + [ + -173.711, + -45.744 + ], + [ + -173.711, + -43.354 + ], + [ + -173.652, + -42.991 + ], + [ + -173.44, + -40.125 + ], + [ + -171.868, + -31.94 + ], + [ + -162.909, + -14.495 + ], + [ + -144.266, + 1.498 + ], + [ + -117.864, + 10.635 + ], + [ + -108.971, + 11.506 + ], + [ + -107.167, + 11.61 + ], + [ + -103.333, + 11.61 + ], + [ + -102.827, + 11.56 + ], + [ + -92.3, + 10.584 + ], + [ + -79.789, + 7.549 + ], + [ + -59.57, + -2.862 + ], + [ + -47.388, + -14.757 + ], + [ + -38.06, + -34.133 + ], + [ + -36.92, + -41.656 + ] + ], + "c": true + } + ] + }, + { + "i": { + "x": 0.308, + "y": 1 + }, + "o": { + "x": 0.703, + "y": 0 + }, + "n": "0p308_1_0p703_0", + "t": 71.144, + "s": [ + { + "i": [ + [ + -0.044, + 0.566 + ], + [ + 0, + 0.797 + ], + [ + 0.009, + 0.092 + ], + [ + 0.473, + 1.052 + ], + [ + 2.267, + 1.723 + ], + [ + 3.546, + 1.383 + ], + [ + 4.958, + 1.036 + ], + [ + 5.038, + 0.506 + ], + [ + 3.295, + 0.201 + ], + [ + 3.27, + 0.122 + ], + [ + 0.157, + 0.015 + ], + [ + 2.008, + 0 + ], + [ + 0.123, + -0.004 + ], + [ + 2.525, + -0.137 + ], + [ + 3.032, + -0.3 + ], + [ + 3.359, + -0.467 + ], + [ + 3.986, + -0.994 + ], + [ + 4.243, + -1.98 + ], + [ + 2.404, + -2.298 + ], + [ + 0.547, + -2.511 + ], + [ + 0.082, + -0.477 + ], + [ + 0, + -0.797 + ], + [ + -0.009, + -0.122 + ], + [ + -0.09, + -0.954 + ], + [ + -0.77, + -2.696 + ], + [ + -4.189, + -5.385 + ], + [ + -7.486, + -4.304 + ], + [ + -9.579, + -1.491 + ], + [ + -2.987, + -0.129 + ], + [ + -0.602, + -0.035 + ], + [ + -1.278, + 0 + ], + [ + -0.169, + 0.005 + ], + [ + -3.481, + 0.546 + ], + [ + -4.049, + 1.347 + ], + [ + -6.01, + 4.45 + ], + [ + -3.397, + 4.433 + ], + [ + -1.64, + 6.947 + ], + [ + -0.167, + 2.53 + ] + ], + "o": [ + [ + 0, + -0.797 + ], + [ + -0.023, + -0.091 + ], + [ + -0.106, + -1.121 + ], + [ + -1.087, + -2.417 + ], + [ + -2.906, + -2.208 + ], + [ + -4.636, + -1.808 + ], + [ + -4.922, + -1.029 + ], + [ + -3.281, + -0.33 + ], + [ + -3.263, + -0.199 + ], + [ + -0.158, + -0.006 + ], + [ + -2.008, + 0 + ], + [ + -0.123, + 0.014 + ], + [ + -2.53, + 0.082 + ], + [ + -3.048, + 0.165 + ], + [ + -3.381, + 0.335 + ], + [ + -4.103, + 0.571 + ], + [ + -4.648, + 1.159 + ], + [ + -3.171, + 1.48 + ], + [ + -1.997, + 1.909 + ], + [ + -0.103, + 0.473 + ], + [ + 0, + 0.797 + ], + [ + 0.02, + 0.121 + ], + [ + 0.072, + 0.955 + ], + [ + 0.261, + 2.763 + ], + [ + 1.783, + 6.242 + ], + [ + 4.941, + 6.352 + ], + [ + 8.015, + 4.608 + ], + [ + 2.94, + 0.458 + ], + [ + 0.602, + 0.026 + ], + [ + 1.278, + 0 + ], + [ + 0.169, + -0.017 + ], + [ + 3.538, + -0.113 + ], + [ + 4.291, + -0.673 + ], + [ + 7.471, + -2.485 + ], + [ + 4.723, + -3.497 + ], + [ + 4.574, + -5.97 + ], + [ + 0.587, + -2.486 + ], + [ + 0.037, + -0.566 + ] + ], + "v": [ + [ + -36.789, + -43.354 + ], + [ + -36.789, + -45.744 + ], + [ + -36.856, + -46.019 + ], + [ + -37.73, + -49.279 + ], + [ + -42.925, + -55.398 + ], + [ + -52.719, + -60.643 + ], + [ + -67.157, + -64.804 + ], + [ + -82.094, + -67.138 + ], + [ + -91.959, + -67.967 + ], + [ + -101.766, + -68.346 + ], + [ + -102.238, + -68.39 + ], + [ + -108.262, + -68.39 + ], + [ + -108.631, + -68.349 + ], + [ + -116.22, + -68.095 + ], + [ + -125.351, + -67.445 + ], + [ + -135.461, + -66.212 + ], + [ + -147.59, + -63.828 + ], + [ + -161, + -59.264 + ], + [ + -169.508, + -53.749 + ], + [ + -173.463, + -47.173 + ], + [ + -173.711, + -45.744 + ], + [ + -173.711, + -43.354 + ], + [ + -173.652, + -42.991 + ], + [ + -173.44, + -40.125 + ], + [ + -171.868, + -31.94 + ], + [ + -162.909, + -14.495 + ], + [ + -144.266, + 1.498 + ], + [ + -117.864, + 10.635 + ], + [ + -108.971, + 11.506 + ], + [ + -107.167, + 11.61 + ], + [ + -103.333, + 11.61 + ], + [ + -102.827, + 11.56 + ], + [ + -92.3, + 10.584 + ], + [ + -79.789, + 7.549 + ], + [ + -59.57, + -2.862 + ], + [ + -47.388, + -14.757 + ], + [ + -38.06, + -34.133 + ], + [ + -36.92, + -41.656 + ] + ], + "c": true + } + ], + "e": [ + { + "i": [ + [ + -0.081, + 0.416 + ], + [ + 0, + 0.614 + ], + [ + 0.017, + 0.114 + ], + [ + 4.432, + 1.114 + ], + [ + 0.455, + 0.099 + ], + [ + 0.63, + 0 + ], + [ + 0.118, + -0.012 + ], + [ + 1.098, + -0.552 + ], + [ + 5.005, + -1.792 + ], + [ + 17.596, + -1.761 + ], + [ + 5.449, + -0.216 + ], + [ + 10.022, + 0.979 + ], + [ + 5.427, + 0.928 + ], + [ + 9.789, + 3.142 + ], + [ + 6.284, + 3.051 + ], + [ + 0.79, + 0.255 + ], + [ + 0.915, + 0.206 + ], + [ + 0.63, + 0 + ], + [ + 0.098, + -0.016 + ], + [ + 1.538, + -3.764 + ], + [ + 0.246, + -0.951 + ], + [ + 0, + -0.58 + ], + [ + -0.022, + -0.149 + ], + [ + -2.832, + -1.687 + ], + [ + -1.661, + -0.753 + ], + [ + -10.509, + -2.813 + ], + [ + -8.427, + -1.306 + ], + [ + -5.769, + -0.425 + ], + [ + -5.447, + -0.289 + ], + [ + -0.241, + -0.027 + ], + [ + -3.43, + 0 + ], + [ + -0.312, + 0.015 + ], + [ + -4.293, + 0.255 + ], + [ + -5.555, + 0.778 + ], + [ + -6.003, + 1.316 + ], + [ + -9.441, + 3.427 + ], + [ + -5.316, + 2.752 + ], + [ + -0.737, + 3.161 + ] + ], + "o": [ + [ + 0, + -0.614 + ], + [ + -0.035, + -0.111 + ], + [ + -0.645, + -4.395 + ], + [ + -0.451, + -0.113 + ], + [ + -0.63, + 0 + ], + [ + -0.116, + 0.032 + ], + [ + -1.23, + 0.122 + ], + [ + -4.743, + 2.385 + ], + [ + -16.622, + 5.95 + ], + [ + -5.424, + 0.543 + ], + [ + -10.064, + 0.399 + ], + [ + -5.48, + -0.536 + ], + [ + -10.152, + -1.736 + ], + [ + -6.661, + -2.138 + ], + [ + -0.75, + -0.364 + ], + [ + -0.888, + -0.287 + ], + [ + -0.63, + 0 + ], + [ + -0.095, + 0.034 + ], + [ + -4.089, + 0.654 + ], + [ + -0.369, + 0.903 + ], + [ + 0, + 0.58 + ], + [ + 0.038, + 0.147 + ], + [ + 0.472, + 3.212 + ], + [ + 1.56, + 0.929 + ], + [ + 9.893, + 4.481 + ], + [ + 8.226, + 2.203 + ], + [ + 5.716, + 0.886 + ], + [ + 5.438, + 0.4 + ], + [ + 0.242, + 0.013 + ], + [ + 3.43, + 0 + ], + [ + 0.311, + -0.029 + ], + [ + 4.296, + -0.209 + ], + [ + 5.604, + -0.333 + ], + [ + 6.089, + -0.852 + ], + [ + 9.827, + -2.154 + ], + [ + 5.635, + -2.045 + ], + [ + 2.928, + -1.516 + ], + [ + 0.096, + -0.413 + ] + ], + "v": [ + [ + -0.25, + -37.45 + ], + [ + -0.25, + -39.292 + ], + [ + -0.352, + -39.627 + ], + [ + -8.441, + -48.41 + ], + [ + -9.805, + -48.71 + ], + [ + -11.695, + -48.71 + ], + [ + -12.043, + -48.617 + ], + [ + -15.549, + -47.635 + ], + [ + -30.201, + -41.435 + ], + [ + -81.575, + -30.008 + ], + [ + -97.904, + -28.937 + ], + [ + -128.04, + -29.897 + ], + [ + -144.399, + -32.098 + ], + [ + -174.316, + -39.388 + ], + [ + -193.782, + -47.058 + ], + [ + -196.066, + -48.073 + ], + [ + -198.805, + -48.71 + ], + [ + -200.695, + -48.71 + ], + [ + -200.982, + -48.612 + ], + [ + -209.494, + -42.035 + ], + [ + -210.25, + -39.19 + ], + [ + -210.25, + -37.45 + ], + [ + -210.139, + -37.008 + ], + [ + -205.218, + -29.585 + ], + [ + -200.329, + -27.133 + ], + [ + -169.658, + -16.368 + ], + [ + -144.675, + -11.119 + ], + [ + -127.458, + -9.034 + ], + [ + -111.119, + -8.149 + ], + [ + -110.395, + -8.07 + ], + [ + -100.105, + -8.07 + ], + [ + -99.172, + -8.154 + ], + [ + -86.283, + -8.786 + ], + [ + -69.554, + -10.561 + ], + [ + -51.415, + -13.81 + ], + [ + -22.49, + -22.107 + ], + [ + -5.996, + -29.157 + ], + [ + -0.494, + -36.201 + ] + ], + "c": true + } + ] + }, + { + "t": 75 + } + ] + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group" + }, + { + "ty": "fl", + "fillEnabled": true, + "c": { + "k": [ + 0, + 0, + 0, + 1 + ] + }, + "o": { + "k": 100 + }, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill" + }, + { + "ty": "tr", + "p": { + "k": [ + 105.25, + 28.39 + ], + "ix": 2 + }, + "a": { + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 1", + "np": 2, + "mn": "ADBE Vector Group" + } + ], + "ip": 0, + "op": 78, + "st": 0, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 5, + "ty": 4, + "nm": "nose", + "ks": { + "o": { + "k": 100 + }, + "r": { + "k": 0 + }, + "p": { + "k": [ + 503.498, + 680.02, + 0 + ] + }, + "a": { + "k": [ + 42.233, + 29.174, + 0 + ] + }, + "s": { + "k": [ + 100, + 100, + 100 + ] + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ + -3.557, + 23.651 + ], + [ + -14.41, + -16.492 + ], + [ + 16.97, + -2.701 + ] + ], + "o": [ + [ + 2.439, + -16.225 + ], + [ + 14.41, + 16.492 + ], + [ + -16.971, + 2.7 + ] + ], + "v": [ + [ + -38.426, + -12.003 + ], + [ + 27.573, + -12.432 + ], + [ + -1.301, + 26.225 + ] + ], + "c": true + } + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group" + }, + { + "ty": "fl", + "fillEnabled": true, + "c": { + "k": [ + 0, + 0, + 0, + 1 + ] + }, + "o": { + "k": 100 + }, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill" + }, + { + "ty": "tr", + "p": { + "k": [ + 42.233, + 29.175 + ], + "ix": 2 + }, + "a": { + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 1", + "np": 2, + "mn": "ADBE Vector Group" + } + ], + "ip": 0, + "op": 78, + "st": 0, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 6, + "ty": 3, + "nm": "eye_pupil_controller", + "ks": { + "o": { + "k": 0 + }, + "r": { + "k": 0 + }, + "p": { + "k": [ + { + "i": { + "x": 0.833, + "y": 0.833 + }, + "o": { + "x": 0.167, + "y": 0 + }, + "n": "0p833_0p833_0p167_0", + "t": 0, + "s": [ + 481, + 519.5, + 0 + ], + "e": [ + 459.5, + 527, + 0 + ], + "to": [ + 0, + 0, + 0 + ], + "ti": [ + -4.03295516967773, + -4.07727336883545, + 0 + ] + }, + { + "i": { + "x": 0.833, + "y": 0.833 + }, + "o": { + "x": 0.167, + "y": 0.167 + }, + "n": "0p833_0p833_0p167_0p167", + "t": 4, + "s": [ + 459.5, + 527, + 0 + ], + "e": [ + 481.875, + 531.25, + 0 + ], + "to": [ + 3.79166674613953, + 3.83333325386047, + 0 + ], + "ti": [ + -11.1676235198975, + 0.20281778275967, + 0 + ] + }, + { + "i": { + "x": 0.833, + "y": 0.833 + }, + "o": { + "x": 0.167, + "y": 0.167 + }, + "n": "0p833_0p833_0p167_0p167", + "t": 13, + "s": [ + 481.875, + 531.25, + 0 + ], + "e": [ + 506.5, + 524, + 0 + ], + "to": [ + 11.9174766540527, + -0.21643604338169, + 0 + ], + "ti": [ + -6.04166650772095, + 4.625, + 0 + ] + }, + { + "i": { + "x": 0.667, + "y": 1 + }, + "o": { + "x": 0.167, + "y": 0.167 + }, + "n": "0p667_1_0p167_0p167", + "t": 22, + "s": [ + 506.5, + 524, + 0 + ], + "e": [ + 481, + 519.5, + 0 + ], + "to": [ + 5.39564085006714, + -4.13045644760132, + 0 + ], + "ti": [ + 0, + 0, + 0 + ] + }, + { + "i": { + "x": 0.667, + "y": 0.667 + }, + "o": { + "x": 0.167, + "y": 0.167 + }, + "n": "0p667_0p667_0p167_0p167", + "t": 29, + "s": [ + 481, + 519.5, + 0 + ], + "e": [ + 481, + 519.5, + 0 + ], + "to": [ + 0, + 0, + 0 + ], + "ti": [ + 0, + 0, + 0 + ] + }, + { + "i": { + "x": 0.667, + "y": 0.667 + }, + "o": { + "x": 0.167, + "y": 0.167 + }, + "n": "0p667_0p667_0p167_0p167", + "t": 59, + "s": [ + 481, + 519.5, + 0 + ], + "e": [ + 481, + 519.5, + 0 + ], + "to": [ + 0, + 0, + 0 + ], + "ti": [ + 0, + 0, + 0 + ] + }, + { + "i": { + "x": 0.667, + "y": 1 + }, + "o": { + "x": 0.167, + "y": 0 + }, + "n": "0p667_1_0p167_0", + "t": 60.667, + "s": [ + 481, + 519.5, + 0 + ], + "e": [ + 483.5, + 535, + 0 + ], + "to": [ + 0, + 0, + 0 + ], + "ti": [ + 0, + 0, + 0 + ] + }, + { + "i": { + "x": 0.667, + "y": 1 + }, + "o": { + "x": 0.167, + "y": 0 + }, + "n": "0p667_1_0p167_0", + "t": 69, + "s": [ + 483.5, + 535, + 0 + ], + "e": [ + 481, + 519.5, + 0 + ], + "to": [ + 0, + 0, + 0 + ], + "ti": [ + 0, + 0, + 0 + ] + }, + { + "i": { + "x": 0.667, + "y": 0.667 + }, + "o": { + "x": 0.167, + "y": 0.167 + }, + "n": "0p667_0p667_0p167_0p167", + "t": 71.682, + "s": [ + 481, + 519.5, + 0 + ], + "e": [ + 481, + 519.5, + 0 + ], + "to": [ + 0, + 0, + 0 + ], + "ti": [ + 0, + 0, + 0 + ] + }, + { + "t": 74 + } + ] + }, + "a": { + "k": [ + 0, + 0, + 0 + ] + }, + "s": { + "k": [ + 100, + 100, + 100 + ] + } + }, + "ao": 0, + "ip": 0, + "op": 78, + "st": 0, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 7, + "ty": 4, + "nm": "eye_pupil_left", + "parent": 6, + "ks": { + "o": { + "k": 100 + }, + "r": { + "k": 0 + }, + "p": { + "k": [ + -136.393, + 117.431, + 0 + ] + }, + "a": { + "k": [ + 15.684, + 15.18, + 0 + ] + }, + "s": { + "k": [ + 170, + 170, + 100 + ] + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ + -0.518, + 0.056 + ], + [ + -3.048, + -3.18 + ], + [ + -0.381, + -3.103 + ], + [ + 2.85, + -3.249 + ], + [ + 3.341, + -0.639 + ], + [ + 3.717, + 2.785 + ], + [ + 0.788, + 3.507 + ], + [ + -0.239, + 1.647 + ], + [ + -3.323, + 2.447 + ], + [ + -2.342, + 0.372 + ] + ], + "o": [ + [ + 4.772, + 0.078 + ], + [ + 2.154, + 2.248 + ], + [ + 0.529, + 4.306 + ], + [ + -2.252, + 2.566 + ], + [ + -4.542, + 0.869 + ], + [ + -2.871, + -2.151 + ], + [ + -0.363, + -1.619 + ], + [ + 0.597, + -4.113 + ], + [ + 1.905, + -1.403 + ], + [ + 0.89, + -0.142 + ] + ], + "v": [ + [ + -0.538, + -14.93 + ], + [ + 11.057, + -10.14 + ], + [ + 14.905, + -2.099 + ], + [ + 11.371, + 9.246 + ], + [ + 2.932, + 14.061 + ], + [ + -9.513, + 11.235 + ], + [ + -15.01, + 2.721 + ], + [ + -15.194, + -2.185 + ], + [ + -9.237, + -11.996 + ], + [ + -2.849, + -14.672 + ] + ], + "c": true + } + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group" + }, + { + "ty": "fl", + "fillEnabled": true, + "c": { + "k": [ + 1, + 1, + 1, + 1 + ] + }, + "o": { + "k": 100 + }, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill" + }, + { + "ty": "tr", + "p": { + "k": [ + 15.683, + 15.18 + ], + "ix": 2 + }, + "a": { + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 1", + "np": 2, + "mn": "ADBE Vector Group" + } + ], + "ip": 0, + "op": 78, + "st": 0, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 8, + "ty": 4, + "nm": "eye_pupil_right", + "parent": 6, + "ks": { + "o": { + "k": 100 + }, + "r": { + "k": 0 + }, + "p": { + "k": [ + 172.459, + 117.431, + 0 + ] + }, + "a": { + "k": [ + 15.684, + 15.18, + 0 + ] + }, + "s": { + "k": [ + 170, + 170, + 100 + ] + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ + -0.519, + 0.056 + ], + [ + -3.048, + -3.18 + ], + [ + -0.38, + -3.103 + ], + [ + 2.851, + -3.249 + ], + [ + 3.341, + -0.639 + ], + [ + 3.717, + 2.785 + ], + [ + 0.787, + 3.507 + ], + [ + -0.24, + 1.647 + ], + [ + -3.323, + 2.447 + ], + [ + -2.341, + 0.372 + ] + ], + "o": [ + [ + 4.771, + 0.078 + ], + [ + 2.154, + 2.248 + ], + [ + 0.53, + 4.306 + ], + [ + -2.252, + 2.566 + ], + [ + -4.542, + 0.869 + ], + [ + -2.87, + -2.151 + ], + [ + -0.364, + -1.619 + ], + [ + 0.597, + -4.113 + ], + [ + 1.904, + -1.403 + ], + [ + 0.89, + -0.142 + ] + ], + "v": [ + [ + -0.538, + -14.93 + ], + [ + 11.058, + -10.14 + ], + [ + 14.904, + -2.099 + ], + [ + 11.371, + 9.246 + ], + [ + 2.933, + 14.061 + ], + [ + -9.514, + 11.235 + ], + [ + -15.01, + 2.721 + ], + [ + -15.194, + -2.185 + ], + [ + -9.236, + -11.996 + ], + [ + -2.85, + -14.672 + ] + ], + "c": true + } + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group" + }, + { + "ty": "fl", + "fillEnabled": true, + "c": { + "k": [ + 1, + 1, + 1, + 1 + ] + }, + "o": { + "k": 100 + }, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill" + }, + { + "ty": "tr", + "p": { + "k": [ + 15.684, + 15.18 + ], + "ix": 2 + }, + "a": { + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 1", + "np": 2, + "mn": "ADBE Vector Group" + } + ], + "ip": 0, + "op": 78, + "st": 0, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 9, + "ty": 4, + "nm": "eyeball_left", + "ks": { + "o": { + "k": 100 + }, + "r": { + "k": 0 + }, + "p": { + "k": [ + 345.573, + 632.847, + 0 + ] + }, + "a": { + "k": [ + 65.824, + 65.826, + 0 + ] + }, + "s": { + "k": [ + 100, + 100, + 100 + ] + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ + 36.218, + 0 + ], + [ + 0, + -36.212 + ], + [ + -36.219, + 0 + ], + [ + 0, + 36.219 + ] + ], + "o": [ + [ + -36.219, + 0 + ], + [ + 0, + 36.219 + ], + [ + 36.218, + 0 + ], + [ + 0, + -36.212 + ] + ], + "v": [ + [ + 0.002, + -65.576 + ], + [ + -65.574, + -0.003 + ], + [ + 0.002, + 65.576 + ], + [ + 65.574, + -0.003 + ] + ], + "c": true + } + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group" + }, + { + "ind": 1, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ + -27.336, + 0 + ], + [ + 0, + -27.335 + ], + [ + 27.334, + 0 + ], + [ + 0, + 27.338 + ] + ], + "o": [ + [ + 27.334, + 0 + ], + [ + 0, + 27.338 + ], + [ + -27.336, + 0 + ], + [ + 0, + -27.335 + ] + ], + "v": [ + [ + 0.002, + -49.576 + ], + [ + 49.574, + -0.003 + ], + [ + 0.002, + 49.576 + ], + [ + -49.574, + -0.003 + ] + ], + "c": true + } + }, + "nm": "Path 2", + "mn": "ADBE Vector Shape - Group" + }, + { + "ty": "mm", + "mm": 1, + "nm": "Merge Paths 1", + "mn": "ADBE Vector Filter - Merge" + }, + { + "ty": "fl", + "fillEnabled": true, + "c": { + "k": [ + 1, + 1, + 1, + 1 + ] + }, + "o": { + "k": 100 + }, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill" + }, + { + "ty": "tr", + "p": { + "k": [ + 65.824, + 65.826 + ], + "ix": 2 + }, + "a": { + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 1", + "np": 4, + "mn": "ADBE Vector Group" + }, + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ + 31.746, + 0 + ], + [ + 0, + 31.749 + ], + [ + -31.748, + 0 + ], + [ + 0, + -31.745 + ] + ], + "o": [ + [ + -31.748, + 0 + ], + [ + 0, + -31.745 + ], + [ + 31.746, + 0 + ], + [ + 0, + 31.749 + ] + ], + "v": [ + [ + 0.002, + 57.576 + ], + [ + -57.575, + -0.003 + ], + [ + 0.002, + -57.576 + ], + [ + 57.575, + -0.003 + ] + ], + "c": true + } + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group" + }, + { + "ty": "fl", + "fillEnabled": true, + "c": { + "k": [ + 0, + 0, + 0, + 1 + ] + }, + "o": { + "k": 100 + }, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill" + }, + { + "ty": "tr", + "p": { + "k": [ + 65.824, + 65.826 + ], + "ix": 2 + }, + "a": { + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 2", + "np": 2, + "mn": "ADBE Vector Group" + } + ], + "ip": 0, + "op": 78, + "st": 0, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 10, + "ty": 4, + "nm": "eyeball_right", + "ks": { + "o": { + "k": 100 + }, + "r": { + "k": 0 + }, + "p": { + "k": [ + 654.426, + 632.847, + 0 + ] + }, + "a": { + "k": [ + 65.824, + 65.826, + 0 + ] + }, + "s": { + "k": [ + 100, + 100, + 100 + ] + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ + 36.218, + 0 + ], + [ + 0, + -36.212 + ], + [ + -36.219, + 0 + ], + [ + 0, + 36.219 + ] + ], + "o": [ + [ + -36.219, + 0 + ], + [ + 0, + 36.219 + ], + [ + 36.218, + 0 + ], + [ + 0, + -36.212 + ] + ], + "v": [ + [ + 0.002, + -65.576 + ], + [ + -65.574, + -0.003 + ], + [ + 0.002, + 65.576 + ], + [ + 65.574, + -0.003 + ] + ], + "c": true + } + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group" + }, + { + "ind": 1, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ + -27.337, + 0 + ], + [ + 0, + -27.335 + ], + [ + 27.334, + 0 + ], + [ + 0, + 27.338 + ] + ], + "o": [ + [ + 27.334, + 0 + ], + [ + 0, + 27.338 + ], + [ + -27.337, + 0 + ], + [ + 0, + -27.335 + ] + ], + "v": [ + [ + 0.002, + -49.576 + ], + [ + 49.574, + -0.003 + ], + [ + 0.002, + 49.576 + ], + [ + -49.574, + -0.003 + ] + ], + "c": true + } + }, + "nm": "Path 2", + "mn": "ADBE Vector Shape - Group" + }, + { + "ty": "mm", + "mm": 1, + "nm": "Merge Paths 1", + "mn": "ADBE Vector Filter - Merge" + }, + { + "ty": "fl", + "fillEnabled": true, + "c": { + "k": [ + 1, + 1, + 1, + 1 + ] + }, + "o": { + "k": 100 + }, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill" + }, + { + "ty": "tr", + "p": { + "k": [ + 65.824, + 65.826 + ], + "ix": 2 + }, + "a": { + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 1", + "np": 4, + "mn": "ADBE Vector Group" + }, + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ + 31.745, + 0 + ], + [ + 0, + 31.749 + ], + [ + -31.748, + 0 + ], + [ + 0, + -31.745 + ] + ], + "o": [ + [ + -31.748, + 0 + ], + [ + 0, + -31.745 + ], + [ + 31.745, + 0 + ], + [ + 0, + 31.749 + ] + ], + "v": [ + [ + 0.002, + 57.576 + ], + [ + -57.574, + -0.003 + ], + [ + 0.002, + -57.576 + ], + [ + 57.574, + -0.003 + ] + ], + "c": true + } + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group" + }, + { + "ty": "fl", + "fillEnabled": true, + "c": { + "k": [ + 0, + 0, + 0, + 1 + ] + }, + "o": { + "k": 100 + }, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill" + }, + { + "ty": "tr", + "p": { + "k": [ + 65.824, + 65.826 + ], + "ix": 2 + }, + "a": { + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 2", + "np": 2, + "mn": "ADBE Vector Group" + } + ], + "ip": 0, + "op": 78, + "st": 0, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 11, + "ty": 4, + "nm": "cheek_left", + "ks": { + "o": { + "k": 100 + }, + "r": { + "k": 0 + }, + "p": { + "k": [ + 268.359, + 718.298, + 0 + ] + }, + "a": { + "k": [ + 37.624, + 37.625, + 0 + ] + }, + "s": { + "k": [ + 100, + 100, + 100 + ] + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ + 0, + -20.645 + ], + [ + 20.64, + 0 + ], + [ + 0, + 20.637 + ], + [ + -20.645, + 0 + ] + ], + "o": [ + [ + 0, + 20.637 + ], + [ + -20.645, + 0 + ], + [ + 0, + -20.645 + ], + [ + 20.64, + 0 + ] + ], + "v": [ + [ + 37.374, + 0 + ], + [ + 0.002, + 37.375 + ], + [ + -37.374, + 0 + ], + [ + 0.002, + -37.375 + ] + ], + "c": true + } + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group" + }, + { + "ty": "fl", + "fillEnabled": true, + "c": { + "k": [ + 1, + 0.74, + 0.75, + 1 + ] + }, + "o": { + "k": 100 + }, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill" + }, + { + "ty": "tr", + "p": { + "k": [ + 37.624, + 37.626 + ], + "ix": 2 + }, + "a": { + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 1", + "np": 2, + "mn": "ADBE Vector Group" + } + ], + "ip": 0, + "op": 78, + "st": 0, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 12, + "ty": 4, + "nm": "cheek_right", + "ks": { + "o": { + "k": 100 + }, + "r": { + "k": 0 + }, + "p": { + "k": [ + 731.64, + 718.298, + 0 + ] + }, + "a": { + "k": [ + 37.622, + 37.625, + 0 + ] + }, + "s": { + "k": [ + 100, + 100, + 100 + ] + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ + 0, + -20.645 + ], + [ + 20.645, + 0 + ], + [ + 0, + 20.637 + ], + [ + -20.637, + 0 + ] + ], + "o": [ + [ + 0, + 20.637 + ], + [ + -20.637, + 0 + ], + [ + 0, + -20.645 + ], + [ + 20.645, + 0 + ] + ], + "v": [ + [ + 37.372, + 0 + ], + [ + -0.004, + 37.375 + ], + [ + -37.372, + 0 + ], + [ + -0.004, + -37.375 + ] + ], + "c": true + } + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group" + }, + { + "ty": "fl", + "fillEnabled": true, + "c": { + "k": [ + 1, + 0.74, + 0.75, + 1 + ] + }, + "o": { + "k": 100 + }, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill" + }, + { + "ty": "tr", + "p": { + "k": [ + 37.622, + 37.626 + ], + "ix": 2 + }, + "a": { + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 1", + "np": 2, + "mn": "ADBE Vector Group" + } + ], + "ip": 0, + "op": 78, + "st": 0, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 13, + "ty": 4, + "nm": "face", + "ks": { + "o": { + "k": 100 + }, + "r": { + "k": 0 + }, + "p": { + "k": [ + 499.999, + 618.729, + 0 + ] + }, + "a": { + "k": [ + 321.693, + 269.521, + 0 + ] + }, + "s": { + "k": [ + 100, + 100, + 100 + ] + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ + -16.966, + -150.969 + ], + [ + 183.631, + 0 + ], + [ + -19.111, + 170.049 + ], + [ + -151.907, + 0 + ] + ], + "o": [ + [ + 19.111, + 170.049 + ], + [ + -183.64, + 0 + ], + [ + 16.966, + -150.969 + ], + [ + 151.905, + 0 + ] + ], + "v": [ + [ + 302.333, + 0.828 + ], + [ + 0.003, + 269.271 + ], + [ + -302.332, + 0.828 + ], + [ + 0.003, + -269.271 + ] + ], + "c": true + } + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group" + }, + { + "ty": "fl", + "fillEnabled": true, + "c": { + "k": [ + 0.94, + 0.94, + 0.94, + 1 + ] + }, + "o": { + "k": 100 + }, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill" + }, + { + "ty": "tr", + "p": { + "k": [ + 321.693, + 269.521 + ], + "ix": 2 + }, + "a": { + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 1", + "np": 2, + "mn": "ADBE Vector Group" + } + ], + "ip": 0, + "op": 78, + "st": 0, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 14, + "ty": 4, + "nm": "ear_right", + "ks": { + "o": { + "k": 100 + }, + "r": { + "k": 0 + }, + "p": { + "k": [ + 763.547, + 347.608, + 0 + ] + }, + "a": { + "k": [ + 121.241, + 208.634, + 0 + ] + }, + "s": { + "k": [ + 100, + 100, + 100 + ] + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ + 0, + 0 + ], + [ + -36.779, + 4.6 + ], + [ + 71.08, + -141.307 + ] + ], + "o": [ + [ + 0, + 0 + ], + [ + 36.786, + -4.592 + ], + [ + 0, + 0 + ] + ], + "v": [ + [ + -58.273, + 77.218 + ], + [ + 7.089, + -105.401 + ], + [ + -12.807, + 109.993 + ] + ], + "c": true + } + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group" + }, + { + "ty": "fl", + "fillEnabled": true, + "c": { + "k": [ + 1, + 0.74, + 0.75, + 1 + ] + }, + "o": { + "k": 100 + }, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill" + }, + { + "ty": "tr", + "p": { + "k": [ + 88.503, + 211.259 + ], + "ix": 2 + }, + "a": { + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 1", + "np": 2, + "mn": "ADBE Vector Group" + }, + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ + 0, + 0 + ], + [ + -81.399, + 7.085 + ], + [ + 168.251, + -305.441 + ] + ], + "o": [ + [ + 0, + 0 + ], + [ + 81.407, + -7.093 + ], + [ + 0, + 0 + ] + ], + "v": [ + [ + -120.991, + 60.422 + ], + [ + -19.402, + -201.291 + ], + [ + -47.26, + 208.384 + ] + ], + "c": true + } + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group" + }, + { + "ty": "fl", + "fillEnabled": true, + "c": { + "k": [ + 0.94, + 0.94, + 0.94, + 1 + ] + }, + "o": { + "k": 100 + }, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill" + }, + { + "ty": "tr", + "p": { + "k": [ + 121.241, + 208.634 + ], + "ix": 2 + }, + "a": { + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 2", + "np": 2, + "mn": "ADBE Vector Group" + } + ], + "ip": 0, + "op": 78, + "st": 0, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 15, + "ty": 4, + "nm": "ear_left", + "ks": { + "o": { + "k": 100 + }, + "r": { + "k": 0 + }, + "p": { + "k": [ + 236.452, + 347.608, + 0 + ] + }, + "a": { + "k": [ + 121.236, + 208.634, + 0 + ] + }, + "s": { + "k": [ + 100, + 100, + 100 + ] + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ + 0, + 0 + ], + [ + 36.779, + 4.6 + ], + [ + -71.08, + -141.307 + ] + ], + "o": [ + [ + 0, + 0 + ], + [ + -36.779, + -4.592 + ], + [ + 0, + 0 + ] + ], + "v": [ + [ + 58.275, + 77.218 + ], + [ + -7.091, + -105.401 + ], + [ + 12.805, + 109.993 + ] + ], + "c": true + } + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group" + }, + { + "ty": "fl", + "fillEnabled": true, + "c": { + "k": [ + 1, + 0.74, + 0.75, + 1 + ] + }, + "o": { + "k": 100 + }, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill" + }, + { + "ty": "tr", + "p": { + "k": [ + 153.974, + 211.259 + ], + "ix": 2 + }, + "a": { + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 1", + "np": 2, + "mn": "ADBE Vector Group" + }, + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ + 0, + 0 + ], + [ + 81.41, + 7.085 + ], + [ + -168.248, + -305.441 + ] + ], + "o": [ + [ + 0, + 0 + ], + [ + -81.399, + -7.093 + ], + [ + 0, + 0 + ] + ], + "v": [ + [ + 120.986, + 60.422 + ], + [ + 19.392, + -201.291 + ], + [ + 47.262, + 208.384 + ] + ], + "c": true + } + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group" + }, + { + "ty": "fl", + "fillEnabled": true, + "c": { + "k": [ + 0.94, + 0.94, + 0.94, + 1 + ] + }, + "o": { + "k": 100 + }, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill" + }, + { + "ty": "tr", + "p": { + "k": [ + 121.236, + 208.634 + ], + "ix": 2 + }, + "a": { + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 2", + "np": 2, + "mn": "ADBE Vector Group" + } + ], + "ip": 0, + "op": 78, + "st": 0, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 16, + "ty": 4, + "nm": "body", + "ks": { + "o": { + "k": 100 + }, + "r": { + "k": 0 + }, + "p": { + "k": [ + 499.697, + 811.329, + 0 + ] + }, + "a": { + "k": [ + 233.907, + 164.921, + 0 + ] + }, + "s": { + "k": [ + 100, + 100, + 100 + ] + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ + 55.823, + 51.688 + ], + [ + 0, + 0 + ], + [ + 24.473, + -75.204 + ], + [ + -85.039, + 0 + ], + [ + -68.954, + 38.859 + ] + ], + "o": [ + [ + -126.866, + -117.468 + ], + [ + 0, + 0 + ], + [ + 69.094, + 39.071 + ], + [ + 84.791, + 0 + ], + [ + -14.957, + -44.737 + ] + ], + "v": [ + [ + 133.898, + -47.203 + ], + [ + -164.471, + -30.757 + ], + [ + -233.657, + 103.292 + ], + [ + 0.303, + 164.671 + ], + [ + 233.657, + 103.636 + ] + ], + "c": true + } + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group" + }, + { + "ty": "fl", + "fillEnabled": true, + "c": { + "k": [ + 0.94, + 0.94, + 0.94, + 1 + ] + }, + "o": { + "k": 100 + }, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill" + }, + { + "ty": "tr", + "p": { + "k": [ + 233.907, + 164.921 + ], + "ix": 2 + }, + "a": { + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 1", + "np": 2, + "mn": "ADBE Vector Group" + } + ], + "ip": 0, + "op": 78, + "st": 0, + "bm": 0, + "sr": 1 + }, + { + "ddd": 0, + "ind": 17, + "ty": 4, + "nm": "bg", + "ks": { + "o": { + "k": 100 + }, + "r": { + "k": 0 + }, + "p": { + "k": [ + 500, + 500, + 0 + ] + }, + "a": { + "k": [ + 476.25, + 476.25, + 0 + ] + }, + "s": { + "k": [ + 100, + 100, + 100 + ] + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ks": { + "k": { + "i": [ + [ + 0, + 262.888 + ], + [ + 262.888, + 0 + ], + [ + 0, + -262.888 + ], + [ + -262.888, + 0 + ] + ], + "o": [ + [ + 0, + -262.888 + ], + [ + -262.888, + 0 + ], + [ + 0, + 262.888 + ], + [ + 262.888, + 0 + ] + ], + "v": [ + [ + 476, + 0 + ], + [ + 0, + -476 + ], + [ + -476, + 0 + ], + [ + 0, + 476 + ] + ], + "c": true + } + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group" + }, + { + "ty": "fl", + "fillEnabled": true, + "c": { + "k": [ + 0.62, + 0.79, + 0.81, + 1 + ] + }, + "o": { + "k": 100 + }, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill" + }, + { + "ty": "tr", + "p": { + "k": [ + 476.25, + 476.25 + ], + "ix": 2 + }, + "a": { + "k": [ + 0, + 0 + ], + "ix": 1 + }, + "s": { + "k": [ + 100, + 100 + ], + "ix": 3 + }, + "r": { + "k": 0, + "ix": 6 + }, + "o": { + "k": 100, + "ix": 7 + }, + "sk": { + "k": 0, + "ix": 4 + }, + "sa": { + "k": 0, + "ix": 5 + }, + "nm": "Transform" + } + ], + "nm": "Group 1", + "np": 2, + "mn": "ADBE Vector Group" + } + ], + "ip": 0, + "op": 78, + "st": 0, + "bm": 0, + "sr": 1 + } + ], + "v": "4.5.3", + "ddd": 0, + "ip": 0, + "op": 78, + "fr": 25, + "w": 1000, + "h": 1000 +} \ No newline at end of file diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 65f18b287..754921270 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -5,6 +5,7 @@ * 深色模式适配导航栏,优化启动效果。 * 适配Android 11键盘弹出动画。 * 商品列表进入编辑页时添加Hero动画。 +* 添加lottie使用demo。 ## 1.1.6 diff --git a/lib/demo/demo_page.dart b/lib/demo/demo_page.dart index e4560ff4a..5facdc0fa 100644 --- a/lib/demo/demo_page.dart +++ b/lib/demo/demo_page.dart @@ -1,8 +1,9 @@ import 'package:flutter/material.dart'; import 'package:flutter_deer/demo/focus/focus_demo_page.dart'; +import 'package:flutter_deer/demo/lottie/lottie_demo.dart'; import 'package:flutter_deer/demo/navigator/books_main.dart'; import 'package:flutter_deer/demo/overlay/overlay_main.dart'; -import 'package:flutter_deer/demo/ripple/home_page.dart'; +import 'package:flutter_deer/demo/ripple/ripples_animation_page.dart'; import 'package:flutter_deer/demo/scratcher/scratch_card_demo_page.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/util/app_navigator.dart'; @@ -38,7 +39,7 @@ class _DemoPageState extends State { ), ClickItem( title: 'RipplesAnimation', - onTap: () => AppNavigator.push(context, const RipplesAnimation()), + onTap: () => AppNavigator.push(context, const RipplesAnimationPage()), ), ClickItem( title: 'Navigator 2.0', @@ -48,6 +49,10 @@ class _DemoPageState extends State { title: 'ScratchCard', onTap: () => AppNavigator.push(context, const ScratchCardDemoPage()), ), + ClickItem( + title: 'Lottie', + onTap: () => AppNavigator.push(context, const LottieDemo()), + ), ], ), ); diff --git a/lib/demo/lottie/bunny.dart b/lib/demo/lottie/bunny.dart new file mode 100644 index 000000000..e9f496e80 --- /dev/null +++ b/lib/demo/lottie/bunny.dart @@ -0,0 +1,132 @@ + +import 'package:flutter/material.dart'; + +class Bunny { + + Bunny(this.controller) { + setNeutralState(); + } + + AnimationController controller; + + /// 各种状态过渡的起始帧数 + static const List _neutral_to_tracking = [4, 22]; + static const List _tracking_to_neutral = [0, 0]; + + static const List _neutral_to_shy = [29, 39]; + static const List _shy_to_neutral = [44, 54]; + + static const List _neutral_to_peek = [76, 68]; + static const List _peek_to_neutral = [68, 76]; + + static const List _shy_to_peek = [59, 68]; + static const List _peek_to_shy = [68, 59]; + + BunnyState currentState = BunnyState.neutral; + + void setNeutralState() { + switch(currentState) { + case BunnyState.neutral: + return; + case BunnyState.tracking: + setMinMaxFrame(_tracking_to_neutral); + break; + case BunnyState.shy: + setMinMaxFrame(_shy_to_neutral); + break; + case BunnyState.peek: + setMinMaxFrame(_peek_to_neutral); + break; + } + + currentState = BunnyState.neutral; + } + + void setShyState() { + switch(currentState) { + case BunnyState.neutral: + case BunnyState.tracking: + setMinMaxFrame(_neutral_to_shy); + break; + case BunnyState.shy: + return; + case BunnyState.peek: + setMinMaxFrame(_peek_to_shy); + break; + } + + currentState = BunnyState.shy; + } + + void setPeekState() { + switch(currentState) { + case BunnyState.neutral: + case BunnyState.tracking: + setMinMaxFrame(_neutral_to_peek); + break; + case BunnyState.shy: + setMinMaxFrame(_shy_to_peek); + break; + case BunnyState.peek: + return; + } + + currentState = BunnyState.peek; + } + + void setTrackingState() { + switch(currentState) { + case BunnyState.neutral: + setMinMaxFrame(_tracking_to_neutral); + break; + case BunnyState.tracking: + return; + case BunnyState.shy: + setMinMaxFrame(_shy_to_neutral); + break; + case BunnyState.peek: + setMinMaxFrame(_peek_to_neutral); + break; + } + + currentState = BunnyState.tracking; + } + + void setEyesPosition(double progress) { + if (currentState != BunnyState.tracking) { + setMinMaxFrame(_tracking_to_neutral); + currentState = BunnyState.tracking; + return; + } + if (progress > 1) { + return; + } + + final double frame = (_neutral_to_tracking[1] - _neutral_to_tracking[0]) * progress; + controller.animateTo(framesToPercentage(frame.toInt() + _neutral_to_tracking[0]), duration: const Duration(milliseconds: 0)); + } + + void setMinMaxFrame(List frames) { + /// 移动至起始帧 + controller.animateTo(framesToPercentage(frames[0]), duration: const Duration(milliseconds: 0)); + /// 动画至结束帧 + controller.animateTo(framesToPercentage(frames[1])); + } + + /// 共77帧。将已知帧数转为百分比 + double framesToPercentage(int frame) { + return frame / 77; + } + +} + +enum BunnyState { + /// 默认状态 + neutral, + /// 跟踪(文字输入) + tracking, + /// 害羞(密码不可见) + shy, + /// 偷看(密码可见) + peek +} \ No newline at end of file diff --git a/lib/demo/lottie/lottie_demo.dart b/lib/demo/lottie/lottie_demo.dart new file mode 100644 index 000000000..710d0e267 --- /dev/null +++ b/lib/demo/lottie/lottie_demo.dart @@ -0,0 +1,232 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_deer/demo/lottie/bunny.dart'; +import 'package:lottie/lottie.dart'; + +/// Android版实现:https://github.com/omarsahl/Flopsy +/// 感谢Flopsy项目提供的思路及素材 +class LottieDemo extends StatefulWidget { + + const LottieDemo({Key key,}) : super(key: key); + + @override + _LottieDemoState createState() => _LottieDemoState(); +} + +const Color _primaryColor = Color(0xFFFFBCBF); +const Color _backgroundColor = Color(0xFF37474F); +const Color _textColor = Color(0xFFCCCCCC); + +class _LottieDemoState extends State with TickerProviderStateMixin { + + AnimationController _controller; + Bunny _bunny; + + @override + void initState() { + super.initState(); + _controller = AnimationController(vsync: this); + _controller.stop(); + _bunny = Bunny(_controller); + } + + @override + void dispose() { + _controller.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + /// 屏幕宽度减去左右各16的padding,计算出输入框宽度。 + final double textFieldWidth = MediaQuery.of(context).size.width - 32; + + final Widget content = Scaffold( + appBar: AppBar( + brightness: Brightness.dark, + backgroundColor: _backgroundColor, + title: const Text('Lottie Demo', style: TextStyle(color: _textColor),), + iconTheme: const IconThemeData(color: _textColor), + ), + backgroundColor: _backgroundColor, + body: SingleChildScrollView( + child: Column( + children: [ + const SizedBox(height: 32.0), + Lottie.asset( + 'assets/lottie/bunny_new_mouth.json', + width: 250, + height: 250, + controller: _controller, + fit: BoxFit.fill, + onLoaded: (composition) { + setState(() { + // 计算帧数 composition.endFrame - composition.startFrame; + /// 设置动画时长 + _controller.duration = composition.duration; + }); + }, + ), + _MyTextField( + labelText: 'Email', + keyboardType: TextInputType.emailAddress, + onHasFocus: (isObscure) { + /// 获取焦点,开始文字跟踪状态 + _bunny.setTrackingState(); + }, + onChanged: (text) { + /// 计算输入文字宽度占输入框宽度的比例 + _bunny.setEyesPosition(_getTextSize(text) / textFieldWidth); + }, + ), + _MyTextField( + labelText: 'Password', + keyboardType: TextInputType.visiblePassword, + obscureText: true, + onHasFocus: (isObscure) { + /// 获取焦点,设置状态 + if (isObscure) { + _bunny.setShyState(); + } else { + _bunny.setPeekState(); + } + }, + onObscureText: (isObscure) { + if (isObscure) { + _bunny.setShyState(); + } else { + _bunny.setPeekState(); + } + }, + ), + ], + ), + ), + ); + + return Theme( + data: ThemeData( + primaryColor: _primaryColor, + accentColor: _primaryColor, + textSelectionTheme: TextSelectionThemeData( + selectionColor: _primaryColor.withAlpha(70), + selectionHandleColor: _primaryColor, + cursorColor: _primaryColor, + ), + ), + child: content, + ); + } + + /// 获取文字宽度 + double _getTextSize(String text) { + final TextPainter textPainter = TextPainter( + text: TextSpan(text: text, style: const TextStyle(fontSize: 16.0,)), + maxLines: 1, + textDirection: TextDirection.ltr, + ) + ..layout(minWidth: 0, maxWidth: double.infinity); + return textPainter.size.width; + } +} + +class _MyTextField extends StatefulWidget { + + const _MyTextField({ + Key key, + @required this.labelText, + this.obscureText = false, + this.keyboardType, + this.onHasFocus, + this.onObscureText, + this.onChanged + }) : super(key: key); + + final String labelText; + final bool obscureText; + final TextInputType keyboardType; + /// 获取焦点监听 + final Function(bool isObscure) onHasFocus; + /// 密码可见监听 + final Function(bool isObscure) onObscureText; + /// 文字输入监听 + final Function(String text) onChanged; + + @override + _MyTextFieldState createState() => _MyTextFieldState(); +} + +class _MyTextFieldState extends State<_MyTextField> { + + bool _isObscure = true; + final FocusNode _focusNode = FocusNode(); + + @override + void initState() { + super.initState(); + _focusNode.addListener(_refresh); + } + + void _refresh() { + if (_focusNode.hasFocus && widget.onHasFocus != null) { + widget.onHasFocus(_isObscure); + } + setState(() { + + }); + } + + @override + void dispose() { + _focusNode.removeListener(_refresh); + _focusNode.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.all(16.0), + child: Listener( + onPointerDown: (e) => FocusScope.of(context).requestFocus(_focusNode), + child: TextField( + focusNode: _focusNode, + style: const TextStyle( + color: _textColor, + fontSize: 16.0, + ), + textInputAction: TextInputAction.next, + decoration: InputDecoration( + labelText: widget.labelText, + labelStyle: TextStyle( + color: _focusNode.hasFocus ? _primaryColor : _textColor, + ), + contentPadding: const EdgeInsets.only(left: 8.0), + enabledBorder: const UnderlineInputBorder( + borderSide: BorderSide( + color: _textColor, + ), + ), + suffixIcon: widget.obscureText ? IconButton( + icon: Icon( + Icons.remove_red_eye, + color: _focusNode.hasFocus ? _primaryColor : _textColor, + ), + onPressed: () { + setState(() { + _isObscure = !_isObscure; + }); + if (widget.onObscureText != null) { + widget.onObscureText(_isObscure); + } + }, + ) : null, + ), + keyboardType: widget.keyboardType, + obscureText: widget.obscureText ? _isObscure : widget.obscureText, + onChanged: widget.onChanged, + ), + ), + ); + } +} + diff --git a/lib/demo/ripple/home_page.dart b/lib/demo/ripple/ripples_animation_page.dart similarity index 94% rename from lib/demo/ripple/home_page.dart rename to lib/demo/ripple/ripples_animation_page.dart index 46103ba8e..952ae9242 100644 --- a/lib/demo/ripple/home_page.dart +++ b/lib/demo/ripple/ripples_animation_page.dart @@ -5,8 +5,8 @@ import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/util/theme_utils.dart'; /// https://medium.com/flutterdevs/ripple-animation-in-flutter-3421cbd66a18 -class RipplesAnimation extends StatefulWidget { - const RipplesAnimation({ +class RipplesAnimationPage extends StatefulWidget { + const RipplesAnimationPage({ Key key, this.size = 80.0, this.color = Colors.red, @@ -19,7 +19,7 @@ class RipplesAnimation extends StatefulWidget { _RipplesAnimationState createState() => _RipplesAnimationState(); } -class _RipplesAnimationState extends State with TickerProviderStateMixin { +class _RipplesAnimationState extends State with TickerProviderStateMixin { AnimationController _controller; diff --git a/preview/lottie.gif b/preview/lottie.gif new file mode 100644 index 0000000000000000000000000000000000000000..a1f259b967fc5c36268345576993b0a9487feeca GIT binary patch literal 1717012 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�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
  • l}-^*?*Pwoe5UY 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�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 DrsSZB}@xya0x+fuG{^(2q; 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�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�bqZ%Sj%pAOlq|iO8*>zR(#A6k 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%0D`HDCZrCUE z!jZOABaaT&`*Sy3wM{ZD+WdU~?D?uSs^?AqRz=jy*~RD0{Q3K%&B@E4oT;t9e$B(m z2u|(RU-zhR+eYQpTo33v_nBaav3qYu>;q=JsTY$+dGWpNOBO{vpEo^5MwY1C?!Ho? zVF=HJz53+{vyR|7z2~6Sx5Yd!$FC)WxuSEoa%taR`ZeB5HPyeXKfj#l;yy18ox9fu z`JUQv_^eJ>f2p!hV;3j%_{7=OmP$H!uF&Hnb@|4<%jo$6bw_0Bh2o)$l;Sd2{p%*- zmd7ye=2c+qpB>Ct℞LtLW)Jdwd*^ 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≷ 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

    GR+Pal*Z*f_o)v0>Qd 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 )4lw;Y&$kk;<%jKxq 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 z z&+DGsX@Y`c6vG51@Ub?6j{?5U-SsGCo(mfB<)%~v=G|)b1+#H%CP%xe$2>8nVmtS^Nng?!&aHuV&RBnn$Bn`d9pLwlV89H)Q{PyKw9AoUB{BvL8-XS z^LrG_{LD5;5p+Ff4j8zCX3GY0+_~ohb6*CTX*a=lQN6PmWZwudZgNvAs9xOiiWk~Q z0UcJlEAP2fWlX6#NuSiB=m8Bo#hwxAXKYPpbi3KT;#@K=lm6_nuy5|zu4Y5Dj`z8= zgXo6#%$(ugXtkVu+%(rYL>%Pux6eH>B)Un=|33rqO1Bu}0IhVTaxPICN4^#zCy}V? z@o~@Z{oVyfZkt5^9JH*SD_E(J;@=MAhnq3hC~1>%VO6m*8n2S-OYv9RU0dbO@oc!dUcHd{g=gcn@vbZ0#-yP z{Y(K;-?Y70Q>aDOY1iXP;LqfqU5?tUA!i))4 zo&W$FS4e>rXkmsaTWmOBe+?Z&sG1O>-?6OSEA?PUPPE;$h@mgxBN-M2 zG&%%3j>h*%(@dx%HA;bvu*VkABPnQsL`p%lWX(cO1U^PVE3`u!;A1;PKu5~pD)oc} z(Bs_TqZFhCLMCIS;UidlgcL-8N$4A3Y=TaB+@K799OW1Sv#-H@XQOiX(f_VLPvh|_IRt>L2MxC71NI~Bok|WeCz5qzK0*W*Dg?Hz zn>yCsB<9ROh1)cOrjH?sG)qpgdVP1d4=OM%_eJFVqWH@uYJ^hz8rpa2Pq9!MR6 zjU3`kSdPL&gr$lq|6EWICqyu5=P{yatXnJ0x+$Cn!59NuT1=3fRK%;YQi)8)-LNY~UxY>Yw zY0m^=M2LhcT47*b1oL6ZMl_^6vT34q1*b)U1W>3#{)%h8QdoQ=MCfY892>VZgp<1F zW4xvmv=^;<|DovZX)W~TK!oGHZo!${s84W2Ov;Dr9o`#WrOy~-ElyW@_<}leT3AK_ zmX3+PHetM0gal~8tMZ6G8dEDE<*1g8Qe13A;Nz3+i+Ql4qB=xaZh-`7tFobCz0skO zLPVmn=Z*p9I8qxE($_Pc32TysgG#29T<79p#JqL|g;JM=DTNeVXro={nH)@%aOB7; zqA#}CLbRlWjDbxKYO&1Gh&hTnBH1sHY=GV>py8t?3<@2#>pHPSss5$G@`RDTG*YWH6jUlny1|MM&A0wFSPB87)CXYf!7qF0OX_A9tJ+{1d9EJmt~23 zuH!#4|Er1S+b;Bt2-t|*{-f%@}8;SV-l!}mW-)V zoF+AHLR~WECiaBWDqXiN#OhLG6l~~+p6+&}=O`raVEU{)NgXdL$v>QXYLJ>*SScC2DsYV1$=JfHRjOQw;vTk#N3;mI6yV=2M&Fh1 zNMXp8RF@NyX(O^mXK|C8dR(w*DTc;x$2g^xECikg1$|0WhS=ek48@ZO?;!%<^EFrn zr&gqXM(&!H5w1xm;#1AU>W}4<_5NSFtku_u@XfNFd39dyg=Ko~$P0Iu$b}dD-pg8b z|I8Qpo>kQvH$9q`MCfy9@7UBMqg?Qvxh6bTV}MHQ+)_@*6mgA#Zkd4bL(Jv~dKnZ0 zg+RVav}zusv~iSn@wNPdI#MJKOA8!7M)dPW*wjz=R?$}%2Krh=(gI0NQJ{RIoFGBx9>bmHOw9}5{r|JILn zvr59uG@~G^F<%Z|ay{)|H@zG4oipIz^5AImuQ-lxRWXS)1o+i5SB&4%DVRSbb0Oxj z2exx}ShODNa(7U)&}eiibF|$YDkPdSV0pA=Hnc5~GbcxK;)#<=n-fZVGb^1NL))?# z+tSF<+~aYY&;g>y8E@tq7&#vkmW3Nq3z^yQ+3j_5w4LJE^|L$wiKhe~dq7(-(v6l_ zSL79$8!D(g$>LBGY@qU>Qlntb{U)@j#MXFWsl{?Cf#H}+;0aD%_QGO%P$n>1VoXEk zL~vQ${nF&I$y)p82xf3=P+3QVQ#Bxx%Q;c??U0;a%0?eMapz1W?=*%g`h{ob1en$f{opw%~i>vy0nih}wBYT&nk+c$v^_xz=l4W!p-q(wkjuA_2YHZN|CCDL50a-w{w#Tt z3wb|<;*duc;{ z`IN`GnqNdyuhQ+2`I_VTmcP{+<&T{I`H(M)S7%Y4i@Bj!c~VH;Ml8CbH#(y~x}$S1 zq))n|SNfz&x@t6f_(1xmTRH^Cc&9UZs7v0cZ$znoI;Eews(U*3k$R=CI;Af<_rkiS zzq+MkdaScLt52V(>w2y?hN3^)rT@CGe|kgh^F`^AvR@P@UXga^5qRqb6-9fr{|T!t zJGSFdwGR}uPrJ8^&$mmvv-|6rFMA=4`?!O97iT-WCp#T^{}Hu&JGzTIy>B~E$a}YI zyRtv~y}Nt6<9lsBT)d}yy-WMRGjlm7{LU&o!}l^^y5A{*^P&(FpL2D-!A2Efvl9{% zF0xuohm~17)1QDe>@1WqDIT9+EwyPA#~Uxp^AbEcd^Ej0&HJ;>Z+ye&yw2}D&-c8~ zo88eE^v|PCJPS_I+l!3#gvDdjFB#M zyiv)^TY$g&hs!9r)c9*Z`A3fTuZ#O1@lS~pK==~y>t8{G2N4z&knrC^gaT{{kSH;t zLxvYG5={7O;KYU!IZm7ya$-f1CsC$M*^uQzmo5Fhl-ZJI!PF|L4S;S)~@$$y4Fgqf5`~Oqmm`R-y$- zs+2pIE?ryxKGxM6b!FbYf6K-#`xmfZh%N~e{^u`ZSAvNZqqH>`GF^oxBT}v`x1dRi zhBsf0dsuVmsEkdg7OK>1>$!&id4>qub!e!6Z%fSWQ>kp;x>*B{d=jtR-AQSS++A;_ zN9PjrMh}h?Ic~k6cNtgIZ4J{LCypkwn zkFcc5O9{mAqLRYxK}B41LRC`Z(MVa_@hPx7mx5l1>{ zJ|+cdCrZc|6j4Qg7F=l5{N7y;|C-r4=rd+$_I; z)?CxgsANp+K{`>gr(Q$=!7)s*T%k*{HGnX}Km0G$;& z%6?6))VeH0Qbhp-giKSqRK2vTWZg5YK-i$N)xVHfs?oGdAM>Y`9GeB{$L3Z=(8^(@ zt;@(-;BC&NOTBH^zX!LQaWZ%5|1FTih%QylUl^Yil2i09+8tnIJCP4qb;viA5QO~%C5bt;U*)K7*q(!BEw7=K9SYI3m_A+X>3a9tnOCeA zqIBztXr@=@+As|5?uX}It1`D=oLcY2e(~oqxw;EYBfv8StjCXNBPnsE`z{ME_88ae zwh_q{oNI`kUC;BVGLOt4nIsLW?adTANLqPstt_{${0j1PyrBGO^m&y9xxT99s{3=i zhqnyy-IqQ67eyP?TOxK7|1Lc`w~Kz>T&qt99=+>*uk06$i{Fz+%_UQ9SLao-M}kd= zpX+=9T1i3z`8{@ay1(L*lCJnGrRzAem6anY^lvZ0TAf6sum#~bE^q3QfC9r;p~iJ@ zPkZ~EEuuh%>nJO76N%sY#;^&F0Pb0U%UN_}jI7M7YHuEsQgtH%x57BCn#?Q{`rpk8W`gtbvl3S)R*WfJ(Yx&+Zg!Yket zD`S%Cr3ZN`Ny1*nm=ZE1VR1W4qZ6@rxYQ{Qjy2m=Zob!wwWVl?LTUvm?&2oo6f1gv z0}l*Wc0Mka4rmh5|DSQ5mZL{@h&-+<;K(rdACmR1eMJnPj0}@36A}^AOeuJ7b9Ic=esl%D`RTG1n~*{hH0VEq5vG)+AcZKUz&m#k)1mv3NSI$XgQ2Em#RxO^9ra1Ut_u+>?9J7ZbJRYPG!|9d3b z4n}0E7`hjGaA?XhLnPAb!O2YAdrBi^ELnEe)qS#H{Oau(KlnhW>>;6DR3{^^8e&FG zfy~M6CT}L9b`7~p^wmqN?g$&p&#GwQEXeqv9Btv=7}59{JH4K0t-Zi7(jn0%Y-%0e zFdAIF@H3I4&G)=YM~ct4A5-&d|1e~ey=@cU!WPD0VE!^``jiajb4qpH8-C@YjV6=V zn|r~}L7(q6BjGPbaqWg`!Qz>3a?P09P(V}Z{wa(0|9P#&+|M!sE|Z|_s~#_RlxF(S z>h+9FSfD0N3U9IyF6MaX|GJ{W3@OZ(&+h<5au|aBp09{jPxq3Efut<`|8U~xpa!}C z@CExK@pcCNQls^B#{Mi2j=Hb=1W8g{Ff=MqQZ!ICXwFSU5C;3t2$2wUbnO4YXYam62b10Vf?X;vgvWaJgM zP+;QG%l1(g{ZJz90akJmBI=l#65-8J>Evr&4$+8F?qL)J8*YM}f3Qg;Yl|El7=YNPBdPj&w-kGcmSfK~`m1He|V_VoR1}AGTu2@MTTbVRiOnBZ5(6a!#@mXn9g-W0Gip_F$nh zh~UE||MDxF_Gz6qYN2*&rM7DEg-+-$YojLew6<#x0xBfXYrU2uxCBVV)@vm;dCoR# zCsZibR%_QanckM}3};#4BT;@5YWH$){|l2Zt=5)y#4C!{V2$=Y3b$AY7iojGCbc6h zc*Aj@VjQhPONt|MA$Kb-*Kym!av!&IIX7}Q<#RFDb4QnwGM98u_a`=YbVWCH?~5%^ zH+EaMAX`pxZMR@?_jcifAh%MX)Cx}2BzRH66ImrO<0X4u!mdCIby}x&CI@$jRdS_w zdSYYD+6do5HB?Q@FdQVbmKRfEW?7u$^_J1Jj^c5qx4o3hQMGI)ly@N>11uK9L%mm2 z!xw!wW_{`AFYBl!73D(cu&tO|>j_E>wAh~#j)gLk$hoaZjl6By` zN+jr5U{u#K-l&9t$!$<0G{nS`A4Y$YrISPI1s@E1V7XiAh-h9A2luovtmaMBVs02qf)9B)aTwN)T$0WMadR0ZN|{~KHBEM9cSqHE%$Yq3I5Cc8qjgxfW|*rYdSVkJnomNKV>vaFxsE6oz>HX;cjkuQ?G{C8uOV~-uV{`0}3l*>~ z{`!$yK~C@`vy=F;*`cTDdM-R$FIa)%2FRO&x(S9%bjED56EyU%I7zgr86OfSR=D(;23C1SKA0Dd$f0!o`Aj08}yn(dNk7wuZI zZ0`iEI|Ts+dp}t@wOfCmL1MX?20*f2)x^7 z@}Z)@w^c&f|Bm_&k1tU($Lo^$8Z8=(X|>BfI=E5pXbqRfZGjaw%J_Ksoaur&#H1cH zs>+@=zUR9TmnoFlBR^8w)mD4MoP@-NC_flH4PB{jiG##+x-Q&%6DIsG{nyL?G75|f zqeDZ)`8vk5Kqiy2z=)e2A@zB#EzTY4+Q>v*n(8ESY0YMAM!Z{>PTK8MEic|_?c@TM zYXMQDKntS4ypbeB?U^~OEzyg-$FYSX1_;rUY(W0)p~fJa)1wulAPOw*Osei!SYZqd zN=iO1RjnE_KwZfFcZTCc669N_5&8}F*wPOyw>hr;26=wgEQJa#HR9sm#9RxuK+KbX z!a`al|9)##MCqNE)y*1=q2veM+PbA70-9KAm7a;%_^;(~?b>!-fl6xEC7`(Ff|ma+ z0yJT1Ct|#%1jm!$wI-s>>^pcAO5J6A)QhE8EPUeBUArT4BVY0{ABx9R13``mo9w}c zfag^|jpzzOoBlgIo-N*KYfNNBl!#7%P%b?F;X)pJMjC1hK80-N=S5;n3Jx7lqH2Kf z!XEAnlx2I7**u92H)*th+j}0(q-5ER`7gG-X{lv@Eu6>)e(|pCvuye`+-rR#;@a9E z^2jQ+01Y8Vq2nZ|KGs9$R*kpH+KK~ zV=S;70!JNr;U7vrW<=3w+Qmf-A=+xK=*GAbV!Au2l=0%L7OKz+;@Uu(yXQibNWqq( zir^A@+r7d5cixOa^^=cNPjOv+av%&LKHRv z3K~2pAc6ob?F`mKh_Kc}hz5TloJcXFfL2MQbo^MW)j^IPB@~QOt6)Qo0#;J=|7Q>; zOM6?AwEFjtCBmFLbqc^qrsGYX8j1RpDZrntBwLIY#Od^>PlHjV+7lqfASo%Vs_J~` zwO~q8QB#U6>I-5{q(}>1-7>Xc+qhx{kRggQih!#SUD7q^_n@s!QKFnZ$Vv-SQi`{* zf@te6#Iy%f>TKAq6{*dvq9_#1EDuS+$^(H8dbTq_A|(xZ=0DHfSg_K*=I zOKBY!+&^1r@(U>v45-tVS!Tpj6l@x_NdkOr2^m!s0V)}xK1nc&YzB=HCS>(=7r`cn zG5HXD`9U<%o)l?%kdXx)<`bx5iQ1@jDPku@J2;i<6)8#Fm6HV3mHMd!;2A{Ig2Azd z(JoE5LdO@x`fL8a*7|MPju>%8R44!b&UbxO^JR%x#4pxDt{w z3THVVy$P^S&|`{;f7b%j_OlD z4(PV!K*mz|u|`#TJho@ZyM|&lYD41=QNOk@L^Blk`lk(d14*{xy*d}QJAcOXKqSq##6>~ptPc(Evx52f;y*`VNxNM zP+3le7K)eaG#Ml>YEd`ZQKHp4B0kHQPmnh9|DLA`X)$y2(Rf->j3pJRJax%XWr`{? zaO5aLu-PMvn9etw6lm)x1G^tP0WH;9tEJ*zsLkQwkS~T1{J>*<`l2EI>=7h z>C~&fv76MADqyEly~OTtu^2T-kqWZYCyhveN-wx>=shg{xWB zEcswkp`A43i(U=wN&S(g3eDx5$P{G}5waT4j`2i-6{T-Exwd*pDYZ|3z17-38gj{Ry~nb(f|hL$S$mSE+*W5XF!R zSHi+qMKm4ndrM_rz5s_^q{XFnyV=`ViiEUx`o}|B_A*w~qGb$b*@9)p;0HHY!4r0H zg()nv1nS2!xX;-_?E0T#zJmUC}_&tES3It8O;##QK#4=8?c595Es|a;* zFYd7e;}gLk5AnxQ{0D{@7(p4sN6EHeGLw_6Vs>#@yF&JHm4EDG1{N7hRt9o>p6ul= z>(Em60P~W=++;L^xyT2W@Pgk=VK>J)!gIDTob9aO1V6a4uwhqw9Gj^?`$o`;UgYIiv3*FSO(Q38xV$^?GI>6 z+sM(T_OzdE?QCOv+tqe97>ztsJo)lNbONnUz^%U4o)#kBPMR;P=%k;Fn=13}5xj4T zZqrWnDfM;>YX#Zw4Rib2-7Yx653X&4=i4U~Gcv`Z-S9_4+}RI*w8Nhr@rq|0;}qZB zo!-T+iRV}35`Xl_D?(ggYaC!De{aj*RdIF^%8D${@5M)M@|XL0vn|HC%UAAmm|NCo zB;UBra~|=%*v`m%X?4+`|1EQ!r+>5nG+bj9B8 zs-GLU$Mjm;-|j_03A63Lg;2OrN!z+})0~F{?mzpkNxLt#wtg=>uK>SyvBLe{ac>ag z;qCau(`CO-jWy-Ni+RgeJ~x*SXCs|O-E)yF^lvSF*C$UA(wi{z4s)yPUoS$o!+!R( zA7@zIIu}LqmA!-&6I#_y({TRCbd=YtsWs2~&8I$oX=zaN5no;1>pt_tCoHD@div{E zzWS_|HL$T?>L_i0{M09Ztih=%r2MF?QG7nfTJ^Q>zyJRa zfB{%4lS6<&6-WZe|9={xO$=v%^U{DC<$wnWffMLh4_JW`c!3e9fj*Id98-Vlw|lgFHoq z?dN&Or+LT0Xfx;wZBc5P(s{&}X-PXoXpbgwSSP*aMhI1%~bx4PIXoq$fht`)79)@OD28e$sh+Xz#Kof|Bh-Ha* zh%ClT`-Xxj#eyiPTaGx1r4@;lsBX>yTZ5>GoVbX>rGTWM8KWqQrPvCk&<3TLil?}W zq_B#psEVQp|BIT@imf<`t)M#>^h3MoL%qn0zvzp>NKZX9Bf$ua$LNbXR7LbNL-q4Q z=c5!r^^DHQjMHe1&4@nMIE~mSEY;|Z_`^TkxQyTkLIh}x=ZK8RXkzCl0B>LlC-4Oy z@CEP)k7p2%^N5f3D3A2`1^S4O_4tqZ7?AuZk7sZO0&oxeLSzH=9x%Zcx7A6{Vq! z)Lc4o8kuJcq@a(tbOH!bkgq_383-7QSu!r+n2cF1jR~2kab8;~nU@)vnfaKh(GJ&f zMTX~gXwe^Y@tJD$cc!T}d3Qq4$Aa>~mzcSknVAu1p((AE}JxLi$e+@ zAOM9~5awB)YJ;8yL7s*A1*eb^m10vt;+%aHLk_b~tcgyj$uX*Vc>F1OzHvz$BP#At z{|dkf5nezM3Ywq`>YxR|pvj342)Ze8#8`c!PSA6e(Nlza*;165T+yLU&qY+e^Ju2m zfwJVE+;p8T}N-dP?rC16#Lb5WnBBc@%p$8GF1`(lOfTLYXO@D@=&t;)y>R1Wo|C-Us zF}M*Uzt9f9K$}0|A@c>Av=?bENT(N}8LUtmn^CNr0X%5vCm|`dYl3JDbXZLGI|xf@vXJ6D!-7Q-scvm`g&UTh%Lx6Byv5UG75_7rVwGE%5s*vpP$v z&Z;lks+c62XqIUp4d|M<^=F%UpBEP;IJA1TH(YM_3;W7ZD1uNmYK9p&|FIl2IX=r0 zM9QPIBCXB=uuMuTWot}-1gY2~76GSJ7V%lLH$P%rf3CXGzo3I6&@EEfxDFrbKaKRec$yg=>PoFwK@zsRFq`6T0 ze|Q>eM>`^C(J~vs4jI7;3MQR;xuob-9b+3$qni<m%|dg+Ffn6A%udv1VtGm1{l0Z3K>)+CGx=z+nj?3oVRcfDEtd4d=D$E z!YTX;_o@?bfS7K04`zU~9^eJG%WufB9_ zo6!-~F~6m#1%{EN%yKSU!WY!LNhb<42-|D^tu*WrAv*q#^P0S9w7%7=a8;Q~m3JkDh3=xtL0h*99j1riU@?dwP(7F6fW#Q3WMCR(}A=!h%EBx|H@x*3;*!Subdkwd=Py6 z3a{Xf7$~$;vAZX8w3+cL1>q|lffY#*1+Ib2*}@*mVGGJ)5XDPGSWysLKne|H%tp$| z_GuJc6{Qa6dMf*X*BlYbi){Z15k1+DhzXRYYL7Auq`$eN@0-U0&;@32&-eVB?~8rm zc0nVNAej-Sny@etAPHJfBM7~xDHO4o0bKx+8DIG*0Gq98~sWOkKvm3;JF+4$9sH`6l#zMiPr*f*LoeCx8N@S;MdOPE`tr9*-Ewo zaLJw03NIq24hZg~1 z5Szhc4ENcr>=S2z$M@g{WdNjpT_v=W+g0)grEmf}te{@t2Bx5srs@SdjG&=C6}1or zNPS!Ip)6bQ9;}cAtkAE~v4EWYmou0>V^AZT(+d1&y{D~9{=jsW;%7Kvy|&b%4BOHI zzzWPvB9)6YqWY|e8I+~)3%76!2HB3K;0mn}|KI}-;5j1TIysbga0;^h3qh%rd~P;yJRkf_1rJ*X_H+hL2d>3arUkeoaD1w(17zip3*E|3U$3-{d9dcDV`u#>w)Y?+ZJq_73jX$$N? z2D;0@qcFdqez8QWe5-8P2C+1rViuBO|0JzW2BSf>+kB~T4ojwsSfd!bHEOJqAS=Y$ z={`;xMeIhjOBYD)n^O+cHGKm7Z3;3i0B!)s&c57nfs^eOghiC;fjKzgyLPcL=4}1T zpJEGFJe!$BcY|{wsTt0U7tXG|xb6+2aWgT>(F!!8z1NMZhil(F3E{@+?+5V)2!4<* zEa_e_z7#rt#Ui;2n;twxBxnOZ^#DAifI*|1Nq)gHUM|ogu^pjPx!Lm_^-(xvTO0Ii zdM#)$DxOLv?SP}$>QMc%mI6FP@;uv}Mx)LWJWLnzXa>*T!tIFMLoM{tQOsPLK} zN#M+2a?PvJ)lf|lTHY~SZWGv({~&cE-Ej>YOK~i^0oJlE%IJEe@D3mgy9Hyg3EnLQ z1bz0Bvd9MkkG`3keq6Xi`tKQWka*1BrBDW5KBUMKlkc+f%RL$-LLo6!$_@6qWa}D%>lKwC1g!~I{3ct#>lb^`#I6xE+#@vX zj!Awl)&8pHcpRzBcT<6rL#AcC-$vn$QX|yuuICFlKm0TCFDmsHnn5H}p#>8IA6xN2 z96>5QbE^6b_k{b~6mgsOjL$gi&gPrW@T;LNi_+R6J%iT#mmT;SK`9Q4K@Usg8bnE* zQz#L9I*A#Ax>WeF4iLWt{|qEpkRTZ;tqd+?*wEoahyr{GuvM=j!FB>j38+_#B0*aq zK}y-u&Q?2wwK}qj!0O?@hyp%*i5YX|O_>ls5ENK*phA!tfet)*5+l)!6iwDl>eFe> zp-%<)lWGvAfSwDlR^|H8-kpwmiX>Q961RJ0DT zv6we{w^>iX%MXaITF^yaxgtMaMa&lil9IrG-RvL}L%nKe?~7^T7&ZO4YN0zj!7t;z z97gji1f4{8NcU<}kb1j0W}fB!C!g!>{!H~|p02cp`vystZHX(j3V5SdPvsa50&cQa zX<*{fq#Lki7)E+J2OaOmFSi@Xt%jtJgVl~L2*Hu2*^g`e1L+uFzXJOc!fX}jQVRSr z|5h9@hZEbtW2PC`s6bJI8u&y>i$S^lF`yOR-XxK;nFlr&5z?{;b~{WdgxH z6AjB?zUND6eIywh6&S}FTu94hn$~WaLYB=_cQi|hC|hM3ytt9TmRq`8)t^uJ^TxCq z=OVFH&~w$k*rsziblR_m!n}y4yM?DX4m%B3=c^=S%X%4|4BpY~py|tb%3>D|a4+K- ztAR4q&;9bGicibn{a8g7$4+kFN!qp_S2{zwD6{RZBzQ+z(*%JeAjIBJb8A6luF`63qbIn5B;Cz)C@>X%9rI^HB zEm&R98?LzQsJ5T9<|F8m%D^u_EY6VjaxdSTY^O8kjQi%&x~29g4YLm;-8RevNVHuP z!(mUbMS4Xqg2Ue4FE3N2Zy6aqm~{T3Cp3isa*}Ch2q37Cxhw=Hpx}p4kON8U(mAhL z{SnSM2byiK_KG1jv5Dye1;;9W~T~7{FQ5S~uvh({Gp${!bMOy*vck4Y3 zz~y7+W6itv)CH2^FD*;3c3el;itQ5YYDls-^cA5lncBPFA`h?d+uZ^G#CB%=%Aklfcm=&2UUDMR59KQ z`z_3>3p~Ae+LTjnM$Xp$Hhue!f@@4_(#{k;y{ct^%}QKs0rxueHp37j`LW97qhi>L z&JMuyJ!Hza|0?K-phPG-Wl8`~ED&0iRCK#^DwqQ!??d5{7(I<*goH{y=7hP3T*FMb z2x{IvTaL)UqnP&_Qz5PDF@JZ1bP9)(2Xo;unTgw6+T?r@w`YOeT7h!TJzELirxSUi zRDMAO)l#M}mddFo@=E**rOJtxs-``kh#F`-9PorAD_z zq={YPun}#$MyDZ1?nT{MC|CK)n9^c>DyEH@9OCMXZBm0^TB;Fj9p=S3rew*R%4P)h4mMimFw?gO?~1?NwbzZI~-9SVg^~! zRUU0?U%G;lX?slK?G=rF(h57bohI74m!JM@=u+>xE@b?6XtnvwKqo#wQSG)p){NQQB5=O?+o zjc&xzPu#^6E;nv~>Yy<|e}5Gu-n#;qj@Uy*k?Ci`n*={}&{VKy8yo3iOirmel0teF zm-%YU82iwwl+WUh`Le0_^w9OZUzhYUruQ1uI;MYcV?BJPch_sx!!A=HwON+Lo_s4Y zYRgetsq%PG1~xw_hxOIBdToz)Zbg63gg)oV!(8w)$E1R(V?N<;bD*TwYu89QH`P^pSet1tK`uHqcmB4q3tnR% ztAcNJK06~#*IwsY#AsXkZR;|m{qwfSx$}I(TtE9^V^AWtt$gRwea&>J?zplM(#tM@ zQfC{{%%zX;&5nlMWgf7Z-cIfHEy7G^7yr;@NHO#46BN|n9Z0DE+JWr+-*+I_Q<&g~ zqKQSr2&C%%?m&tVu*8@MBhVO)W=Q?rfn;W}JG#yZ$Pn^JAe3%68vg_VLtq>_Uouy$ zkT0D{BfbR@EQ_R;IoephRISh1#<$E?u~Kh7SEl;tP`TD@w;NT!r1obA@>X}fv>CJm z>D-I}KtiS1>I*^dK9^z++Zl=>V^k5DW|AI?W3~D@euZ^7l_TmvF4|zzn;jrtj%E35 zW#z|TZ6C4a(0INE&|V=AYzOT?ei)P8NA7UZ8J8#}myJ}8yFTplG)_;j~?Ogc)As%|N7aQkl)nWKWzw^Am48V;;fP>VB3c!C9&Cqf`vT)a$%{&M!szY;4a1r8 z7Pi#aRdEagm=8+OqCn5`>q`ipQ0;w*m;fpS!pP|ZqD47EvF#Z-Fbd;UD2f7TRZXAN zV^BsYe4L?YB+`?NZJYY#m6J+M6^%ahlMCyM+#RGjo-8CJe?Q<>O-JGhI25v(C_T(k zD5U<88bDEYl!t>yJ(G>WLQ^Uil}c4293x+Ltm2Fpuve6`Xl!0mkYssMT2kazQdV)W zr|9p|_)c?L(J(5$8ON=wRsIFBr1`YkmYW9Sn>@UX0zFJ51YLw`WNzGdK6_k6{;{%< zbqZG8@ENRy4^s4U`DqJkEgMCFHm!wm;j#5%Br-7#JMv|xriXb}>mAIEu$KnsM-&P4 z_gVp$2ECRcSxw-A#xlGTzx%7wnZMy<(1PLjoArKXrc>#ZM-BgGDs0aeGt8=5G2Lvv zQNSSlMq_*Jdvo^XD~=m3hm{XM zJs#fAofSdLpVS+E*tU<`A(T~*I}w~0kGnCF3{QIr>b6h&DP~nq2N}*6Plq|d49{Pb zqHUj#ONy(WPb!@Eola|p7+%gAmTX_nTMnz-o2xG`UM_#YGQM8*V}E_U9v+%^zZvJe ze7&8PWc+peU;T8w^X&Ld&!tU4TI!M&1v6fuUd?B+~qM zd#ZlY(SQ&M*`1k$BTh`T{!rP7JPb_Oe(Io4wrb;fSS0FwuOu_JSar(>IV}S<9(KfL zE6hTc3W5+NbSj#PaLgk(zMUA5K3ZvY`;XqMrivs$h%^FX3CI7}7< zALCH%0#SriVt>v4FQX#sSa`rs+#CUM&?LL~D@{283QBQhPoz}1Pbqx%3_|4uK)MH3 znQ2!Raz>+l3AB|MJ*58R_w7PDWQg&&SH)zik^Mbs*BFh(8;;=h53Jd$oRV4naX&&$ zPh5`0yqW6xwp51MY;fYfk=|x3_Z*1KYi4%zz}g%o$Z$a$%KOzQi}Roh!SCX}cbSm_ zGjr}J1z`~~Zs6ug4#Z5@F{Kr9=Wlc34b4Rron-YebnU7!-hx=MdINs_=nO8sdM$;jjY3Wq^I`Y6;;_NRYy#e z(^08Rco+E#cPmfdVfNKM9 zKNm7bL_7Q$B-!8^X)G70RZ?Tu{)PHNEQCsu15dsK^poz!cGEM1CY}?p5%Q(=MJNKk zk+za>*ta+y;089+VTKxkv|qFt`{RN698*VJU2{7|$AxU~)2O&NjW(ReLR(#JOj6Glwoyc z)a5`r5L-3|DR^%XC!NL2r@}O{26S)#xWxJ*6 z!ak;Uqm}hpD<*?nBSigNe(j`Qwv;bkD@ySr*_{(g}+&xFuS7`sc*jf&v$0zOTWb^ z;ySDcb)98azBejR(18a9Pld|Y50&TIG4TD4SeVZo4kf>}912dZ3A9j`=T3J2yBvbL zi<(UNMfgd85mBkj(yRBmfYAHY1Et=-il}JvS~uHyTi{(G%{%ktv-m4}Y^7n$ToF94 z!gEYKqwW?F_MKpLG~AU739P1DI8{5zy}H;_vIi`)PqZ)C4@!$7XZaR0HTFTm7uc_2 zs6NGg9|RsyFC~D`vA$_D-hz|>2?;=35iv5eUst{j%(e4llSg{235E-|$AK@t34!bb zS6s6X*);;ivX8T`pIGfzQ!))9Cx9P?f0v>;ltDnMvOjcBKxl3NfW&L)u`rH@Q>5+ov`M;;r517V{i=?`4RE3&uv@neT1!l(MtQYDdMGfWI7vV${z zhUbAE3IEDLG8GU{ovUm^ZU0mvz%jz+aV+FI5_WOu9T8-sI)dp9FCZAJ3-RNVq?2*J zV{&_a2$NA#f@UiAby8AlDy(ygQZQM{)3@x>)I9FA0?o7{*R+zSE@ezlNRL2;2*IZY-)>IvI>hvF_G9EY?{hAr#j+~tq8Kb2F&8-=ePZ`s=nX}xP z4)O7gQkh2>Da);y>noW*pE9>_vv%IOv-UKz4qUU2QnOB4v(C5`mR7Q^aIa^BGMIgF-_RI{?Wx7kQSnwe3tjL$Rtge!0JLP#QL}l8{?^)x9Q@bm z3c`XCyM@VdqJlFloX=wA=t-#sg1je~yBvbR(oBRqjLU@~OTz=Rar zJ5(+u4g$y$h;Ouz2IL7eJmm{zO|@ZeS`v4Q) z3z7Ue>f1smqzVvwDq{EY=3He*Rs|*zDi?XE@}3!>XG)N+$=2N}x1_T+rJc65st(+$ zj?$_Om@7|Kt1jHqG@h$&c&hKTs_)&ZAJeLf3`3t!LVxopT0T`nglD2~Ww~?L6x5Y0 zo-ntx@xxk)`#)oXhcg7GVmr2Sq0mxS!C~{`h2+N8=0etWg4Z3^IUh1dAozyEtzo0^ z*3w$l4Up8)hSx%Dms7l>ma=b4W2TcmsYo**V!Yk?VdK{uNnxbYU^2GUDl<2r&(vOH z)Ux{4(L)pmJ2Z%bmzROpLvAu0V)^jUK>+qr>(_(5_@&2Z) z=k~3iUTs1)Xf$^R*dt;d>@~W+G!x?ahJZ()aZww+)OO972P3vbAQA+uwZ!1JhVRPI zXbYB$H^!y6E}P!WPFwPv^L34Q{r6DKT`X@lHug$8dcr)?uXYAeBS+gFsWTWf2i z^+3vPgUW3$MQlfSY?EGVFIsCS8*Kkk-rSVl(SF)~`mL>nwqumHt@p44LZ}s%gm7T2 zV@{=YsJ)|StyAm0p_#R(6JEHBm_!@Qs7pV$3$CXNy|$&(O0n{wD@?c>(zi8D25l!D z6&q0+Q&jsZJfbowK%o@y75fLqcC#6{N>c+1^FNqWmk`sm!zNh7{vAz@*RV}^aVr6)k6 zc}3k#=)>o!)aLHlM`Tcy)kaP+_Kr#eMZEXtn0|YT0iru_QI1+#*YEfYyY* zTIEu3?u@!R{SQKJ*G%5Q4u^5xbu#US(ceURnSfl+wX&XNr{Lvyv{jw!buqb>2Bmek zck5X@-(_DL6jDURiAeN>U(sJ)e$c|1ElvQ2GS>`$<6L{9r{Dh!@!bfX5j;hnbK1b9 zN~QWqpLAHXfuOjA?1{E)gK{{*J%4VQJ!nPyoA{C6!h&y$#h^JO*1)dl=N2Iz&fE5s z;`Wxv#O&i%9NG2-66P;YERrrxb-G?NQX z{kPmrUeqbEz0ctL<*^50%m;f?hnCkn9nd}As13~EhvM7&J@f!ChMj$xOs9_`N$+!8 z5m2GegcxB0Ymn|ol#ZMGt4F50vFx9Yb8lA)@{VJ6k0;0uzZo3EGoW81pO}-J?DrjC zz6h=lZKM01=qfg0eiOwMJN@)+R|nJ&@#@C#WpPzu?)-?|_W@%Q6sCOW;}$s)GGKb! zI-8u_E%*GIS$;+va@Z-RhN5`hs-hgjFFXE*&-S_uA#|~=djY*I)7mh%CRe@uQ-J;V z(V;RBls@aNx8;x%Ug`qCZqJdvUFwc+T)|vHGF~}tU($+PVQI}x=ARJDC3W(TlVMy^ zjIZ?3`qEM)2kfEXF#-v`F5sfvbkPIIOphPk6@Gi63XILST45!-0}kbnSl)>iMb&}N zKiliR-;Sl_^srgC|un-irioSrz-PHaHaL@yM`8tPg3-Is4 zqIDWq@Lhxje}o}4ym*jNwX&uwyLD}~d>-xE<_m${@zA1Xx-<_L->^D*UgXsH?$m%9h1>s4@ z*Fh_#-^j6x-6VFKD)jWXzsa^=j*Q>Xsj#P~NSU(DN)Q z3I?44-53I(9Y{mkP)vH={uISs3Gg>AFDTp_67kqia#>K>N(OqKP#7Sx0O3Qua(4)Wytiq1Ci(U+%>KZBkgg$8xUu%ck^Od zZS$;IM?|$#KRI=+E!3IK;)0`NaX;s4f#+Z%7=O`n8d_<5xBA>fcx?{af%JU09R)m! zulFIAF??Bnl-LvcMe}n4|GTm~Yx>fsNX;L=a;lIKI9qO8H;)Pu871HAJI;P-ce-PZ zyEqJ-9J6Lijz;CY`G%hRM^uu(M%_~XNNy<~`SFewV8NGK5aN>q2dyxj_khzsUCoRk z5<_-{k!D9MmBeF3x&}i|#e&IdTq|Cw_8gOg^QEA6u*nNiZ^eOOo>>}1)OjO*n% zH#=zMxR6DdWta~8S;tr&=EKI~C&yW*6V`hxCw-CV<=#hqU*~V+g}vL+$R*yx6DTeo zjRBH16dQ0elF7RmGBlE(!ild5I?V^fT@&CW#pCg0NmZGl?uv#ZbZF$hV6HCA`|f$b zEsyIGhG+!RM8fgO$!Is#++Uq65F7YoZc&9*RdQ(OH++Iyv&nByN{mk<{GfhkIe^Y) z^o?9SPx`bLTGw^A&{^00bl^eP^O*f!ZcpTQ!=N`eIajVPau>X2U^M^iT;#N8g+j=9 zU<*5VOsDyF0832sFa_Re8w7TAvK%TK3iOk4r8%Utm@of;m zW^WzKCSSTKN{HS5wKC>>ym6BLZQWs75+(DlBcCtg+c=SuC&kDo(t*`xV{GDkTeEJ@ z95bTImcpfNH6^xfC$PXB=9ct)?Y~(dcP?SjBfJSwr?#Tgd*HFR}YW8gF`kV zf<7Jv98FExNUC_3dF9+AyS9YVU~?X=eC3|=2fo7P z2|Z8;_#O!>&G^}LdqZ`d>kMcnipsvKR}}?9`%4YTA}a=l=?X#p1cl6 zh1@s7GivIlr~eaAPHCVEj5eZB1&IQ7AqVXItws9VTY{D`cuQIRAy(Y5*R`QW!eWnR9i2xgw%#@3M2e^BGbvDYL$(6u@;;Pj*P)hz<+TZo1~B`RTFj~<=S!i* zp+zEWe^wqyE5xj`rzLKrCYs|>3wL2BoeDrxUO_->P7^DPPAvmJZ6hd@h7;2cghT$) zJKK7pBnyilHyYwP<*V~8kdglE{pqMRHeO;;4_d}r2h&0`5DbkXs}ji+UIo9$ezAd$ z$6U|LZ8fnmKck}4nvvQ;{T>r4>ioqAvxLTH{i3NEd9TuTyJ-oZ6xO>slhQi9PU~#A zi8Q1!NdlY+^klX{_u%ugH=m9?<7=XU$H!%J__h0WFm=2a-aFZ22*aY|0 z9NdqwR8@_(l9F5miD$$DsSEopv=>4@^BH0_FAtEwUx%Bla~(`B4{{EEi~8PS^pR1# ziXX;4CXmmV6nkY@Qo=qik*>p-f^%i$bC7*PA)g72`pT&KpnXzfhY5r8%9tLELy7^e z5py>n%Y?y12<&fw2>DNd_yMdMyy|}o5TO@GkC-6-BS0+E8L2BAOJ@2fKOZlA)Bb`Oc<+>AXji*aB*ilh(?M_qEh}#kgI%v)3n?L*!iRAfq%Y7Zg zY4s+t*)0#I^C5rHceecsL824rp6qNNrJC;ye8k=z{XC1_026W>} zT!y1WQA!m5w$!wfE5kBcf-jckQSJ?O=uuw8BBzO*HF=_GKGl=daUm*8=y6fTJr}iD zHgy=lJ=^JTfLL}?R?&2FQeHFoH$YspJgsawC_Am{xIa0q{sBXKR@0AVbyhn}QGQl8 z&T)EHKP^Ff-Y~Cbb>6saT7KTN?sR(IycI-i>!+CH9@7ews~yt@Rm&UGj+;gMwe7Y_ z`)m6{SNhkEyL+qZ?nj7<>L0IfR(3yNQ8Mg$;5aL4`j7H}@9ah{<@;#j0P6@%%-%X2Q+uY3n zDJ$=0WjW99<`g99f6c3?g91boDH57R9cT07;X)^Rr}480oBL3c?8^I~h6>NcCEFqT zhf13%n}`1j5Fa*uU?h4`?G%6_r8nBZXTdXUk6@EH^!Ry7sP z7STT+4=zT!4P{qfxan7R{|OMoaoqm|i0$6ZmlwRso$m}DO0}@rvDbZ+?*{gxoR{(H zlakfwx3hl&M3d4kz}>R5ckKO?{Do)qR`l1m;hk)~>|+|#H?&_QGx=TR`|S-+uROKg zDKFTbnF4uNFX4<(y@EBwDBgy=#1IbZ-T9A3K8WjU^uu{Sf-o5U%;vJy5JH4g#cjDT z*?@*E*o^?g=>WnEA_Pe>#3y(#hiZFq1niq|%(xPpf^>rh>yo~YK|p{0@m!SmV4xUy z&91+=Y#y4XcrVz8LqbLeLs-|A{%fh)FpY7;Ul+v#3~txq`bhaWL%>0nwCf0S*?hdE z;X#hJ>qxtZe1b#Z5YH+z9Ye?NdP&KUz;kSO9{h|F}yf^_Lnq#Jf!ymM!`&+kjxgGiTK2QN$+NJ77^}le}1=MPENM zVe59AzJ*lGHDr;bD}WxtCJN?}w?YpWcbj3eUj#D3fQ9xoC#7N50O zJah#gi>D^(?rIDaN&VH$*v3i%#t#(Auct6WRmq{&Ji=aqr^C_3@JBx15@WU;ijHeA zn|D8w2*=^D3SDEWJ>s^{Y%{qD-xMbfL-#mPIomLR*WbGuQ1`h54_Knsa5$^>x20?J$?M zcBPlvR)1A}4;=G42wUn>`Ys5!dwS_r)(0mhY~^S3(;yy9gV2&5!8Y-u5z47(pQT)I z95YZa#i-pW9tVz53SRYRgT3n8z)*1ZOao?PR(N*7jB^ESdpt; zhGc%;q&;*T$yK{8js3iDQ!mOUxj=$n6McGC^Ne>h?h(VEsvSj=)&7(?X4%uTI;i+9>Do-H$JiLqZ?wV!qc+krEkai^|u@IH-*7%?R{ zgZ^^$9kPH~_8isgXbfXCMWx^lA^jEmG^S5f#$c1snpo5An z_N-Yer~CXbn%_L%>T_V_jzrS!WuS%GWHCI^B=DbSc5x%5HCc`WRMMn8+4sG|dcRwsxJ@KM0g4g*_jWhhdlNUREV56VqG4zW5Dk%PF zQ!u^B5a+_K(74?lqgWr7Rrfk7+&Z2B7O9{AEi3kP+=b$OO8SRyVnz&l|2}tX3s7m2 zKFuM(PS_-L|E>1c_ezJD_T3(6Y+LCyH+TfmR=}HFby~!FIG5eTJ(BEjS*lH#B<4+v zg36zgLlk&SDk)!IDsfsaxbM(+V7tKX3P=g>KQ-mdp5M$(Fvv zJ50&i@WSq1g1SV7@=(T{I_7S@U1b&P*qAYT9LWdXBo!0xUdMlzCF!6GsE*FGx^=y@ z_EOa;Vk|dQe~MZEa7<*uU-dYdG5vY}E|Y{yi%C#^!3g=DG}PHrpc#JK{pD9OyzHlYM7iH& z2Je@9dTgL4BVR51-tBwzdTD4L-3}z3rj5KAW?l6t!C-)x&ys+dBm$@-FMx{^DT~mZ zvm^=?>+plUO|!3q0l&$R53t_HlhR2@(y!OlFFl@s`pAJ!!w>D7XPqG;xH&4*BL?|_ zr~)TIr`Vs53c!2h&+6cdNfI#H>y0;zN;*sdEv66C6Y#w*0Q52$=dzcSIR&6cSi=RN z3FKxq7kCe*!E`|t3qhsA_C-PsvgB|wEdiLf1TD=3P45IiT?Yn11XDwJfG%QU83s>^ z1ZxfiPqGB+LWlg=3GT>qw=Tv*SEKt?#JBK1M5ww9_)-$=dlQo37d+z|x|c7>@}bw8K@%L z6N8jTSL5?@3IO3@MykS2n(%&u0%QWgOH~y&={-pvsVQNX}9QLuMzqP{AOqu4twZfB)u|Ks! zA4tTHvMn{+pjsiV?s!Y>E~r*0lO@|)w?CHhr&icn|EE?M{!y;2;drj(-&9~UmL<2w zG`rf;Sv4`CeR}@$N38_Bd`HXm?r=Pa3OZVE52y2GvgJWkaJpP?wF#nvhs&)#5EXpx z0@VtS=F0V^{-J`g?9YFx;P#(d;X4@2Un(%)@`a-)+44i;INI_DNKkDDV5pgI2jZBP z{C6rKPcr}SRKPSywHv{pL%siglb02FWoD1UJG>|fL zrC7Spb)lY(^Dh;gE6%H#RsI4|!TGNx{b2h0W#eR<`xWzI`ow9==5wd+nJ)T-&-SqQ z+W$cX-kuFD;;_0#WoY7d>gz&=k$^RLVOy8rsL!@f{z^<<7W>Jft@t^apjzQkLGr(A zh4BNfr)Yj3Ue0XCs<8f00s6*)WmUUh*E_@CTA@dDlMMdr_5WNeBs$pm`KMNBK`a0E z1h)wz@O;*M`Sx-(#Q6StxAgV>_v2yp``hco<@-ArQVtj_@CO9ml@FY34g~h_4;Y>+ zUqD0-6eX|+LF>v7XFLanbGYY&+m$~tQZAe%uoo@uDu9YlA-kdw+IC@-_yAo9Ng3FO z2a2P(#&bV75BGh1z6usX$^(F?pq~`)Is^!!g5=?T3ZCmw1xM+dJm3J0)-{L<^01nR z|55>$N2XVQ2{w!0bp(Mi-d`&4vqDmKB-1CS1X00tl*@Sj$A@7_hS}O^nx}ki7+9cM zYHdu2Yym0u2$1$;UF;btIXR`&i1dM_YZ8vB1Mf&XkuM za^@Qbyb$E5tY4LJ4n;h93cyk!im4$N$CXNqo>WnOaaZdsqePUYY$nPLgW(_ptE*z4 zOV;bIfJ&}ZT77gj3G^s1L!^c95AK+-Q57(@!ecq-6Q=Z=yH8BNOBI3<%EHlpm5?yg zC?#8x*_Xk8n{(T4B4r{dt&_}s*)EYW3nj>A`BkouT&^)By;zq9q5`?ol^kh`>N*PI zf24KNcRHZQdv2yI44MA2;IW_O% zBDpol$_Y2^8T}H!;j~!&R?eeU%SDE;4Va; zVd!$&U??-ldlCMKwmdS@bw3-k>~%e~UPY}0)*Siupw!RVHAdoO>pGS3Opuj>*{E$_ zN;gEeMa!~8r!&X_+G%Ygy*zWsT6?2w(5TWmuve0lIhdN3)oySESvj7HGXZgQjhgp5 zm5ugSw&#s4=^h}_riGOQiFS6X{i=2I`Td$5$jVuFT>4Kdhr$`@v5pJnO<`67v#W3` z$f3|>H->k}#ne<%V0$+SCEWTT`TGQ@3m$Ft9V|bZ!F2yMs z0n`OgMgq&}Uan$3+nAl?fM~^@;L>coYj3*Pu`?(}F~s3lE%S z`m^7QhP><$`W}CcK=){}5ET~yQCC6n;~fxAeWwT2OF{l)|3_T;7Gik&LPxPD?3!Lv zs=?H0mscZ$yb|n2D5w5FM((ticd@{vY;FZ*ru<1jrh{lC9lfs{k`KxdyErf56{qC9 zL3o)a#KuGv{1t7jo4Azm0t!x$XuI9Sqkbc&lKfB6Zkx52@+hP;TcJ># zy-8{rFJy2Y8Pok^hdWYmH2*g%M{3eO?Ka~` zwwPyWWb*%r_N_}CciMOsii{C0R^EFSn}mG2e|UBo7!A6|q%!Y*e7|tF$nAgpz(BU+JA|5+g%}3q=nNf5jtgzIU^KHsK%jkM~M9j1t4=A;6O zN`F<^iJlRryoL=#A8DZ~hjoiQeu;=^n~edD9y@K`NtrtMeq*(1E3H1P%yKWqNp%pv zk`nsZ@*vNBEy*m6MTqXCFZ8z;Ue*5 zGj306h2#8kPWgqapWW_TvsM_idrr}>gC;u+MHpR|+^MGP9y+fgtGSY$x@Jn%yB;U1 zy})r*9^THoG9a(iaA&_H3CI=9t{?hBS*IUq4fII+M|y{{8JuIt^>`tJ`D-FRU8Kp~0JQ;NHrFp9r5}?~F z2DAJo}&_i41BMl~kwd1We0D(zawG@e*eh%)rB^d!cWSn7#q zkTlt8gPJD}_N*MY#wX*{f+m}L9MqxOSvZX(rW(QTxS(ySncD-Wck2VQFX_}iaJm(S zM9CG@t8a11txl&*HWYDA9Lu{u&*gk*Oe2>#@lDVoPQh#}OH{SUyQ4EL9A1G{lZ#dJ zzCdJ7ZydKf$I)R(9Jn&&TP?I5yZTQ_n{|mtUMYE(cr5i10qSgMM<>ZT1|Bhuq_qsr5`Tqc5 z%J5!)01VXj>@)U+#~~wz7*&!UIg<5jsS|Rq)bAode9YMfX?D2RTIyE9Oo=jWBjwem zur`9`fFu7jQQs7$OnDS7x9L%26#neT7I83iUlYJ;RI5j`L%tT8L^ju#9|r+7)Et6O zxXlW3Q`aZ&SvWeT?YRl@YA92>j+d!xYhzzswZM{}9&cG?8GXD(luKNTiL`ceRrG~n zla>;^Avw$!zLU}m`TAo_4&?}4sFdXTL+~^}DZolQehJ2p+9%YfEW$7pCP`G&wV!_N&vO%w&uN}3k~tZN1nCPz!%i`N=}+fR6&c?5*2n3k%! z%1B@=$Ou?cn`&mKGNUFL6>(#xVRKUyrrDJ(jG%oPw4l^Grgk~ZGMD>tn5}huJgx47 zWtr%#N_Cf;8^QA{H78P{Z7~maf%>>mAQG0kD8p8KH&_%vBczg zxvvl-rZGRBwC<{_)5-g7M3FDkYrGKC9dpVn;ODP|Fh5%>n!@<5?}`;*G+YazjrCUz z1)0);@j@;*s8rLnf4`A~V->pvQWhi4Ot6~`;D|kZn3o=6Ch1h5&xhiVpE3wVLY-$v zGrpRA=J8aY`QXZnzNA$zzT&7GT(LL_V5bKx7@)ATi3+LTebk_xM08pcOyoyhu70Ib#UfxhDy@mX?*JXfJFHw9iIdqB(Un@fUSzYll2yWTEuKfnJ58`lGS;QaB1dF2fuOAL-_E(Akr=L@jb zha#ftK~TE#yB*6pL=q|Z@Uh>Y;57$M6xi$MGaW!CW&jUwFM?Gx9Y{+6L^OF6!5dT{ zX6-jX{_Z0Bc&!j96kq^&x8dq1LbwhQ69cWU5BGnvy$n?V-Rmm;e*xJ463hG_0Q-BE zcU!IEf&DqlXPu^Hu=qcW42y7A#l|G4l9EY{828A6HMAIi;!LH}A|N-*K-%xeT1m`s zRZ1vfOQKN5#Ru1k1jRC-vs`NI4}h7blK(x+A#NPI3i28JrDVfWPZCDlO_;N9fD*{| zsnhEKmVC`&Z0dl7`G_nEu;hun3?+=q_zjvljBFMN3$CP|10gTPSXV+QQ_IsLzNa0Q zu;DYOI>iG%*6;7sj!mZ7V5;$gwOo@vy^$ny4Y0h(bqaw;Qi za~DI)8XeE&Y5GzLe?*v#>)p@7%cD|EvzX10z0^jIloGxqRf?01cVezokh=xqC!Q2$ z(TnfP`%A0zfR+A@WvpQ53;)D23#*E-LrUzOY-JL-G-}OmSjp^((7?6uiVFTs1g@u}^qO&cd_W6w->0iFHC@186ulC6t)1$pxNCU5`=4M6{8o*1? zK7+6IjjS*RJ;?6IqDD5{ajZlxy%I9sn3A@!XU2Pqo}fnFKp||yi8#g=VF_>GB{QtT z*sHeiZXDIH0{O`-&>yR@3Zr?&_?(3VaXrNPunrQJ{zf%IDURzMH9?%?+fCFheW3S?rFRD7 zQ4mABiREj<)W<<*d5f~D=f7f^WfhFUgwV_M-G%eVL7}F72~@g)k0>w(NThW@FKdMm z2p^L5K*q4jmp$Bfqfte1p_rlGJ$md1%X?B|unyS+7SZqHh&?yEEPR;kuoUm3rcw1^ zJT!-0j;)g=QbJ#Vj;b6G;Ec?sQ<>Q+`x1*7@Flg8>6vBwp;Wk2$~p}i0A!1IEiOsY zqElt^PE@Y;huODZ4c?gA$25L;T~YMI`kB2J!7=KQ1r#A)^lsBqdFR<}Cr|q5P5XGGYsNhSD4bIoBxSz%6u&ph6-aE`c zpDOJ(t*e~{gQdBhlV_$mmQyX(>v{6KM|awkq51dlwK; zKycA1CEYElbS%0X1OaITDM69$?(XiElJ4#l6cnUHI#u>sAd3Aw@9+J`-upA$$8pbV zjyc9TX4rs&W}0^9Dle9#?A2A=q#&rdZLuBg93k+_??frTMj*;)Tmo)3jdI=^ajJSx z2(&5_<@PN(Md#4LE8M1*)2MS0?h%nUvg8{7n80tuqIM{muuojKI5s0yYQgl@m*w3X ztHh%_MW*uU!_`z+nXsn(%`uq#N9t1XqAA9+?$G%9M(j@p$C8D7yWB`OjfEz8+^ zfpjxY^TWfJNh;RW_Yw>rSQt(3Xw|&nO5YIEmsvQJI&8+p_s@^6)gFAj-SQ!DF;HaH zW*k4d67yiCC9UpBJO0ra;^;O9E0CjD^%_w=w+x_&!q;Nue4>Cs?NJ&4i$X;uC7c(OxlLpA9W z2UMpIEFaIQg1kX`6on2EwEBl5v+FT#KChBzwY;k!?>~ILA(}LS5ig|oL5cG1o!T{J z0M{@zfawXD2k{#>yD&w?I&!ToaxKc1r)GPiZ}>fVi!RfgfC=(Bdbyd-b2`UNPr2d2i}BN7<6^iM<^PE!6Sp*c!&_6tP{TFTG;4@ zO9si>2}3Zc$~g%m&aQgr5T36}N6^q6QP_>m+s$^&oo5+Iu2YA;%8f_GO@R=gHmRgx z@2qOou@_^mT*51oL+RMRSIIq&n>Co$O6NfXqx4VkBr@gm#w6|}S zw|^Cv&FQ3fFqTg!yHB`^Po%w1bhJ-wl~4SnPvW6ZGL~;DyKlORZ>GI(cC>G9_LHD0 z->x0^gfZs>blZJ&b=X^8rpR16tknAP6!&Xqb%}0u3Hvi=jU)06@pe&kkC9gKgaoy!ox6L>~Q{SOm0fLF{W_Qm~dcqxWrVrl#v0+QMeoji8FdcLPnT; zOoUo>gvL~aZIvIPl9d)mq@HS|2vH;yp@Ttnk?5b6riXakdfhgQ^MRkI&9BM)scvqvwtQ0Y}l8r$f=# z80nWd60cY$!loqpt0EU}B|tSLLPI9O@FnfUMD88oyv|8lQ$^X2Njy;n?DHlbK2Aa+ zO8gX)JlSNoJp~x9Mus*jLutGf?MgNZCOU?S=2@HAOEZRzsaJ2M6*YqD_1bqgsG3LHb~P8M8v%DxrsuP+~V)0hP>) z7y@}%*{EquB_qrXwPa&PeMFB46I=4VgWPx^eFQv1yL@<$o75CvzH_Rgd}ZFz7D5R; zMn4YEL^soNM4oC$wv{ZNAGS)zaUAq~0Xz;#B{p~WG=2kNt|Ciej%-0HBVJxN##%0c zFYYyQnZR$q+1MW9I>bHs7pA=QSFILemIV*We-k=l5J`t1%fw{W_k59qre*qM zQ)JciA*WMS@=&{$a2}YX)O8Et#u-=%S45;3LJ>Z<_Dg#9*xEMkd7qo!~X z=+~kkDBg%yM`@9*S)?L~p+;_y(JsonnbeKiIvpG9n{{U^DlzVsCVUwqV{L1h;iS!T z>?T@@$XXo6ny0IkxK_r1iYOX26Z@lN{~4L)8Pus-91SuEO?Y$9Q-^Ze+)8ZZ`cpmR zx+#UEF-xyFU14ZDhEr;<1#DqP_#MebHq_*PNYA~U|i`1T)mDu z{ggTZva0cEIBbjxZB7sC_2DgRc}Xz9&3AM4p{))iv_77b71m3j{@wC&X@Dm4m7 z8g5!Vv`7)lZT)(&lqT+wMl;JIR@oSKmzI?D7FFFAnLHfj2Q*2TRftT@ZyYi3{BQG1 z#OC-Gb)z&t26i3M$wy5*sbV!nkMeKp$<5$glg2(ldo)$WFV_Tg>Es_my2EPbDFL7o2NaKWSjH0s zsNKl+M?utYi#5eGR0lNRp{2yNY2}s~IrjRS%Ei9yO2}uu6`NFK+Nvnq(e*MD%b^ce zr)-KF?S+IIwwu%|3BWuz;LQ{4c&MUj4S+9Wt(@^gof*6j+<>k1d%lnZ#yxe^j({Um zK<*RDN|_t^A^p%HDc)-sCmMjO0e~m#LIvCaj-5fIn?q2LL#VVvhNHd0vbm?&Nr(Ks zaT2Jwvx)EElW)Ce!73nS?imtw?XV0TyfQxwMbz&80D|0gEK*=tn%R1XQ}T zhWBm5Z{J3#m&ksKPm;HKL5tkiR68mbGJ;zQm=px4xfYt2>;D29#!*WblFo8`| z_u~pGZvep+>NIuVd-w9~IV?x{?1qFSyE#jOW=k;dJQ^6akQHafdhE+#a*M*08*m2>^Ry8M;r&?7*5tf0!qe(0 z*g8}vT57IPXfpsZJUS)IPefLF!FSen%do56vaWv;FH}r zmq^Gt(f#-LO!Q{TXfc*0Q8DSTZXhA!&Y@yUaS?2w*|)u}yFaH^(mNT?-D%cgsI#yW ziy^SMfP*s3A_X`If6YDgQa7bRi)L15UW(y8+8r&_!vsv^xlwk==hTG-5#kN?a@|mn zi{z%!s`H&n$ip7|$+I-o3Uu?U@e5ZFm$c{bcBx*1Jm*ACn&RsfWVnlFfz`}g*&^oH zuwLZ~QW-ja02HqU*pezIjknL3-s$4Y7}0gHLoREdCN46{Hfgga!_F_O@-4i&i7bAH z6aDp$yMa8hO2e{XEfM@?L7|y@1OG3elR4<$Ed~!u5KTMCwV`N>sMo4JgQU0&$`- zCyc|5_qS!G)B3yC#_?OVh}*TYYiKYd=uo@qAWpT=NOzjpxBND!J{-)v7D4{Nff9gJ zA*6k8<8=an+aDS4F6zc-!16vG0SxYq2C7$k+qkFOqVE`aoDg~|Z*6A24Z9pq(5k1J%zcN zBq?$?T>UQh!iH|~=balgN~6<{4>P+qx#DOW!)xCG;U3aP|6z1PT5b?eS<+>2@1*2u=`8^SDf^%I9g1#5I zuE3i-pj?;SThUN(t}8}v@w;5t+{?qB`@G)}Th~BRYzCzF-=)}>qB7q*fKS8ZYKE#$a$ohW$}{aFo@Djf^H8-${P_N0&N}$4N|qx2;l<%nUU>EKeq7p%&#=Gs!t{pI-Uu`K z$su1y>Q@?8d%U>O{dLelpa>(=GYqE~l@%L2}sXsgO z!aR-bHpqHU+6eN(d_Ajvnys+~Bev*2oi-o5N-RaJ@{<=QWl#3F5q|g@gxIoIxW@er zu_aYWA3IZR|LzGCpyJh(aN*9oN1xY1vp>pmyBX0t^KcSEVR~a(Z>?#0jSyS`dtsDvo?zgGLNWjBg^@^sSMF@a zsM+*j@K3q^;2(Qo&ZJnOA=6@C71K%R>#&V3){K91$bToro}E>X*yI2x-u7I2@C2g8 z)VT%d*R~RgL0%YF!`#bf)#U3L6e24a0->Sq+IU#7(jYHP&9;Z8L`GLS1g{!SYa~n) zDW5e5KnuP#3JM}q-&w3z4QD5^qgS8FuDVx?Z6|8rx&e!yPp>i6NNjIwCUXT`pR&Uv zsZ(}Qc0{Ir*YGgHcX*_ za>N?Ch9l3;svw6v4#lX^iVbw$RY@Pc5t?~49aAh(neQF)F;0b9k{1qn8y=XtT&0G+ z{sLk2+`OY4<-BX-C9yUFqv9&m!w%z>t|Iy70eKqls933+A_{rJUYF|mOw=Fm73I}} z&Z-EcO~ZwGcUvY~(A00WphOl2vxw>uh);E^?U&A4(iq(CndMJm}>zSE5-hbYRSoqLO{N+OXa(V9vrIlv& z%K(N-lD>cl!)NHT*`4E6lQ-ucmCeNFTOHI2~jV?ow>HOjnz3N6$@+h z7zpPM`5`Yx{2NE0v+9{cp6X_hq_lZy_<`I4S%He4m3~adTNcQIVJ7Vm3B{LdwYM1SzVCPX52qpq??GyqA>^w?ta=V5~rO_#q z?C$xa^XRX3(I1>gXV*%jE-xt%g%Vhyhr*=z)p?X93B6N`vg8CTAn^%q~h_m_44i-morpLPHG=wu{aTwQaT(VuPGVm+hk0hw1UZgvhMC z`Vzl{$Sf+ZqwVyR!%CFpF~9mDM3$h}E&PiRnaZ#1qT=lIwFl|nM&$R-Bj>Ahhp*i+ zku>`~$<1+_*NLSz4DNfcvlj%+)?z2E7^fV9DU^>z9}oNOzWZVqO?>$__v^K?*F&m^ zth@uua6{5z|3>H2BW9Ty8Kpai)6zKfRd?$*180`6h`o&5gfg8^--hF(cW&vod-W;- zc>}+2e=h1-%;D0d5&1v0ixSNhlQ*Lro4_v+6C6qW$0PDbyXY^jl}se?%cu}|h)f-> zqalQLc%t|)r6L^dB}`AR>*2wOb@1Vo278ykAwrK4<)#}B2^f8IixgYzj?{2y#O{5v z+0HIX*&@Ou5>bk)OhA`#IS7zh#8ANqpyawuScpanavlNI>PsW5>N4o`W5l&KLc=RT z4j-2(aa|Oe$acI;O1GF^11;E?9vTCdXB?9Hsi84r)=R7z)sn`xBe8=YGuc|iq)cs5 zo^^78oJW)))}@aaL4-uw@rq_UpaCkp54n!8&Z)HbN?8)b?BLxizBn5h2uaYA+5DK@ zgPxqbDS&`%L2{sMEJP6@W`&sW)lykM{PZ*^h#b+ov0))Nt?8J2MnYh_=*5Txo;#1) z0{9@AWk#l2OiA#7Jk+D|FVR@DY)*2#0)cdyPU1QAc&jiO2efNM=yXyq&O>BKBzYEG z8Oj|%r8d@}yANpd)F!%>8eJ+19)d?C4)(atTA2OpjCuwdb8Re4IvP5)=G8ogMwIq5Y(Yx!&g>vRMVPUq|VHar$3ixHgzO9!FmmqgCEaa$nS%TwRns{)_*hp zAt{>Xtb!eNtN^B!;v>zM*3XR;wPh0V@#G~G?qTCKsbW{m-q)~PhfRRMVs~21K_~fUcEgo*e5Hx>?kjqMr9PLa|Lc+fT}1{3+e<<9rE`c}ct_ z#{D`X!67mku=D78{E90z;kn)REIADe+6!|b6Mi0g#VOz0ZR@J;{XHY`tD*NhyDd05 zJxT)J3r`r}!RY0$c3ZiE4hGk`2B=R^7^{)@=9|1xKZGZ%6lS(7nDH5`S%5PVd&k{% z5oqty{qJ_5(;VyRyJU%v@H|lgC8rUdR(ML*vKb5u3(Q=y+iDbUESzT~9xImj|MQH* z9le+Pf67Qy%wHvPEt9O$_E zTh4~wixg_!7g%<^xE<=k-11ebF6)eTeH79`fgUiI7E`XbEl$y*rv*2ji%bZBjo)da@(#_xG0P>$)gnAm_a z5(WF`c3Vyq#M^v&12?mHZ1a?EN7LUpEytd;dPmDX4S6bwG3O>=U}dSzJX+=IM}Dyv z`rikkmm`mQ!RY0U**B?Y83}C%>(Lx835T^YvC`LT#S>EMuPb-N+h0B<5Ov%*Nu1@{ zjF{km(&k9;;pNmg;;Y3E)D05S`kptSpPF@1-{o>`H@Pvlx2yl*lSoKh+eg0FJy}HZ zi$NbgudFoCH)OsW0NZVEEIs~`k*LFjx`xsKG3;#vi#H{b8`Y?~rGM-COX*KIpuNzc zjrJr>^@PSS57BDVtzigCW>bk*U5t#}`^tQtbMo07pFNK)c=@5u;& z(yNhSxXpLfB^7&O%#XDO*@jpU8S@p$ZtI)nY1;~Kz1`VyClngO3i;K}NA?IFAg#~+ z^(aEPE>Y5)l8|y$5|XErm4e;+febBr1}q$68=~7x@uPBhAv<04s@rs=dT~UxXuw`U z2D7S1^3>BMmGtA8{)noJPnULqE!W?M6AbH5*HhH?>{?l&qmV_1vX`{;()$FhzqLx` zz{CcQ2-??Wu43r+6+pi?FJI2~|0 z-brdbB5Q_*A9TgpO}+*mdhis+Ocz6M$X9JQ6{{~>_;xoaBe9!Ch?pZP0vrwn+ihnN z`QR#t!@mwad3W~mbGvQ#NaFEs7B6D1jMq=eX*rXehIII^$>|cCkphPwG7_Mn=gaw+ zDIl>Z)LDJPK(KP!<{^i%I#2sU&|b(YjkmU1pM5;hjI&=H?MAJOc|y~~v|kbow&)tV^js z7Mjs86W8FWuKYeZZSG}NI}Y z2CXlwTs}y@?Fsk3`JC;5)ZBRAPdjty;O?n@k+aWEBV-bJBdq5#J8E6ZN2%7PX+8!w za++Ik6Z$V4T{lbcPKpZKhKX=IV;;a1_bYl#IzV9+R>G-yJ9viFm+ucQrvgomN0zo(vPC3U<>HP< zv!yC>mHSqQy{DDpsvqS|9U0q#{8*)*wKXMEmsRg(V7%D3(X^#qhdijBH07|h4o^@s zxHUu5|5?7+g|>2@7Gl=TDozg2 zBa=Y{m$q~*P*(GY<(uFo$#1fnj3!K{oV9<^onAU)*5Z>loNHK(y6HW zMpeJC??%qz^ewsPYh=5?@0agCWHp(F`7I0lw9W`F`H5}#aj}-2spcYoAh^UQ_UsH$ z9A5_$T%Jzn@rxi74FRDV!33926ZvvM)z)KQmv6y!=Z`j#8G+!eCV2&L+H^#@(tbwC zM11DQ*iT&G^~2ZOIpT+57R=%q5Krh#4(EfPMcJQMK-kyDnZAtH=H~D?u%>f}P70dS zoyv&&thu6h{UDokg<9#IoRb)oBvX|orW;sMqR`c#l-*Ue)5VZf-S@srG@}H zj8;Er$Tz&L*;q{GvVH~e9(Xy2RuhhQqIx zkq`@10~M%*BZ~F(X*8$0<)*j8pF@+xO5BVx(;v*c-E_#m;2jqI%$U?4o z!y3!pf6T&wqCX@CvvVUb)iA?Z%&5ZjkR~QJ+j4?QRY%mACaUmSCbMHUy*MXlV&rm? zprmn9Hk(vhWv+&lrl|HZV z`Zu)N=4D}XO%Zl?-bdV2x2{Ru3ni@!@UeKX+rvyN<=GGiSuER+paOZn0OL^6--WU4 zbp~KkEl5DZjh0y_%?FJEJyXK-=97Zz_AwFM!a{Emi3OCn!?WcZY!!aqRZkaasqRVr zCS|bdoZ#{@8+zxkBcjZJ%Y~cn82)XuBxjRiaBn8_CW$%0TznkR5ac@Bh5Qz($^vkg+T9GyEheYIchkM zcf3q<7y6cj2iN_!r@|$a1e7;YE(_QIkbs>4>HE_R6=i_>ewPPFXa6Gs`)rpd4qy`g zAv(Lb{P4U+NwWvTK-JdlO}8Yj{$<{Q9^`ktgROzmz+dwY)KcAtvk%C`&M9bM-oXzu z6huM$%?$ku@1Oyj2}D8r(=PwNiFZJzyB~1DJ9s+OvK03y0`8q!e(&SZIJ|k);6z)k zbfNR;tXQ`gh4eFgaCDYQYbyqjU(C>d!aINz;*%n05rs!6<##QANJ#H5aUF)C1t)dWld6>n!Dg8szj@FLsze9r z)T>H>cz@9QuAnZ!MO1(+a?^*nG>R`>1we(;>U*UrmA8Bu3q(O9)Q%^{>Y!+6QVQ{Z z!14xts7jdCASA%T`VGcBy9ft7q5u2l`?w>W9XwLPL6+r-GxisW%J4%#PCev2GU#q6?WNTfa!Z3n z0+dqR$Zn&4#uQZb5AhgWGe*gMw1!XmsmOTJP)-M)f_8Zb#O0=A%5S^;7Xe#Qg&_!i zz?ai3ir>luf-Dz9t|l}Y`FxkZv9hCjC^*h4-aQP3^hh<+)JRGxmd3Fg?S5I^io8|s zNJ4oUXqVTaX2cnV911tVH^UY|c2KaGO3gl}pec^CR^+Ngz=@W{h8D~%NHRJ`341C;{iTiT5@*Et7fO~+_ zORPsK*K(N|1IA=@BUq=JK{wvBT^@AfJrl4C3`NAh?eaa-<29gNK7jU>F|wc={-|qK zX-0u5b*lQ+JvQs-nu8WOMkD${Y!w}SlDwDXUjPI$L=dFgPa~uA2l-b@f?xP=BO^9E z84S++wss+IqYcuXjf@%z;vZ-WR+>~`aOQUjO}_{laP!`;*Dgy{O3=u##nS%=h@9V! z401EO|2H6VToqL>)-DcgE-g<=GKYJCstPeMDMnuqIrp{T-pK@?tzAsn24LC(xxFJi z+H%sbX$xNwIlc-H!16DZMpEDzII|lgRv`xj&SdL4g!P~!pGb`%yDb#yP z?rXf?Gc0(*!@#2(WyaP}N~OL!^&8rP=KZ|J!WXv1&L?Jv%5Dh7wvVzg?gYQ_61k9n zzi;0APew)=;^Un`bxxro9|VP`yT5MU`~Aph5LG)&`WJ{CqW89B{6)cogq6JGdqD3< zNs71bGqV^b*|pY3&l+n=Sr6p}A0Ny-Y|LO9ojrJ;pC; zNl2f#q%_b2oObAB*Yzp!>tnkAz<5s(x~s&Dx_69hdNTQ%b7mkMd@@FY73k*qg|^Vu zDa?6^wh-!}9v6Xqo05gM#?U0jy@#GbrBnO@oOxyox}4DbfwsV>)U6|&9^L-r8dI2D z5EWh6{j_qaNsOIdL{?PeF^ShKFkyXqWa)7dJL!)bIdCmK^%2?^7VdRY;y!Zn5Ax7? zVEWQ1!t6LWk+#f(6Y`e1^yKR>>V0mdaj21jiH~7+FgAUBFHi<`G6sba_A<}buHVbQ zAViMhqOVK2b-EV28*g3laG?aMRly{=FoBwUB3oyc&B!}f=Wc!mGU}8$!BykS$`>>Q zHbf4j*I$3Z#=ThjzxxHJN9$$&;LJQOzICpA`N~3lp_Kjb3;x0`{_Yq2U!#=O+Ad$K ze6(i3W$+DnbJ=zRIpKd!DXUoM|Ehd>RX=@lu(I@joKmJQCnb4CDZ^HZP&=cP?UQ&w zXn4Y5av3;z7{qD@bb%;kzr4U*0B_u}J;1;l932r~PLT3dSpZ@egI?`M{->tDy1?Zo z-30@0z_0dSvWrbai}4XcsJkz*i*adr#trh!O!M)K2P#4A;*H8KVUY6GKI}@DSDd&O zLcd1bYI>o3)xM@a{xhXaUR}JcRL%FynQ7^O`7A!Soj9rn1PcE9}*NOq?)!w%}v=TtPKXvjn;L8Q>8}NoI%>Q6+Z{@V_AYz&0#3sGt z_|w7sT!a_6{1jj7ZXoy)Cr9!)gorx}G1OncO z&){7K-h5HMG-cnFB>S97H*bP$Cy3d+S68{7qJS=NFbj9ZM&Ng_(Ae^m4P1btw7v!p z{Ib<3gzz~raK~Y^N;&4sNpfXfB1SpY?jcS|O%ntf6lsn?QS#Bi=SO(v-5%A=yurAN z6FJ?5amCVzADMhK1!vEd30+h+qJ|>LLGO{2zNi9Ugo25pjmELYs_eT|MMKtIcHRhS zmFE|fGSCIiIHnM|lQ(iqras?HQ`Ns$Xy2Eob?}4oHO>K|dFf(87v&8zl(f3hIFX!S zche1)S~ul;k#Gi=>|2+RPsKmD!K60GCR~S)!(pf$uo^5Hu;2k4HG|mW>tI@+0 zscGxA6DpgX_s7(J2P647D=s9vFv_UnnuY$by6S%TzUtuKwWmBgTCcAUr}3p4Q9l~d zPV&HfE=tAV_@nLQuo2uYZ ziBfk3+7Plht3NojWbU>+zDie+K--&87VA#>ZhB?k_yTo}17hGD##$yB1-*=W7jr*c zWLd9%rD=5!8w%yKb)5K5u2aMYcL-w$9GBS2Xpy=%T@>%nzAUloiWdA{*y02UTL!-! zk=$5(yx~4ym~dZ(txi8O`L9ekTR}>2KR6lb>vO#Sw=E@%iZoaMPbQTgwv_+gi2MZ; z?(&HI=Oz^}-v6HpTUD|`IOll(DuCCSNreI<8`XzWw;kx`HFPCSN3!o9fIJ`L`N^Gu zJUJDSBUEiyNImJD&Ox4JIt}q(L7smckv}ovzHTY!!j|zZu2c}n(>a|VJJbK>r(3~y zv)WH{Wphi%sls?F_um>9BEIilDDKCnTfwZNV zKjHnYn$`zPx8qn|oZvR4f%%{iuu+u640kMx?;TLEhpA zkmrR-<=cq-+7JG{u=Tfo@c(2>`6vD0zZsF+LQNT`u#orophW>tNUhFLe91zEl~|zT z&@;gGd(cS#dSj2g#j2ytsX_3*Up43 zsdi7;CLKQONq+2O2Cus>K^z&!YpulaL*9bisVE?h3?|Z$kEr{?b9;(5vUUbvWsQaV z+0jDO!<#;u`QQ=RPOm%UuSRnVb7;8@WK!`r#Y=-f!~1^;FQ{a(z$N2P#HLh0=g{88 z=nT%(Y2iiVD9GR1x?sXhAea6WUbw`BsZZnrKmy#k19QZc;fLk-#5>EykrMhBCxdvYM6%@#vRLDl5ix zl*0+Z<>|LMD1j!aa==PrM%qsR!g&mNv3fKHR?Qr7D_^-p{?2IA6tb|vY9UFuF|9je zId{$Y6xvA?WmnV3?*!?OLhw_<`8}rkJm@2v@e7km_jqLu2=5Rgu=iHx9_E_VKi#6 zegAh-);Ih9-)Yakm9qZ33Ag_q?Ri>M`GWSGgU$mU5|;TIQ>YQJmN{Q&&m?qW29j!L zLn1IrAG}9BFt@-^coz?%J^uk5IxhwRraiBQr=NpEj}@{M5c>sO>RAzMqJN<$ zLvtHDUu|8Et|@+yK^wi|If;D8K>i?;h$4dS1?~CU^`qkpI21aS?TDS~rY>Vh-V<`7 z#Y3^j7!;R{-GrduVF0B6Uw?;4|3KMy{ZZM6`Ks)f{-o@y{X*Ga3;%<%|NrUV;lGF9 z|Bv3x=kWVq8oQ};^MiK>3Y3rKgNy3m;V;AQ|5SGVTx4~+`8z1z#{c-;E)bktsegdO0Q==O{(KR(21B+7bdit&K(gl<+@cWNPpP`-UJpmpXJFfgQhD)2#6X&bK~CuOJ{RW#XN7Ajwb zxXW8P)kWwPUbPZAi_Gxk+q5!L`UZZnu!dQHb7S`>XxTJc>rp8ewOHp%_f;$iPKXG| z`@j1O3x^Z(`nF!s>@SoHk|vT%$_22T0<2t6-ui`d!CL+QBjw_MYX!;Q|H5#?X~?w7 zpPQG{!)@CF6+@N46(qK55qHlrrRk;6#($32{HtQZ-~NRy;$muy2VVT+3X&c>BXBXH zRWVw?Z;J`zRl2Uo3Wh->e{LD7=d_@(9>PNjVDT2A2Ne_MSGuhZV0^m1_s!P&T?NU% zS1!~sgx-c<!<({Jmv6tw{j$Ngp{W|W~Up%Pl!O|T`$xa0Qd>UAO^N-O@C81u8j1Hc&i^gh z_-kv+|KtIDw>Q@~biVVcFaSVW{m5lciR~Gk2C!>o)P-OGbXT>@QLFbmeQs!S*8Wsh zUU=UAq%1}KCC;BE_Uyb!n}Z zasGE+Pd>vbCc_|8fr~_p(^GueY9`_XncB3#?N5{u{#u}4FB@N%kzEWtU^NTW{`AWS z@I@zVB!>~$+LHgE;oJ@Bhm!(B1u7EJ71PFT)xU0%O&iwmvZjw;|0eTC{VK_F9@XTu0mP zAh|)kReLKcpQ(tvXr0ODRsET0+$&QLDiZna1Ndtv>{Iz(rG{y%FYQlRem0X(X76#J z^#1t+SZapL_x8r&8^b`vqw_?;xwVDdhfyraE>V9uRsD!#B_r!IZkzl>-f!UJ4U~^J zTQMy@Zgrxn2ixo(5%YF;iO_%g3LpQ?T{Ug&pSM2&1X~>c*8cQO4-oew{O81*&Jd!X z;Nu}ua?WyCip=ecV#uWWB%(MbrNS=dTYeAAF;<}&M234y0vW6COYKr{-pOnaVuRF^ zgvRbTFA{mHx|!Yi#w;}?*d3#NdWg<>swY%PS5Jq9l4v=_6YUC-Kq$ouri}1PNC>zS zwyQhoVd-US3m5ebzK<^AN9;FP6W24OwW?`{RsExzSu_~V9>DUX4WLd~)Ycx`vDDZR zaQjm=)wt!CPS_lNJ@di%w{^Z`LouKt5mXU(e+3qvM>Tz|VF|Z=vSfCRPFozcXejsc zktw&PXyxirX`p$sF`{z5#Q6ZmH!<=f;jKc?2WK|E1ipI&Hd z2B)>tJyE${QABY>eNU2jvI&%I^p>Q_YR?4~iP#F^KV3Hs1OmE&`=yyJ`39dNN8QkE zL2>>9L#{&)w{Y9?Y!8_S@?0pMq14IwFq)sXZVhTxNWp%$H}qFBs{+ zSNs}2inyJp&?+q)!ttqXb*;O(M*TG1Dkp7K*C%ImLsf+pl=Rx!(tO_56AXI1);d^5 zH#Z203yc}{AJW2-MaUK@gC}9%6IkSKUjGFU3l%so{I`< zogaz@$Ff0iwScDtprSzrrvFrWezaz}P7PDN6EBu1{$T1!%`ELW$atTK%XM&3H26`B zc4>qwKck+9PidoCq=X&RGVssulmC~!@-KH*{cxZBQEQ{x z4}z;bOoO;_UNl%7Fh}>#iUu#VmVa44{!MzmTr_y`${*N6__?#{oAI7^SlmK{is;T8 z`oM`v`?u`;Qb&u?Nz=fR$h`{trT@|^-|ec!{>$539>rrf(VPz6{x31!6Nu?pelgw; zf{piRqG$I>rwt-D1tNI6YyrQw!5-Yux;IWeLw?3+oj{2z#Pzpl*5^ z&X#C9$uByqewLoEN7FKaJF7zFl|QCah;(&zg=~j!g~XMpr2rLb!1d!_doF%(QJ!^H zm8le5dgWhFrk66RHvEnBEFU_?4I;nu6khw@MfrF-olg+da}gV^r^OB~8kB>sD9eD4$t)o| zkc-Ao&t#Jniy4#$cq8>>wdn@&x>M1l5*w#*=mg0=0tWkVB4nrCyHr2E>SOFX5^6O@ zPhc;qg2<$V)m2XTAi@tDsdU^kdV$a)Vhk6SN!ewzg3yk%Q*$R*Q7xpr=xcZlJZeA| z9>45z{0mCT*)9PKfd!(Z`2FPv4>F**V+jGn0|*7a6&az$2qudJQQz;57X!;U?2UZg6&RvSLQo;lr9S}Y9qR6O#3r3|cdO!bylCsfS`IVk&aTgvfzJ&aB zi}&J!WN#JYt2PX5v~Y>yyf^1fvK;yPi3tLJ`@qLvnq*%DL#<5|=e3_Fs}wL_pHos$ z?&6Lj)*V{3KzU)E-4+*Glf;80Rd{z-CM9oKRFTvkG&J+&ouX4fZXfK#ZP8H%)W29- z-FS1NN&U(|`EW04Vc_ngyU&ul;YMelQ67Oy38gUaxn2((8@EL?PZ#<^&+He}_QaFZ zPqtpNp;(ZZ7aIji5e16QV33+!8}gxQHw5^R@fphcGX1$pmUwDJicQ!kgO^V0k4>_F zmT}-~Cc|MEfx&54_<)HJesa^<89}-@IhkQft1B5v1~{vkX}0jIIjO0@+}zB})z#dh zO7Ly5bR1qS=Xq(YNq+6{bY4N|XDX1GZbhZVPei|Z7cK4QA|t)w*Uh5sOl%a74g6zaMy|0Ud)^Q>)r);4LE(J8{i}=< zlu{Bz-$Ov?wf}=n-azmPsFZLeQdCY(PpRZBsaU4i46AwAZ)Kc|BBNjZ;CG@sCH^Sm z$crW9C+yXW^N{!IYF=i|OZRu&+P(_j-QM_uLT`u-#@}s|eaC znZ>u}4GV+NU<@hcpi;sd33`mgsP6tuX3Zs$a%JxLrQcCf&XZLjN=ik_C&xKZy-8=@ z?+qvgnj$*P69LwW5Oxuwny018rgINzo)w7R<71liL1QZv#ZH4ji$iTkYAw0mlV?DZ z2j~vmD~v1 zYb)~Slp6!)U-2PvhrDO&YyvVq^tfh92AkI2jC}-SuvHV!_<5)W8glDC48IP<)%{i* zen!HRV}kYl_BPqshfXS>TKd80_R!YiC+3r~Xm8kA0dy+C9yN6>=&BGRQrm*zrg})s z*j?hbrQtnR>^HfVx}?c09X)Bdu<6rVV<4IN3i62=C+z7um>)GdX#nRFRZsgKkio@2 z11_;&HSM=O*5cVTeOLFedcZ%wOzd-A$tNgI7S~F#)Ws);Zdf%#sj4h+q_imf0yv)G zNN`E?UrPzIAG9pVK9g^rFzLX#n!4(rKb>Rf&gfd_pNXq`@bGCHE2}cKiF}VxTj5R7 zBE$$IZ7-Wil@&vxh^H}ya}nk@6(5#gg))N_otef`!!Io>o!GNgXK_Untx7QswhXF$ zWFvXNJ4y?%MMxfveDsL#tt7yq?3i%BJ=o}l+s)pkPtjD+?=b$+3n~{+o z-sk!_4+yGiC70UrRsXnvCGyTLZFg?s6K?WRAN$Z9DIPB0Cv@*mZEkkiJ>L#nvlyWZ zs_tDA+>}bgp}C!<+Q)aW?D{tT6+-=Fy-wLqOx4jC6kiQQc>k_LRR5sNUD1Isy_Hi2 zo>vu(HRFh(d$H&VuCE@g2i#!Vj~Urq%daK+G^z!tL~VWF++N8$Xuc0MJZrQWDK>{* zdSK^=`=|$ z&Afv2fMHDN-RC*SO)MYEBRin?uDI~<-IG3e@;CeF9RllJz%Co6D;y9Tf zrISDKar4xAV=+!>FIT>J=Z%#e{g_kiScBYFK+LBV$5(6}YoF~8I$o)7$DMv$4l>vt z35xD6JN=ZmRrm2K@e_|x?fkpiz|jYGPh5ACOpdZ}4nzo_Mq%ksU}Z7@;0yr`P8T4w3#wxu+a-j zap4Q6mHZe%qN;e_*XjnfR_{5=9JFm$Z+En^Gpd78=I_4ew9YC*u1!StG+xBqZ;a(# zG(`8^tJ*5B3!?s|(d$H|@4O-UPUg$Ei#plkO zNS@5Ef@pY;FBY!~hZ>%38Q_2<+=*h35~`%_@rhBC$RkF_p1>Wy*;dP&B(f7vi7+;M z!I!2|C02{FhT@Gs%lP+hU}Lm&8%89fw;`f`bT$lIUL!LW3cQH9n^vy;Eim&pH!x`1 zhV~Krqp-Wb`VVhvaS=J-hUhAEO;K|Z{Y22V{qNksK_^;HP;t0hZL}_HtB&P0u3H^P zNaG`|FzQe8=n1nVP&(Ls^S^tHoe8_jt@j3auhN21F=o49l=<%0#~5n{jx-2m{`0n7 z$y*SAv2Fj-*?^>oc=)>JGt|yq_Z!Al5Oe~&zy&`xr0;~?A8%^)p>Jo1gPGTIPk_qn z;F!C->#M?(jii#^lMjto=|QL%u&}$)90+cRzVVKyU*raN+omG@;5~0~Y4e(CyYEmj zobLj^qRf9l#SlcGd`3wAA+tD}^W`xHLe{Bmx?=Sv!`}Wq%3Ox~#*=@BG8g1LD)gxm z1E9sBv{1_B_{KBE$n|ElDajU@Xs)L=6dSfp^%nXYN~DQYWwo=_Yz0ssFEq4XJ8y{Y zO~XF`A?rZf_NE_{J+u*kAEPxGn(r+ynku$1d}By3UOEW^N0)#SQ%IDC9@$Q5mxwJ> zX!!LEQXwBPIpg7QXNiogdmY_w<->&CVZGD{OyaJiR)o*%5~=Or#I=Tpqbi}v=sa?I zv~YH!I<6Zqc~$o&EQVUPy8l1a{RLl^>(+-01Ja>4T_W8n(jnd52m%7qNGq*$cXxMp zgS51Ci-dG2AP9)^UN_j&Ii2fSYyaN8zr;DtF~%{Dzu_I~!vRy#v4pWs3g+5;X$$7D z#4hMumahCkiv*?UUlO9RW12ZkbW=_Sa)EC9iUxk*PyX{xO`d+D@^YspMl$TLF)nnB zqfX20bg8W4FQEFStOITqQL5^q8>+bJcjLu1-w%uqMv<{=h4-6ECd6rU=R!f6rai$^ z3>;s{7MHn9h|U30CAs>km5JlnTqX_+lF+v@c~n(u(t^@&Bp0Z^01jqmY51X?NuFn! zPS%th8bLPZY9_aZ3kScV&L9TJ%}W!D7`+(zw4IA_uh26g9}SO*tO_k zCi!&lnNnfQ;Lb*S!Ay!(O(pkfks_Lz>PW+26(UKozPuUbL`F#UCp-EF50EqxUJf7I z)lMi_I9JYgdXBo(ru`}S%npU3jo-&YmvSJtr zq)ZmLsFXOokOEZZADT8~EHxFd?j2)wHg5%&x~wBH4vc;PCqyURZ7oIL_;7crcm($t zd#3v7;d6Qft3cQ!KA2d)Hf?xS`jGb5&$p`0P5R4<8C-OsYpvQtS;XnNkn`D@g4#48 zZ!0R8V_}l^c74Dv4}Ty%+St9_cuN*O#CBli)?4pfdFQ<%xBI0~NUc3tx339(ISReh zvO+*00LjUTe;zo@Q&~ZL8fQC77S0=pMd0*h;4nD5_hz!}IfcJWA{#a&lIb?=eW%*D z&8SboDi?>r#qP*N*W#uh@A8GSAH4o{6iO(k&9Qc{F;@7Z#I^ZjRMtZO+nY@v&i&SR zU+d&Od#MG7` zdhD7ZJjcIVUT(gLl>fKO%YPm?P=Hk~Y+D;(l?xbV{=-E1GCBG0k3xT%D2vkmw7h(> z4NR1Ov%Gu~jOsyEbGvDXR{USW^z)wNLtcv}i_6 zJG^*iAEm(D2y;3_$iRpr#h0Vd3ca9a7dm~ceslA|f3>{)TH`cU29Evhas@z4jRU1>E(NZ`=q?R}he#O!?k=Tesl)$DNE!I*=jNN0QdRsl zD~mw7a4{c%nRlx6k)F2^=U>qHRYV-gJF%Kafr^(~NKLcpWWVar_5;)}VdgGC^HXABH*86tg))tj$e5$>5l z23EOL-)Hs?+R36)621+r9-}h7Rw$DzI+c%Cb(c*uDpm7A8VwPa6?c;8EqnX5&kkZ+ zrI&!@hoi!55c9td6b#mY2Z5!3Zx! zfAqZ*TXVjweczpDpmA~r`e@!QYwV1J_df5K*Xv{Q#xpD4<;wCRDrag$<evU7&t5-?oa z2uY`6O)_0GAy}G1P4@_6PN2KJyWGNa<9`0NdlfJk^3mifhH&`k5nwGV3ccVU&Fm;c zUu6dIBPnIGE0xRRaa?FC50CJHnwn+(-Mj>+Y+wsnTMmPI-;+Bs;geu(=c5(#$o~6P z4!YbOJ*n<5N3y&wrX2h3NiF1vC8n-P%WokiGy!a@k;$zWFg&M?O^{#M1 zKjt{%K{F`*t;P-#>1Vx{SX(OL&s?b$?>?HMPJF!Lo*40ffj+M3qmxwx88YA^KWVQ{ zXYyIkUebht{vIj?3xNcY2^sb0Dpl3<|A0LF*Sk!6XN)fYzlQ=ULiL9sd7IhWiob&B2)09FW>0Y$hda}2! z??0T}go&Q5K8XNVsVW&!YJhI!icP+v8(}|4{SWBI$Ai=&6%tmoCAqdCW_$H+PDl(5 zJ9jkz;TRehY~|Z-Gs|=*Fk*B5S>5tE1RNbxz^XgfyEb@mVg@q%k9$w~s{8X)ym*&m zar_wT9v>TN<`&AoR~Hm*@j($U9{#2iJNg4-UQXQhEmZ2qlbhOvg-^USd>*724od`* z_71-Mq%9}DA08YtE=Q?Z0DDg(Kpy^I(v3VLq1PHW564Nl9gnuOz+>^BJFy=_rGDwe zei@6;OVFeB6uaEMs#4%ksoz(r26HDUe%&&7BM?@?J8yg&Vu6S79eA@>>VjIk0s@~r zU$$AOxr?2pj*6qQTiqE;k zIcN8|g;`W-4;(H#vCVw_dl_&&SBOm(3HF!0XVXi39cU4EW#-Gf%)(_PNIRP^V{yrJ z_=>1JFk(~Rq*U=`@9AGCh1iW%HIU6E)Ln2l(hb)8^FZFl33A(P^^0TKmh*|dwdhc}|1UhI|Nr^&o2#S3gG7qP?wai;jc5b+i}IqH zyM?c9X!qi0z>nz$IEmpu8*BYf?-zf!V?3I2oV|8Djd>yX#7i&rAIDnXArfH62=>7I z{f^P8f6krzY|}r(*U7S=bnk4N(iiFDj)$z#VoB6<&MzjTWa4l?aC z?DQ>2tWGy*9waEZidN|Vz<}HuR}3WdEp50Eci^TBPrb8sP;y#sX)3Q_r2MHmfg3o=w#bqf*BmJPW(K|N8-NS&y7`kj4;)p)cnuzey z`@e@s3>%I8`U%cRV%nQ9uIH);J_PKIHo}G^=~OaT5XqY5P}-n{)1mGJ&qEGQ)*(x- zf}}O++ypCeA-#e~#qlh~FG|8M+%`Ng`l$Z%J2>!jA`Nn6+PCq36m|9k3`kalg{0Fm z(jS$C;CJwSrdN(U5W}XSm@QDKd>O+=D|^XWIFD;{SAcz3jYrsXX*Fdn$x>69^WaZq zHr^#n7rcN19`9eigGE+MD=)&l_kxP{30M2I3G{PL?5;kQ-Se>~>mzweh1%afmBk$E ztz%WTW3Cz+1%|I$J+Cab(UEPlcZYaPEo^op#p2Fx?Qr?dZM5j=&2-xt1@V z%2Ipyk00Kx^grKt+VZI$dGBhxfAPbovPM@nZ1 z8KMyMnT&^F*yO-08Hy=CItso`oZL&$0wFFMP!jUT>Y?S3iW@EX8pNZ9`$t5E)%UIi znGMy)B&95w7%4U%`D-LQ7Z@xVX}|(8Yzv53GqE+8zeqYSvyQ< zeOU(z;eb^;NQut63xZKu$qpZT{I&q$4U7tY(q~=!^(2|n6@3)W12(-(&*=_(SsL%( z>A5pkbZ3Y?cmA-CuXf;Y=q@@+)rcTA@B2|nc2|}$Iqqb;ab;k=5cx@;1n3Se?sSfOETJgHdyNPaSZ7#tRT`8KWcY`fY*>y zdaVd4TlUBii=qd<#7OOup0|*RO{dvOS4HH#q=?glVEx+5t;+=H%+rylMtQyItb7cd z(>?V7C7~0!3ygKzjfod2NBo5#wG6&VUdOQvjC4iY(z!kEkYayGPCWbg~Q$}gqE1C=q);g z%|IT6J*9)^g|3gdPCQC-K^qOaCe-8cJ|sLe3I+Peut)R>oL9UTJk^cE7w#_BjIK8y zPzoWCNoNSVu5K^TXDRkQuNx%`d1#QxkR|G##7qTq{sP!K06>M4DhpC=aK)fC|M-VPL%9)j6DP0Ru7G zmS#6QGTu*A&4JD;OGfJHwzXKIprf^*DiN!aIiQrJFN4SdLpCvma>v39(~sNcTBjOv zXNm0Kw%0oiP)oN@>C?xW>_?K*;6xg~Y6Cs&e)W3g9`jVSZq~Y)IJqS zuFz;~yef@-8om>?a&PDotT5W47bsUQ7Ug54=hLsYXggO_ebnt(7klTi>2Y zU8hWm%{BYUq79}T6oFlvT&Y)E8Xp=G9$8R02fpgF##Y{OD6+QDn-_b^u3Wjh=WbfK zkhWLT+~!H?vM!}_>X1iKQ~%nT0P5A5kHz!PkF}m%L*|A+KWX*hX7pecA+wo9-g*=~Wud(>_wi+cC8Rs|?QZ<##?;#NFZXw$4#%)W1rkVQV}E z5@|vzlh&ozx#muX9EK`WJ`Aki{doG)EhZ%9n#_hE{@JjfY*hyK;D#vo*+^JORoFIU zB9rZI&Ew6$P*m*hHFYlKVxk@#^*hEAO0lDJEI=Ynvgz(44J(zw{=y?a)6t29iO@vW z68k~3d+GI4t=Dz)J!N+E@IOxX$ktTE4(=Fof1DW(sj149c?8dTyLn=$rlxjq*MjuM z+`{$RI^4?F!y(Rh7ez@!p(FNeUpuzmcvO39Fqz7!(lLiHnjLL-*FsP~f%q&(v2~=w zQV6r@HN0G1yMn_z?`_A$>sPFWzM3LQa>C^*4AI>;b** z+XL=JJe{yubNx!PhxfXweaK4dPYs8*Aj189V{rBgnIWJP)0{E5`$@Y^|eq+B)F=x<<7xZinF6ivXBtAdGOdGKD0;vSc7bmj!>$dOQU zGb;x+f5$}+tU_@jmyy^RKNKH+JJKx<9lmqNA_mfKbSjsS8|h0Zr6>IgEeDgu>1%K= zPs?}IHtz&92@Ai)8%=x@mGkm=HJrJ7uUf$3hr2PeV+gsP^ z$mbt7)DS-)*nB?j&?Z?8<$lq&PvvRALErK>_K3Lmc?kenKc%!KU!? zTy{a%6@$+@gHfP@>BocMjqh6d1!UTz=6xVrP?y~nf3VDf_ILxe=7U)-b1?jf``Znw z3suzFyr(z9L;XiX^B_a4M6e+wXrORCUs>Bfe8Ji$ZVZR3g{2#6C=?!mr*q2b{;<>AnZLJfvD&7vJbb;HBUBQo71l19Uqm4iYqm~EMG(NRr; z@0#4?K8+NNw-Ru?S(ztQ?H1XC9zmvnwEG|uN;hKqS~TsFi?RuCjhksbB}kJRLhCfT zAvapm5kzJ}hW0+N{We$iFrq0nglTV#1#Ya_OpK*OtOY`>=_bDwE~-8!uaN+m>}C`+ zYTSf)oTr3}w|^YWNGvPmQ@A#P%?-3EEL7=wR9V4DAq2g+Q*^HP0WeGP(2xmG5P`gc z38*LWPQD51u?gwD2@UHB@g@Y(oOdHlK-DIEs{-!42)7nlq@b1(Q6ZC%ml6*QqOMs- z87Lw`g$JF8g8Gcz`#3=a2+2d7B9vC3DHG6Cd@@X1@>sb};wF*yg%wDL3AAbgT8{^< z5;1bfHO+E2( zQrIF=K&B~ZG$2&TbaWbskEft_o46vUctO3o_*=MbcI?D>iDi1Y4_Oi^O!Wv7@W~r8 zm}c*BY^L2t#9>KbfA&I-AzoOET9!tVYXku^{Wz1g0awvc?p6hYh$NP!o4iq3R>OXl zKXIJAUjq&-AqlRN<_1N{F*jBydd&^a;b#tq~0@ z5z%XB2r$oJFatoJsdJtdq`j(1ROhltu>t|Cl&>ksp9Uh3Yc|g>09DP2-<=#386Y!J zE3kqg`avkGO+Uf&EMI*kKaHy(OQRsisUR<*prE0kXttn)OPJn?_lp+m%O?5SzuY9l z-$wXplWY@|R*~Hw%k&Lhx83@yJ5lRWi=~hPK7%!tM1Z-cN8U49@Eu(T8{S3mCLYXH z1HoF4>mPsBVqxcH1z+I6?nwddRFEdl;HymwGA2#$4B{Ogtdjvj9AI=^aNh^r4}0Q-B-C|+DkfYQZ%tp0UzH`xL}J$Gp*WPN zi7GE+@iaO`E%=ci)RY=lS%y zS5fV1lf3sp!~S>f#8-F^>0q{w=k1(b(&rzq7uUY9PP_>Iu;AvqW3)(SBU3jfLs(L^ zba@7QAR0_F5%z6HFK~P4PX>ZC=a6q>rI%Ez?U!e;nYy?4ep1w`2dp>%B zeglop;Q9GXp_@J~-g{&RYA1MTcX%hbYk~TF@QMcRN^OhKm$Vd!wDcqmUThi-A;OA` zqVxKRtY5?D@?o1p=WnzWeP{Z0AXw|#^)g?6WW9_FE(&3JlQN*4($kqv?=-A0^MA=j zf)2CHPo>)LaizrqZ<6odJ|_`@HAut^*f)>hUJ>#WFJvm%54JK#cvPl{tpiUKY`ru2 z;OTxR&(@aTQy#2a*T9?P>qd&(ao*4my5q_ev=#lLi76#|C4b|Ak?50VyPDBk9`zJS z*hD8Tdq8L)^h**env>}HotjcpGZ)Apn9q?j`p&e~4oCbJT}M}e6i#3&?Uk8O*o}JS zh0f6d)?(RG&H$TaO?LMZcjKh(puYrb{e-SZrM=_%CDr;8UB~Dn7j-_Z9u-dye=4~l zifbz!ZDnFa{wYa(LZvcgzC!BUV?a`_Vle1*l%!Nzoa;u-SU46OE%j0U*MQHSL~6y@ zzHu-u^$lG=Do`K1O11uiu6s_rD5p6zFq8rG!jicavVFz*<}YT3`z9M^0llycF73fD zdSRfQ^7jA8#3_!|#tH;{n%~`}n&~@04AUrtF{JOmw-COZoy?kruP~-0NB!6ckDy1N zuXfgXv!ptGSNegdW_9<)nw|BI5I%0_llZwdwg*<(=5kN*=Z4Xyj9$<)RI?>kkNeQq z^LXx!c;San(XfXFV*1&oR=z^%ogjLR$?u>g_R61QiU_bS>aQDUd2U!V^O#r)G|Zu$ zYOB$_Uyb%#Y>a%t97`<3{Z`;W3hVQN+8wACL#G>hi>Y+#r0uR{5M)7NN7qL~P$ljicHNc;E4}HRY$@9_n;FEtOX;!oc#yVIiV`cNbw^@rIA>M98+}> zbq-A7GB4H8EwgpNT?}Rr+fL@~7(N-PA9CovlXUo{ouXJzxfU$Mh7Pn-IRnY)u0q2H zro%xNVM!_(hNvy7Y;Il^k7x)sWu4E)Zh6|}As3@6!0q%mSR$o@|w^_Vk{DH zB~n{48p$MKE$+?O)(Xs?;%bX1Wrx~XSi%zuS&%L_AU9`Zm@D&>uF*|-R0w*{6{B`jEFsom zVfX2Yv=~p7_)~1Af&`@VDAwy$WFr!u(kxgdaSnD=ScV}>h;y+^m^6;rUaz@N&cP@# z@)+a2WH-tHN#-ozAeOMB;s*}wjy*I)JF{qHzWqxGWV1Y%J zBV^T|2Dk_mKk?ZT9*T&fs9_O{eUX3n<1p?Bh7HF9|2UK~=~KZ!j-SLEFfGWxia7s) zUHf5?^_2?v_T#uE)9{sD1EM^q%Kn!zWdE86=|IcR1{H=IH$I*Q3(`}@q zaSLMp-|^YUGicd?$Fo}*oF?_=|9*h`B~!+3So>+xY{IX6b_u|){Ws2|{|gn6BWD`n zlmPj$tN3rCJQH>aZy~3{=dXpLCNMF;yC~BtI<#Yr7JD(!At3vA``|Pf`^2;p>rV|5Pd+X zhjbQ+v!}TDM43Xc`7qiCG#Fw*Q)K#}hZ0-mJ+e**S5yE(vqZ!}6rwvRjhcU$PMJIe zQ56gwzCq{{dC3@K7IIorkAAH)iqI_RH7f6Wn3~I>aY#ZGkAh}!3=sX|IcyEz#UTu~ ziI4G5c+If7;*x3wj3&+_8*xD9=V_1)6Aht#W!IA5UHv$8CJ$4P!&lkn)D`k?(4i!q z{NOyI$3WHn7s zoa*J8?1z)&O5+=n68&Fs0elrCuJXqrm(P09qzl_VuK@b zB=F$?HVao*FdUew3|EBkG+_|i-=8ES;D#^}K(9stx?@nZn#Mg)jHamsC|1Xb6BMT( zKn;pFO29RUF@G{+7-t!SYm{JHvbmOQwM?CxVs~I-l;XCBYn&>J1+2*?29?7y7zjG^ zq(ekahclrRXxy^nBpdQ_f@S-tvr>E-^7E2IOaZf;hf_g8zUoqyyaCtZ_3SK;fg0EnHU6cJwT%h#gGoU;EH?c9&Lrcs(0(iKg_8Hqi zUnkyWtIJE6B8xAys{PMz9A>wVhIQEAurmf zrRSisU(HmBauI0D+aK1Z&u-+p?vU@YjVR%<9NJ zl3eBnC%p)Tf6@vsTjqgnUV}JOfjOfx{0x&*7nYl>9Yyc00FC*QyOlcK&jUzAAm1$b zkA+I|TcNrsQE^qMzVRGi+!;WjI=zkXE6-7N8Qy|5&N7@jUa0=pLIv;~{WbK$^cH}J z@1wkj8@%1&mcf}BxKI(+1Q@ek@*Fxej7l> zep8@I&0n5t-tqr5WPYgre!l3ieJ>>GaEQM@+xkzC@SGS@wT}H&p{jXWos?WsZ>q0s zI|rO=vKyPcd__O^M898W!R5onCxsVJzoinl9eabhHU_H25V5;PP?tPMTxcL*4=$SL z>`gUdXs~`9Dr?4_?a7n1Sy3XpJty|bseGF2{2NR}@B zB{#u^iu-AQdMOCQ^>Car-sNaoAIahE%x~L)XPCQD?I|}u>`hr-d^%bGR;cI*KS7DN zLZv`!!?KL?qV=@G!e$#?zli}w3Qq;E7$%PnC{Wos?p$*>XT}dFfV(VIWts=v>4<7Q z?N|-(0Iu!Z0Fq+>Jb>)Db@mPzKxTk0=)Ka3@%Aryj@X_~#_XRXCX+DE8L&#|oKVe3 z&Pn{+fmGrvuI(2EsyA;rnCJL%mC$(-k#_O-@PoOw#KlXVV~7)_ zEa}_1rcz9u^W^~2a5D2-q1r-$ja|2Uy`VfQK?8%qzRw~>^D1ii>DF4Bj7OgS=gdSO z8_|r=(=PsxUL)OhEP6#*(_$-Rl0)iMGDr;r66`e!{K4iF8v#7W-fA{m*R4Ih z0J4;0Q10`66WLV35g^|z4}7jU!_IOCN(DkrYb(Z!CMu6+pn$k7hrjBqyzTr@?|w9m zM!RHKX#ggf`ruYZ9!+je%45w_r^5SYk(2e{0pu%nEx^Oqa&}a@r%U@Fx@IZ>;|U-~ zGB>(jsGh`BQ_kX8ln^k5(~ zp*0UCnVV@s%dQdUEY`E$=2&=oz}&JLY4H~OzO{!g&91NW!y?U|E$}(bN$jM(7 zdFrUj7vE;r$Z9GJNW8XKp@6Ntq;=a&l1`sir0zLo-u^v{fwC`7?@K@t3gQ|>F=X@IB0alckGN@O5)#(%N zbV{Ndl9R?!6~@>Umz|dv`|EG>Ei5go;rxZ?Zk|3UJC(Pb>BDWct}uM&5{?-X zT#snnl;HWY$u*Bu&cF~nyhnzR7Y-J9gJ-KN{-toUv{ajmQIp7#Rqca~2Ah7GPS0-A zHgTAH=icaMv$)M+yfz%o6*|Pkd9;oGiSy?C(2~v0Vn^WxYhL!E!9JFMrjF(QN0Fm@ zQ|;%2DP>Rm^WFO>w{MZ^pB$yLCksO;+NnN+r07X_jIisA>WV1ZgXMutFP08;UOlK@ z_?%P|-grKBiULFw?=gKza(WVcX=*NSGjXD6nSb;T=u44*rXth5uFCXdLDNcyUyZUk z6n(=^66Wba|C{cTWnPs8ER~^V8xBj%MNO;1hPsyO=`kUPr z&0eGt!#F*Sh{tscflRv5DUWBXDG7??pQEF*!3tLzkXeiGJgAC%Ja%0fsRYrU2UKAL zV~#pNWFTrQNZ5EDgO!Fh&Mc5ffx#lOb=@_rlXTl9I*(m!+|EM6M4C$f%!7H)*6})K?u<^yveM z>L<|gBB24D%z|1}3;%ZP+q;^E&wsjlF^PEj*UoE$tdx4!1;&K%nwAZ-jZ7G&T;l_o z646k)U~esl?KD_12QGMK3%29B8=()^I4~oaRCb*GkaWa5I?tD-*pm{W&A?ZMK#>H6L&-UnA7+Y2mN4>=5@iqp&F(r`%E3cFuIFnP zfe`g~QX%Om_C+DD(#QsrkYEzz1^i3XK?dl&q=4;D_F>eGw%kiVu`fUN7U1-*u74Sx za3z)nIxm7~KnCUNN2c#2&pT@8h6ldQbQ+F7h)QPrM1A416?uYiRnWj2H6Ifv*7sfnAR}%5czKN0y7zij`Heoa)haDzUf&C?x22(Ir28$x%i!`$K$%|VCl};kba*xbV`z)aS>l_O= zRkta6Z}}I%!(_cu704da7_F}lF0sqq=A2jj&@eq%@}#!^)pPaQ#zhrBtBx!G0MaRg zf_9)bY(Z`FJ1tEp<+Ftow2<24!P2KAKCkhP4y}e|`d$2e%WLPY+2voAF57IyoYB-d z?YO>MbfG0h#4l+@dxE5MlrxX~6;O2HzYvM*q>{CcUoOx)ORnoWvbEB_3BM9TVB2Iq zv&D6-iIXBBvddy*pPu_Z&rSWV+g$nkbNoj-OHijo%xsJIh7Kf0-l_Mh!@d;456~?J zIoj_D9K=*guQ4Z{4jBIpp!hjStlOoRu{84KoA;IE-bw3%_z4VNcfSIPqRrCpGbv>@ zjUFoxM-Nryuz#09iOFm!CZ3JoYB?Y>3EEO^ql+18kwm5(dwkyUry?)}7E z1LgOK!WpF&0fO4UlA@-a2*w^EXr%a`k;`LkBU9=c`Pb&3sTV9aU0aJoRFy*j9F;w%y0QidPEsLS~*_@=5IYCo_{r8-b{m$AT!wO^?)H zzG}O>U&?)0t);U*kHAM&C1v|AD75Lu3umz&sm}*-FPqk|KfU&1(IQTMA+_PmeAXgo z@;>odyi$AakA=qSNfRYvHLmx*|ePGvNfrzSh-$DP*TQ)b;liB$S6XoERN^=Wfl?VJX*AM z#T*U^gg9ru*1NALOV2RJ&5z$ar#-fJ-idV;D0lGo)FeD~Jj~^|@MX7*LPZhhd-j1o z&xrCG2RY;hNa@4VyW#G9OYXd4Zb{ZyL{wb8xx}c`Lew0$5qk{D)ww9+h-uaBq?kQ5 zQ9V&cJTxA9vb5RScX}GbdU+{2D=WBf6MN}+dPS^w${S*c#;IRxv(3rXmJ|m?=PJ)p zdT7KMetPevdE#w&?1Aa-`9R%=SkT8X&ZkMu+mr*-T%6yMgU1*i(^j2*k&<*Ao88(0 zgG*h=`Gn%xG=)1AvFEgp@sjferH@aYUvH*g&;=Dl$cf+WF87E!?oZe_j@azsI7Hs+ z{>3ByzTw_3k^ZnS0baz=g8Uk_XQN^m+)P*!5OO&dFiaXQq3duxo*jgXi+qZK&xsx^7%o3fkm0~LXXB2n zi$pr37sVmPsTVR$Li}-^DjX-$HasH9*8ljTBXoNtST-UYgo937&&4Hy&X$h>{ekPK zj#J1VRcZ!xI{j7)2{l2ylguf)NWCnwD!1N7Bn2u=Ar%O^1MB`N`4nYTl6CZ;S4^2w zv^8vm5pxVSZY)MyWT0L+D@!z%cMuayta)av%{^2JM@kn?Jn1*WcK!tAez68NanDR_ z0(v>QaMU6kK^z=$!H)59COn~>AVl@BQx3t_DX+T+@m3xopWZ}B3VJI^Ugi2q-Oe4W1l~2HsKqQbZ01+-` zG1_H^L}X_uh-gcK3<^+J9COabGR4q>ZI@!nAamW*bEwL*5g~KPD6%7kaJA{98eD}bxj?`NwZpc@K@jQ(>s#PjpH7S(UgR{xeS1b0Kg9%_sj*h39|SL3Q~ zQAKF=1LHk5(#@XG33%I&|M*R9nc4Q08u#nD)=E$0?`>?2KaBT&#~1#P&77uC zgG`lzQBCB_%lQpmd z;P|iOJ=lx(cO4*|?J|CJTS~HLm}&zAwXjaAXuPPtbO${;OEe6r;V(a>`t3!OVv@ldEdAFp_F#Jb?bnQ ztqE+Z0nW8}qKa;SV>W)jhjP`)wS4>O&F0h6Ro>;F+~@f+9}2rZzW-­0_BEm1kQ z6&9`c(p2MLQ;&c(EPi1V5A#i>gmMRz#r(1CKm7W@Dp#SVxLT+`_a+$b=l$ zlNUVR19wB;$9oi9;BEik?x9X<@$m+N_7#cioP_d}jmth6oE zG18}@UM3uYO*Oxc_W(8S&wL?bwsQ)y0oqDz4X*zIW0#Qn$(cxid)a=}Z`|kIl7cNw zSWL;HeGl+{81LCyr(uY*q#{I_=ut;2#S_jHNo1=iMv8L3!Ddf=Gw2>Y#_Elm8&!tD z`^dvPR9P`sk_A<^5JO4fASxobW%DA+_TVtJsfqGu8{3zdjXYt>ukP~=ljBoHhf&&8 zJfIuehE{Yb7f6ECly2>2QcN8v&xWI?z8vqJiRZ8lnkY@@U!7~A6x{ah#dSxVFuTir zX=7tZIM9)MwDr;uLnU8!H1$(Ejl=_>bC4A&R8`EBF5sdnvw2ZOC`>zHr9o4j;Z-c& zftoSjN06}=Sag`a{dkC4l@OPe*UBJRn-OigaOOzPv$_B{*ZOG>#hk_O|4NM(_878X zG^;WNg`VyLFx7Mi<;Hbvry?TNsV1n#W}&2$K}}9gF_|6{m3H>(Qg6*Z^%pl0HG|Ps z(Y&`D@T3wxyfEg8nWj5aZT+zK4YN$z+06oKqMwQgE|A^q@U4h2A+~wKqto2)DNFD0 z1(ANsYBB`^G*8vu^U3&_a1=DxL=_cg02UEl-(lwVNhbYWmz#8xe7 zCQZ`pL@QafvsIY-9F}&+um*q`b*Y_wNBP=y#+)vN$+ejXaJGS1|stQ)s6@ZsdwM}?pJ@o zD%newDsIvzEddmfPz@w-fCkUQjvpZP-zzD)gV;QPV-g)js;KHwywxj+DX85)v`j3jpH}}C$ zJ0hIYcc=Y?cJoNbaTWgV?-f*@3}h0aV)O_ESRnaG%Q&KOV)MuXVYq;xhAh5&^!8PD zGoU;BhK&6Zlcy*g<3g^iM=g~zToI#eO~#Oz0U%=)cbbLOnLe-%=+sD|nQO-1_Ea1& z0Ne*xA{iM!uNx8XHRM=p|C-(W4=_XV??p25uO1v~4=M*Thj-XO)YfAo4>N zXXP6NCrT&~;J>TDAR*u(O8$+#CJIOQ3P<}_FZh=Tq=cY$`N*rK2=IcdJo^ofcDdy* z{+f^hJ~OhG?CobK9cyvBrWsB2)!G0^nTMZ;kb&jb|$23Szl6Tmy)<~o(1!!#;OwY!BJ+;2sOb1G~?UEk>U z!!$CV;=5FVjp}-1_K*Qv{z&N5A{!CX()pNt#hP>cc7`c%-1LYOXmFN+E((j|@&#AQ zvK_O|k6Q))S-B-nub$bnb8eOvG3fMFOtswKsi8D=x@rT=5Wfj4Z_v1W z!O^(aY~Smw%X~VTHY#-_2<(m7{)XTf6u9{QcD1haZmDOZh(a z?0vz}`bS$J@rD_AY?98Yp0vUW7T8=5x=P!F$}xbcN`qaBYD0l7w1qNG0&n?;=}Lb} z$fzPZ*Au_O(W0WyZF)NHx`WS*fHq(W%FP`Em0WC`=rgoUJMmpamoLJ~=s_#v)-A&A zf}Sp9lkzKJE+oOfCL1($|_;72@o)kUgs!dX;Bm-Ecb zb3YI&VrQ7gxDpXMpaRn-_pa~e_a9Z}Gcq@`=7rV{K2o)^_?J?4#bLu9pgU%rC3 zeT%D=uB_&l(^&F&n`8dMn4SFfqY{zZY}um$wRe)L2kqRav^-K+tT%%Poml(IPa1OS zZg%A;zcEy8PP+Z;e>Y1)!d1 zS40++M#XR}`8n1BOOf&bwIIFg{heL1+~toR4(J89aRjj3l@3|=dc84U*WF%C;E(-5 z{}vW*kGMsD__fM6WZb8{ri>;!hL=R;bN?Qdwkb7v2a0;TS)wr!@A2sAfMp5Qdd5UO6%Yf8+qVn267v|6!l7(lJ!=%Q@;xk5iViJ|1oX*tCq2roHUeoH~ z!#RY2o{2013!BuB7FPIMU-*nK7tavD#q*!i7=f^^`&0%$e??NHGrsZ}n~H)0iRked zL4sdIdYD{UOCIT0VO=I-9*9vaSNBJEV;=x~20+H6;v!=pF+)v*FP;J55crBvSgZ0N z#*)uBI+V_0NN5$E>E$)>NU6&DxZ>sh&ku zkxW8t2U+p4q-KsjoJIA%<<2uG>;8pLPmtR}iWom5;<-?mPTyeN*M3@C$Nvm{o3-

    ~xs!&x5!&XA!z6-()yi|J91djy5o?yB< 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

    U$gq+~Jhjx| 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 z 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 JCK`g!{{h8ud7uCQ literal 0 HcmV?d00001 diff --git a/pubspec.yaml b/pubspec.yaml index ed8d9b2dd..c3e1f7095 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -60,8 +60,6 @@ dependencies: qr_code_scanner: 0.4.0 # App Shortcuts https://github.com/flutter/plugins/tree/master/packages/quick_actions quick_actions: 0.6.0 - # 刮刮卡 https://github.com/vintage/scratcher - scratcher: ^2.0.1 # 振动(支持Web) https://github.com/benjamindean/flutter_vibration vibration: ^1.7.4-nullsafety.0 # 获取当前设备信息 https://github.com/flutter/plugins/tree/master/packages/device_info @@ -71,6 +69,12 @@ dependencies: git: ref: 'fdf1e412' url: 'https://github.com/simplezhli/flutter_2d_amap.git' + # demo 用到的库 + # 刮刮卡 https://github.com/vintage/scratcher + scratcher: ^2.0.1 + # 动画效果 https://github.com/xvrh/lottie-flutter + lottie: ^0.7.0+1 + dev_dependencies: # Widget测试 @@ -111,6 +115,7 @@ flutter: - assets/images/shop/ - assets/images/account/ - assets/images/statistic/ + - assets/lottie/ # To add custom fonts to your application, add a fonts section here, # in this "flutter" section. Each entry in this list should have a From a26d9edc23a2b6d55c3c0abffc0c4341f085020d Mon Sep 17 00:00:00 2001 From: weilu Date: Fri, 16 Apr 2021 10:16:34 +0800 Subject: [PATCH 007/206] =?UTF-8?q?web=E9=83=A8=E7=BD=B2=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/flutter-drive.yml | 2 +- web/index.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index 606294fe5..2d0763c88 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -5,7 +5,7 @@ name: flutter_deer driver # Trigger the workflow on push or pull request. -on: [push, pull_request] +on: [pull_request] # A workflow run is made up of one or more jobs. jobs: diff --git a/web/index.html b/web/index.html index a3a736735..d11f08422 100644 --- a/web/index.html +++ b/web/index.html @@ -9,7 +9,7 @@ Fore more details: * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base --> - + From 5c27d7192b1e1d7f4f42ec475e1dbccb31d2a0a7 Mon Sep 17 00:00:00 2001 From: weilu Date: Fri, 16 Apr 2021 10:17:26 +0800 Subject: [PATCH 008/206] =?UTF-8?q?web=E9=83=A8=E7=BD=B2=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pubspec.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/pubspec.yaml b/pubspec.yaml index c3e1f7095..9897f44a2 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -75,7 +75,6 @@ dependencies: # 动画效果 https://github.com/xvrh/lottie-flutter lottie: ^0.7.0+1 - dev_dependencies: # Widget测试 flutter_test: From dd9ff0b2311140f70c51a24ce898c6f159d22863 Mon Sep 17 00:00:00 2001 From: weilu Date: Tue, 20 Apr 2021 10:30:16 +0800 Subject: [PATCH 009/206] flutter 2.0.5 --- .github/ISSUE_TEMPLATE/deer-issue-template.md | 2 +- .github/workflows/flutter-drive.yml | 8 ++++---- .github/workflows/flutter-web-deploy.yml | 4 ++-- README-EN.md | 4 ++-- README.md | 4 ++-- lib/net/error_handle.dart | 1 + pubspec.yaml | 2 +- 7 files changed, 13 insertions(+), 12 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/deer-issue-template.md b/.github/ISSUE_TEMPLATE/deer-issue-template.md index a314f82c5..086a158e0 100644 --- a/.github/ISSUE_TEMPLATE/deer-issue-template.md +++ b/.github/ISSUE_TEMPLATE/deer-issue-template.md @@ -12,7 +12,7 @@ assignees: '' - [x] 电脑系统:如:`Windows 10` - [x] 设备型号:如:`小米MIX 2s` - [x] 设备系统版本:如 `Android 10` -- [x] Flutter 版本:如 `2.0.4` +- [x] Flutter 版本:如 `2.0.5` ### 具体问题描述 ### diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index 2d0763c88..7989fc4a3 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -5,7 +5,7 @@ name: flutter_deer driver # Trigger the workflow on push or pull request. -on: [pull_request] +on: [push, pull_request] # A workflow run is made up of one or more jobs. jobs: @@ -46,7 +46,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v1 with: - flutter-version: '2.0.4' + flutter-version: '2.0.5' channel: 'stable' # or: 'dev' or 'beta' - name: "Run Flutter Driver tests" run: "flutter drive --target=test_driver/driver.dart" @@ -64,7 +64,7 @@ jobs: - uses: actions/checkout@v2 - uses: subosito/flutter-action@v1 with: - flutter-version: '2.0.4' + flutter-version: '2.0.5' channel: 'stable' # or: 'dev' or 'beta' - name: "Run Flutter Driver tests" # GitHub Action for installing, configuring and running Android Emulators (work only Mac OS) @@ -89,7 +89,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v1 with: - flutter-version: '2.0.4' + flutter-version: '2.0.5' channel: 'stable' - run: "flutter pub get" - name: "Run Flutter Accessibility Tests" diff --git a/.github/workflows/flutter-web-deploy.yml b/.github/workflows/flutter-web-deploy.yml index 4ac801c3a..4788c780c 100644 --- a/.github/workflows/flutter-web-deploy.yml +++ b/.github/workflows/flutter-web-deploy.yml @@ -5,7 +5,7 @@ name: flutter_deer web deploy on: push: paths: - - 'pubspec.yaml' + - 'pubspec1.yaml' jobs: web_build_and_deploy: @@ -14,7 +14,7 @@ jobs: - uses: actions/checkout@v2.3.1 - uses: subosito/flutter-action@v1 with: - flutter-version: '2.0.4' + flutter-version: '2.0.5' channel: 'stable' - name: "Web Build 🔧" run: | diff --git a/README-EN.md b/README-EN.md index b5e15d1ba..c003efa75 100644 --- a/README-EN.md +++ b/README-EN.md @@ -59,9 +59,9 @@ Web:https://simplezhli.github.io/flutter_deer/ [![Build Status](https://github.com/simplezhli/flutter_deer/workflows/flutter_deer%20driver/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions?query=workflow%3A%22flutter_deer+driver%22+branch%3Amaster) - 1. Flutter version 2.0.4 + 1. Flutter version 2.0.5 - 2. Dart version 2.12.2 + 2. Dart version 2.12.3 ## Precautions diff --git a/README.md b/README.md index 2b925b295..1b9af5c44 100644 --- a/README.md +++ b/README.md @@ -64,9 +64,9 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ [![Build Status](https://github.com/simplezhli/flutter_deer/workflows/flutter_deer%20driver/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions?query=workflow%3A%22flutter_deer+driver%22+branch%3Amaster) - 1. Flutter version 2.0.4 + 1. Flutter version 2.0.5 - 2. Dart version 2.12.2 + 2. Dart version 2.12.3 ## 注意事项 diff --git a/lib/net/error_handle.dart b/lib/net/error_handle.dart index 728dbb817..9aa847b28 100644 --- a/lib/net/error_handle.dart +++ b/lib/net/error_handle.dart @@ -5,6 +5,7 @@ import 'package:dio/dio.dart'; class ExceptionHandle { static const int success = 200; static const int success_not_content = 204; + static const int not_modified = 304; static const int unauthorized = 401; static const int forbidden = 403; static const int not_found = 404; diff --git a/pubspec.yaml b/pubspec.yaml index 9897f44a2..57cefb46a 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -59,7 +59,7 @@ dependencies: # 扫码 https://github.com/juliuscanute/qr_code_scanner qr_code_scanner: 0.4.0 # App Shortcuts https://github.com/flutter/plugins/tree/master/packages/quick_actions - quick_actions: 0.6.0 + quick_actions: 0.6.0+1 # 振动(支持Web) https://github.com/benjamindean/flutter_vibration vibration: ^1.7.4-nullsafety.0 # 获取当前设备信息 https://github.com/flutter/plugins/tree/master/packages/device_info From 99cd5a32c2d121d6b31c9f19975556676bba839c Mon Sep 17 00:00:00 2001 From: weilu Date: Thu, 22 Apr 2021 09:08:06 +0800 Subject: [PATCH 010/206] =?UTF-8?q?=E5=BC=80=E5=A7=8B=E8=BF=81=E7=A7=BB?= =?UTF-8?q?=E5=88=B0=E7=A9=BA=E5=AE=89=E5=85=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- integration_test/integration_test.dart | 1 + integration_test/login_test.dart | 1 + lib/home/splash_page.dart | 2 +- lib/main.dart | 1 + pubspec.yaml | 20 +++++++++++++------- test_driver/account/account.dart | 1 + test_driver/account/account_test.dart | 1 + test_driver/driver.dart | 1 + test_driver/driver_test.dart | 2 +- test_driver/goods/goods.dart | 1 + test_driver/goods/goods_test.dart | 1 + test_driver/home/splash_page.dart | 1 + test_driver/home/splash_page_test.dart | 1 + test_driver/login/login_page.dart | 1 + test_driver/login/login_page_test.dart | 1 + test_driver/order/order.dart | 1 + test_driver/order/order_test.dart | 1 + test_driver/setting/setting.dart | 1 + test_driver/setting/setting_test.dart | 1 + test_driver/shop/shop.dart | 1 + test_driver/shop/shop_test.dart | 1 + test_driver/statistic/statistic.dart | 1 + test_driver/statistic/statistic_test.dart | 1 + test_driver/store/store.dart | 1 + test_driver/store/store_test.dart | 1 + 26 files changed, 38 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 1b9af5c44..43f116e13 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ | ![](./preview/Screenshot_22.jpg) | ![](./preview/Screenshot_23.jpg) | ![](./preview/Screenshot_24.jpg) | ![](./preview/Screenshot_25.jpg) | | ![](./preview/Screenshot_26.jpg) | ![](./preview/Screenshot_27.jpg) | ![](./preview/lottie.gif) | | -**觉得还可以的话,来个Star、Fork支持一波!有问题欢迎提Issue。** +**觉得还可以的话,来个Star、Fork支持一波!本项目持续维护中,有问题欢迎提Issue。** ## 实现内容 diff --git a/integration_test/integration_test.dart b/integration_test/integration_test.dart index 8f56e577a..9b6161d46 100644 --- a/integration_test/integration_test.dart +++ b/integration_test/integration_test.dart @@ -1,3 +1,4 @@ +// @dart=2.9 import 'package:integration_test/integration_test_driver.dart'; diff --git a/integration_test/login_test.dart b/integration_test/login_test.dart index 85c7e1307..34e544dda 100644 --- a/integration_test/login_test.dart +++ b/integration_test/login_test.dart @@ -1,3 +1,4 @@ +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/login/page/login_page.dart'; import 'package:flutter_deer/login/page/register_page.dart'; diff --git a/lib/home/splash_page.dart b/lib/home/splash_page.dart index 06c652cd1..79f89e019 100644 --- a/lib/home/splash_page.dart +++ b/lib/home/splash_page.dart @@ -14,7 +14,7 @@ import 'package:flutter_deer/widgets/load_image.dart'; import 'package:flutter_slidable/flutter_slidable.dart'; import 'package:quick_actions/quick_actions.dart'; import 'package:rxdart/rxdart.dart'; -import 'package:flutter_swiper/flutter_swiper.dart'; +import 'package:flutter_swiper_null_safety/flutter_swiper_null_safety.dart'; import 'package:sp_util/sp_util.dart'; class SplashPage extends StatefulWidget { diff --git a/lib/main.dart b/lib/main.dart index 1163ac3f1..127314d4e 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,3 +1,4 @@ +// @dart=2.9 import 'package:dio/dio.dart'; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; diff --git a/pubspec.yaml b/pubspec.yaml index 57cefb46a..5bc1a26a6 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -8,7 +8,7 @@ homepage: https://weilu.blog.csdn.net/ publish_to: 'none' environment: - sdk: ">=2.10.0 <3.0.0" + sdk: ">=2.12.0 <3.0.0" flutter: ">=2.0.0" dependencies: @@ -25,13 +25,13 @@ dependencies: # 网络库 https://github.com/flutterchina/dio dio: ^4.0.0 # https://github.com/ReactiveX/rxdart - rxdart: ^0.25.0 + rxdart: ^0.26.0 # Dart 常用工具类库 https://github.com/Sky24n/common_utils - common_utils: 1.2.4 + common_utils: 2.0.2 # Flutter 常用工具类库 https://github.com/Sky24n/flustars - flustars: ^0.3.3 + flustars: ^2.0.1 # Flutter 轮播图 https://github.com/best-flutter/flutter_swiper - flutter_swiper: ^1.1.6 # flutter_swiper很久不维护,备用空安全版本:flutter_card_swiper: ^0.4.0 + flutter_swiper_null_safety: ^1.0.0 # flutter_swiper很久不维护,可以使用空安全版本:flutter_swiper_null_safety # 启动URL的插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/url_launcher url_launcher: 6.0.3 # 图片选择插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/image_picker @@ -51,7 +51,7 @@ dependencies: # 路由框架 https://github.com/theyakka/fluro fluro: ^2.0.3 # 图片缓存 https://github.com/renefloor/flutter_cached_network_image - cached_network_image: ^2.5.1 + cached_network_image: ^3.0.0 # 格式化String https://github.com/Naddiseo/dart-sprintf sprintf: ^6.0.0 # 状态管理 https://github.com/rrousselGit/provider @@ -73,7 +73,13 @@ dependencies: # 刮刮卡 https://github.com/vintage/scratcher scratcher: ^2.0.1 # 动画效果 https://github.com/xvrh/lottie-flutter - lottie: ^0.7.0+1 + lottie: ^1.0.1 + +# flutter_driver与common_utils、lottie等个别库依赖冲突,用依赖版本覆盖处理 +dependency_overrides: + archive: ^3.0.0 + crypto: ^3.0.0 + convert: ^3.0.0 dev_dependencies: # Widget测试 diff --git a/test_driver/account/account.dart b/test_driver/account/account.dart index dd51c5450..b0370c93d 100644 --- a/test_driver/account/account.dart +++ b/test_driver/account/account.dart @@ -1,3 +1,4 @@ +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/common/common.dart'; import 'package:flutter_deer/home/home_page.dart'; diff --git a/test_driver/account/account_test.dart b/test_driver/account/account_test.dart index e4ffc88e8..3af01ffad 100644 --- a/test_driver/account/account_test.dart +++ b/test_driver/account/account_test.dart @@ -1,3 +1,4 @@ +// @dart=2.9 import 'package:flutter_driver/flutter_driver.dart'; import 'package:test/test.dart'; diff --git a/test_driver/driver.dart b/test_driver/driver.dart index 0238785c5..54df4f0f1 100644 --- a/test_driver/driver.dart +++ b/test_driver/driver.dart @@ -1,3 +1,4 @@ +// @dart=2.9 import 'package:flutter_deer/common/common.dart'; import 'package:flutter_driver/driver_extension.dart'; import 'package:flutter_deer/main.dart' as app; diff --git a/test_driver/driver_test.dart b/test_driver/driver_test.dart index 9f5c4ea7c..7ed51807d 100644 --- a/test_driver/driver_test.dart +++ b/test_driver/driver_test.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'account/account_test.dart' as account_test; import 'goods/goods_test.dart' as goods_test; import 'home/splash_page_test.dart' as splash_test; diff --git a/test_driver/goods/goods.dart b/test_driver/goods/goods.dart index 45d5537ba..1560b9931 100644 --- a/test_driver/goods/goods.dart +++ b/test_driver/goods/goods.dart @@ -1,3 +1,4 @@ +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/home/home_page.dart'; import 'package:flutter_driver/driver_extension.dart'; diff --git a/test_driver/goods/goods_test.dart b/test_driver/goods/goods_test.dart index 3fd94731f..53d82d66f 100644 --- a/test_driver/goods/goods_test.dart +++ b/test_driver/goods/goods_test.dart @@ -1,3 +1,4 @@ +// @dart=2.9 import 'package:flutter_driver/flutter_driver.dart'; import 'package:test/test.dart'; diff --git a/test_driver/home/splash_page.dart b/test_driver/home/splash_page.dart index 64a14a9d7..699ceb682 100644 --- a/test_driver/home/splash_page.dart +++ b/test_driver/home/splash_page.dart @@ -1,3 +1,4 @@ +// @dart=2.9 import 'package:flutter_driver/driver_extension.dart'; import 'package:flutter_deer/main.dart' as app; diff --git a/test_driver/home/splash_page_test.dart b/test_driver/home/splash_page_test.dart index ff979e358..3e42f9b43 100644 --- a/test_driver/home/splash_page_test.dart +++ b/test_driver/home/splash_page_test.dart @@ -1,3 +1,4 @@ +// @dart=2.9 import 'package:flutter_driver/flutter_driver.dart'; import 'package:test/test.dart'; diff --git a/test_driver/login/login_page.dart b/test_driver/login/login_page.dart index c0e2b51d1..04500c3ae 100644 --- a/test_driver/login/login_page.dart +++ b/test_driver/login/login_page.dart @@ -1,3 +1,4 @@ +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/login/page/login_page.dart'; import 'package:flutter_driver/driver_extension.dart'; diff --git a/test_driver/login/login_page_test.dart b/test_driver/login/login_page_test.dart index fe327bada..9ed5578c1 100644 --- a/test_driver/login/login_page_test.dart +++ b/test_driver/login/login_page_test.dart @@ -1,3 +1,4 @@ +// @dart=2.9 import 'package:flutter_driver/flutter_driver.dart'; import 'package:test/test.dart'; diff --git a/test_driver/order/order.dart b/test_driver/order/order.dart index 179be2a7c..751d1ddf2 100644 --- a/test_driver/order/order.dart +++ b/test_driver/order/order.dart @@ -1,3 +1,4 @@ +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/common/common.dart'; import 'package:flutter_deer/home/home_page.dart'; diff --git a/test_driver/order/order_test.dart b/test_driver/order/order_test.dart index 4fb56fc48..e522ba653 100644 --- a/test_driver/order/order_test.dart +++ b/test_driver/order/order_test.dart @@ -1,3 +1,4 @@ +// @dart=2.9 import 'package:flutter_driver/flutter_driver.dart'; import 'package:test/test.dart'; diff --git a/test_driver/setting/setting.dart b/test_driver/setting/setting.dart index 009c61298..44d082569 100644 --- a/test_driver/setting/setting.dart +++ b/test_driver/setting/setting.dart @@ -1,3 +1,4 @@ +// @dart=2.9 import 'package:sp_util/sp_util.dart'; import 'package:flutter/material.dart'; import 'package:flutter_deer/setting/page/setting_page.dart'; diff --git a/test_driver/setting/setting_test.dart b/test_driver/setting/setting_test.dart index 9b35cf496..10437905c 100644 --- a/test_driver/setting/setting_test.dart +++ b/test_driver/setting/setting_test.dart @@ -1,3 +1,4 @@ +// @dart=2.9 import 'package:flutter_driver/flutter_driver.dart'; import 'package:test/test.dart'; diff --git a/test_driver/shop/shop.dart b/test_driver/shop/shop.dart index 8580ce5b9..2474a7a7e 100644 --- a/test_driver/shop/shop.dart +++ b/test_driver/shop/shop.dart @@ -1,3 +1,4 @@ +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/common/common.dart'; import 'package:flutter_deer/home/home_page.dart'; diff --git a/test_driver/shop/shop_test.dart b/test_driver/shop/shop_test.dart index 79813dff9..7a40669c7 100644 --- a/test_driver/shop/shop_test.dart +++ b/test_driver/shop/shop_test.dart @@ -1,3 +1,4 @@ +// @dart=2.9 import 'package:flutter_driver/flutter_driver.dart'; import 'package:test/test.dart'; diff --git a/test_driver/statistic/statistic.dart b/test_driver/statistic/statistic.dart index 857ac62f0..4ac187586 100644 --- a/test_driver/statistic/statistic.dart +++ b/test_driver/statistic/statistic.dart @@ -1,3 +1,4 @@ +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/home/home_page.dart'; import 'package:flutter_driver/driver_extension.dart'; diff --git a/test_driver/statistic/statistic_test.dart b/test_driver/statistic/statistic_test.dart index 768e5f6da..f05f4af0a 100644 --- a/test_driver/statistic/statistic_test.dart +++ b/test_driver/statistic/statistic_test.dart @@ -1,3 +1,4 @@ +// @dart=2.9 import 'package:flutter_driver/flutter_driver.dart'; import 'package:test/test.dart'; diff --git a/test_driver/store/store.dart b/test_driver/store/store.dart index 773e2726c..c7d21ae6c 100644 --- a/test_driver/store/store.dart +++ b/test_driver/store/store.dart @@ -1,3 +1,4 @@ +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/main.dart'; import 'package:flutter_deer/store/page/store_audit_page.dart'; diff --git a/test_driver/store/store_test.dart b/test_driver/store/store_test.dart index b3e3f471b..22a0cb05c 100644 --- a/test_driver/store/store_test.dart +++ b/test_driver/store/store_test.dart @@ -1,3 +1,4 @@ +// @dart=2.9 import 'package:flutter_driver/flutter_driver.dart'; import 'package:test/test.dart'; From 84659e6397c5c72f5dc17b3314349355c600312c Mon Sep 17 00:00:00 2001 From: weilu Date: Thu, 22 Apr 2021 11:20:16 +0800 Subject: [PATCH 011/206] =?UTF-8?q?FlutterJsonBeanFactory=E7=94=9F?= =?UTF-8?q?=E6=88=90=E4=BB=A3=E7=A0=81=E6=9B=B4=E6=96=B0=E8=87=B3=E7=A9=BA?= =?UTF-8?q?=E5=AE=89=E5=85=A8=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/account/account_router.dart | 2 +- lib/account/models/bank_entity.dart | 9 +- lib/account/models/city_entity.dart | 7 +- lib/account/page/account_page.dart | 2 +- .../page/account_record_list_page.dart | 2 +- .../page/add_withdrawal_account_page.dart | 1 + lib/account/page/bank_select_page.dart | 2 +- lib/account/page/city_select_page.dart | 2 +- .../page/withdrawal_account_list_page.dart | 2 +- lib/account/page/withdrawal_account_page.dart | 2 +- lib/account/page/withdrawal_page.dart | 2 +- .../page/withdrawal_password_page.dart | 2 +- .../page/withdrawal_record_list_page.dart | 2 +- lib/account/page/withdrawal_result_page.dart | 2 +- lib/account/widgets/rise_number_text.dart | 2 +- lib/account/widgets/sms_verify_dialog.dart | 2 +- .../widgets/withdrawal_account_item.dart | 2 +- .../widgets/withdrawal_password_setting.dart | 2 +- lib/demo/demo_page.dart | 1 + lib/demo/focus/focus_demo_page.dart | 1 + lib/demo/lottie/lottie_demo.dart | 22 +- lib/demo/navigator/books_app_state.dart | 1 + lib/demo/navigator/books_main.dart | 1 + .../delegate/inner_router_delegate.dart | 1 + .../navigator/delegate/router_delegate.dart | 1 + .../parser/route_information_parser.dart | 1 + lib/demo/navigator/screen/app_shell.dart | 1 + .../navigator/screen/book_details_screen.dart | 4 +- .../navigator/screen/books_list_screen.dart | 6 +- lib/demo/navigator/screen/setting_screen.dart | 2 +- .../my_bottom_navigation_bar.dart | 12 +- lib/demo/overlay/overlay_main.dart | 2 +- lib/demo/overlay/page/overlay_demo_page.dart | 8 +- lib/demo/overlay/page/test_page.dart | 2 +- lib/demo/overlay/route/application.dart | 2 +- .../overlay/route/my_navigator_observer.dart | 4 +- lib/demo/ripple/ripples_animation_page.dart | 10 +- .../scratcher/scratch_card_demo_page.dart | 8 +- lib/demo/widgets/neumorphic.dart | 8 +- lib/generated/json/bank_entity_helper.dart | 9 +- .../json/base/json_convert_content.dart | 121 +++++--- .../base/{json_filed.dart => json_field.dart} | 11 +- lib/generated/json/city_entity_helper.dart | 7 +- lib/generated/json/search_entity_helper.dart | 285 +++++++++++++----- lib/generated/json/user_entity_helper.dart | 10 +- lib/goods/goods_router.dart | 2 +- lib/goods/models/goods_item_entity.dart | 1 + lib/goods/page/goods_edit_page.dart | 2 +- lib/goods/page/goods_list_page.dart | 2 +- lib/goods/page/goods_page.dart | 2 +- lib/goods/page/goods_search_page.dart | 2 +- lib/goods/page/goods_size_edit_page.dart | 2 +- lib/goods/page/goods_size_page.dart | 2 +- lib/goods/page/qr_code_scanner_page.dart | 2 +- lib/goods/provider/goods_sort_provider.dart | 1 + lib/goods/widgets/goods_add_menu.dart | 2 +- .../widgets/goods_delete_bottom_sheet.dart | 2 +- lib/goods/widgets/goods_item.dart | 2 +- lib/goods/widgets/goods_size_dialog.dart | 2 +- .../widgets/goods_sort_bottom_sheet.dart | 2 +- lib/goods/widgets/goods_sort_menu.dart | 2 +- lib/goods/widgets/menu_reveal.dart | 1 + lib/home/home_page.dart | 2 +- lib/home/splash_page.dart | 2 +- lib/home/webview_page.dart | 2 +- lib/login/login_router.dart | 2 +- lib/login/page/login_page.dart | 2 +- lib/login/page/register_page.dart | 2 +- lib/login/page/reset_password_page.dart | 2 +- lib/login/page/sms_login_page.dart | 2 +- lib/login/page/update_password_page.dart | 2 +- lib/login/widgets/my_text_field.dart | 2 +- lib/mvp/base_page.dart | 3 +- lib/mvp/base_page_presenter.dart | 39 ++- lib/mvp/base_presenter.dart | 3 +- lib/mvp/power_presenter.dart | 3 +- lib/net/base_entity.dart | 9 +- lib/net/dio_utils.dart | 59 ++-- lib/net/error_handle.dart | 5 +- lib/net/intercept.dart | 2 +- lib/order/iview/order_search_iview.dart | 4 +- lib/order/models/search_entity.dart | 201 +++++++----- lib/order/order_router.dart | 2 +- lib/order/page/order_info_page.dart | 2 +- lib/order/page/order_list_page.dart | 2 +- lib/order/page/order_page.dart | 2 +- lib/order/page/order_search_page.dart | 8 +- lib/order/page/order_track_page.dart | 2 +- .../presenter/order_search_presenter.dart | 2 +- lib/order/widgets/order_item.dart | 2 +- lib/order/widgets/order_tag_item.dart | 2 +- lib/order/widgets/pay_type_dialog.dart | 2 +- lib/provider/base_list_provider.dart | 2 +- lib/provider/locale_provider.dart | 1 + lib/provider/theme_provider.dart | 1 + lib/routers/fluro_navigator.dart | 2 +- lib/routers/not_found_page.dart | 1 + lib/routers/routers.dart | 2 +- lib/setting/page/about_page.dart | 2 +- lib/setting/page/account_manager_page.dart | 2 +- lib/setting/page/locale_page.dart | 2 +- lib/setting/page/setting_page.dart | 2 +- lib/setting/page/theme_page.dart | 2 +- lib/setting/setting_router.dart | 2 +- lib/setting/widgets/exit_dialog.dart | 2 +- lib/setting/widgets/update_dialog.dart | 2 +- lib/shop/iview/shop_iview.dart | 2 +- lib/shop/models/user_entity.dart | 10 +- lib/shop/page/freight_config_page.dart | 2 +- lib/shop/page/input_text_page.dart | 2 +- lib/shop/page/message_page.dart | 2 +- lib/shop/page/select_address_page.dart | 2 +- lib/shop/page/shop_page.dart | 2 +- lib/shop/page/shop_setting_page.dart | 2 +- lib/shop/presenter/shop_presenter.dart | 2 +- lib/shop/provider/user_provider.dart | 2 +- lib/shop/shop_router.dart | 2 +- lib/shop/widgets/pay_type_dialog.dart | 2 +- lib/shop/widgets/price_input_dialog.dart | 2 +- .../widgets/range_price_input_dialog.dart | 2 +- lib/shop/widgets/send_type_dialog.dart | 2 +- .../page/goods_statistics_page.dart | 2 +- .../page/order_statistics_page.dart | 2 +- lib/statistics/page/statistics_page.dart | 2 +- lib/statistics/statistics_router.dart | 2 +- lib/statistics/widgets/selected_date.dart | 2 +- lib/store/page/store_audit_page.dart | 2 +- lib/store/page/store_audit_result_page.dart | 2 +- lib/store/store_router.dart | 2 +- lib/util/app_navigator.dart | 1 + lib/util/change_notifier_manage.dart | 2 +- lib/util/device_utils.dart | 3 +- lib/util/handle_error_utils.dart | 1 + .../fix_ios_input_formatter.dart | 2 +- .../number_text_input_formatter.dart | 2 +- lib/util/other_utils.dart | 2 +- lib/util/theme_utils.dart | 10 +- lib/widgets/base_dialog.dart | 2 +- lib/widgets/bezier_chart/bezier_chart.dart | 1 + .../bezier_chart/bezier_chart_config.dart | 1 + .../bezier_chart/bezier_chart_widget.dart | 1 + lib/widgets/bezier_chart/bezier_line.dart | 1 + .../my_single_child_scroll_view.dart | 1 + lib/widgets/click_item.dart | 2 +- lib/widgets/double_tap_back_exit_app.dart | 2 +- lib/widgets/load_image.dart | 25 +- lib/widgets/my_app_bar.dart | 2 +- lib/widgets/my_button.dart | 2 +- lib/widgets/my_card.dart | 2 +- lib/widgets/my_flexible_space_bar.dart | 2 +- lib/widgets/my_refresh_list.dart | 2 +- lib/widgets/my_scroll_view.dart | 2 +- lib/widgets/pie_chart/pie_chart.dart | 2 +- lib/widgets/pie_chart/pie_data.dart | 1 + lib/widgets/popup_window.dart | 1 + lib/widgets/progress_dialog.dart | 3 +- lib/widgets/search_bar.dart | 2 +- lib/widgets/selected_image.dart | 2 +- lib/widgets/selected_item.dart | 2 +- lib/widgets/state_layout.dart | 2 +- lib/widgets/text_field_item.dart | 2 +- test/accessibility_test.dart | 1 + test/account/account_accessibility_test.dart | 2 +- test/goods/goods_accessibility_test.dart | 2 +- test/login/login_accessibility_test.dart | 2 +- test/net/dio_test.dart | 2 +- test/order/order_accessibility_test.dart | 2 +- test/setting/setting_accessibility_test.dart | 2 +- test/shop/shop_accessibility_test.dart | 2 +- .../statistic_accessibility_test.dart | 2 +- test/store/store_accessibility_test.dart | 2 +- test/widget_test.dart | 1 + 172 files changed, 707 insertions(+), 473 deletions(-) rename lib/generated/json/base/{json_filed.dart => json_field.dart} (62%) diff --git a/lib/account/account_router.dart b/lib/account/account_router.dart index b8cb22e39..5d20dc47a 100644 --- a/lib/account/account_router.dart +++ b/lib/account/account_router.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:fluro/fluro.dart'; import 'package:flutter_deer/routers/i_router.dart'; diff --git a/lib/account/models/bank_entity.dart b/lib/account/models/bank_entity.dart index 8ff4630e0..0bb9e4b46 100644 --- a/lib/account/models/bank_entity.dart +++ b/lib/account/models/bank_entity.dart @@ -1,3 +1,4 @@ + import 'package:azlistview/azlistview.dart'; import 'package:flutter_deer/generated/json/base/json_convert_content.dart'; @@ -5,12 +6,12 @@ class BankEntity with JsonConvert, ISuspensionBean { BankEntity({this.id, this.bankName, this.firstLetter}); - int id; - String bankName; - String firstLetter; + int? id; + String? bankName; + String? firstLetter; @override String getSuspensionTag() { - return firstLetter; + return firstLetter ?? ''; } } diff --git a/lib/account/models/city_entity.dart b/lib/account/models/city_entity.dart index 29a692d98..8972f6be7 100644 --- a/lib/account/models/city_entity.dart +++ b/lib/account/models/city_entity.dart @@ -1,10 +1,11 @@ + import 'package:azlistview/azlistview.dart'; import 'package:flutter_deer/generated/json/base/json_convert_content.dart'; class CityEntity with JsonConvert, ISuspensionBean { - String name; - String cityCode; - String firstCharacter; + late String name; + late String cityCode; + late String firstCharacter; @override String getSuspensionTag() { diff --git a/lib/account/page/account_page.dart b/lib/account/page/account_page.dart index f05f9dfdb..8fd83bda3 100644 --- a/lib/account/page/account_page.dart +++ b/lib/account/page/account_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:common_utils/common_utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_deer/account/widgets/rise_number_text.dart'; diff --git a/lib/account/page/account_record_list_page.dart b/lib/account/page/account_record_list_page.dart index a19f9b66a..d0b26d9da 100644 --- a/lib/account/page/account_record_list_page.dart +++ b/lib/account/page/account_record_list_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/util/theme_utils.dart'; diff --git a/lib/account/page/add_withdrawal_account_page.dart b/lib/account/page/add_withdrawal_account_page.dart index db30a3be9..664cec591 100644 --- a/lib/account/page/add_withdrawal_account_page.dart +++ b/lib/account/page/add_withdrawal_account_page.dart @@ -1,3 +1,4 @@ +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/account/account_router.dart'; import 'package:flutter_deer/account/models/bank_entity.dart'; diff --git a/lib/account/page/bank_select_page.dart b/lib/account/page/bank_select_page.dart index ba5083337..06aac2fe6 100644 --- a/lib/account/page/bank_select_page.dart +++ b/lib/account/page/bank_select_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'dart:convert'; import 'package:flutter/material.dart'; diff --git a/lib/account/page/city_select_page.dart b/lib/account/page/city_select_page.dart index 5f510cd24..f616d4c29 100644 --- a/lib/account/page/city_select_page.dart +++ b/lib/account/page/city_select_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'dart:convert'; import 'package:flutter/material.dart'; diff --git a/lib/account/page/withdrawal_account_list_page.dart b/lib/account/page/withdrawal_account_list_page.dart index 8b907fecf..2237c6111 100644 --- a/lib/account/page/withdrawal_account_list_page.dart +++ b/lib/account/page/withdrawal_account_list_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/account/models/withdrawal_account_model.dart'; import 'package:flutter_deer/res/resources.dart'; diff --git a/lib/account/page/withdrawal_account_page.dart b/lib/account/page/withdrawal_account_page.dart index be19d6765..88125de68 100644 --- a/lib/account/page/withdrawal_account_page.dart +++ b/lib/account/page/withdrawal_account_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/account/models/withdrawal_account_model.dart'; import 'package:flutter_deer/account/widgets/withdrawal_account_item.dart'; diff --git a/lib/account/page/withdrawal_page.dart b/lib/account/page/withdrawal_page.dart index 55eb58e79..cee09b362 100644 --- a/lib/account/page/withdrawal_page.dart +++ b/lib/account/page/withdrawal_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/account/models/withdrawal_account_model.dart'; import 'package:flutter_deer/res/resources.dart'; diff --git a/lib/account/page/withdrawal_password_page.dart b/lib/account/page/withdrawal_password_page.dart index 43e49e731..2a9802cb1 100644 --- a/lib/account/page/withdrawal_password_page.dart +++ b/lib/account/page/withdrawal_password_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/account/widgets/sms_verify_dialog.dart'; import 'package:flutter_deer/account/widgets/withdrawal_password_setting.dart'; diff --git a/lib/account/page/withdrawal_record_list_page.dart b/lib/account/page/withdrawal_record_list_page.dart index 91d84abad..13ce58c49 100644 --- a/lib/account/page/withdrawal_record_list_page.dart +++ b/lib/account/page/withdrawal_record_list_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/util/theme_utils.dart'; diff --git a/lib/account/page/withdrawal_result_page.dart b/lib/account/page/withdrawal_result_page.dart index 8383a9840..aec7151e0 100644 --- a/lib/account/page/withdrawal_result_page.dart +++ b/lib/account/page/withdrawal_result_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; diff --git a/lib/account/widgets/rise_number_text.dart b/lib/account/widgets/rise_number_text.dart index 1bf2ee3cb..849af97cc 100644 --- a/lib/account/widgets/rise_number_text.dart +++ b/lib/account/widgets/rise_number_text.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; // 简易实现数字滚动效果 diff --git a/lib/account/widgets/sms_verify_dialog.dart b/lib/account/widgets/sms_verify_dialog.dart index 70be10395..feb7b3a6a 100644 --- a/lib/account/widgets/sms_verify_dialog.dart +++ b/lib/account/widgets/sms_verify_dialog.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'dart:async'; import 'package:flutter/material.dart'; diff --git a/lib/account/widgets/withdrawal_account_item.dart b/lib/account/widgets/withdrawal_account_item.dart index 11b8d5098..e86d3530f 100644 --- a/lib/account/widgets/withdrawal_account_item.dart +++ b/lib/account/widgets/withdrawal_account_item.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'dart:math'; import 'package:flutter/material.dart'; diff --git a/lib/account/widgets/withdrawal_password_setting.dart b/lib/account/widgets/withdrawal_password_setting.dart index 205233ade..c2672b6d3 100644 --- a/lib/account/widgets/withdrawal_password_setting.dart +++ b/lib/account/widgets/withdrawal_password_setting.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; diff --git a/lib/demo/demo_page.dart b/lib/demo/demo_page.dart index 5facdc0fa..5672c2a83 100644 --- a/lib/demo/demo_page.dart +++ b/lib/demo/demo_page.dart @@ -1,3 +1,4 @@ +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/demo/focus/focus_demo_page.dart'; import 'package:flutter_deer/demo/lottie/lottie_demo.dart'; diff --git a/lib/demo/focus/focus_demo_page.dart b/lib/demo/focus/focus_demo_page.dart index d5f694440..1b2d1eaff 100644 --- a/lib/demo/focus/focus_demo_page.dart +++ b/lib/demo/focus/focus_demo_page.dart @@ -1,3 +1,4 @@ +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/util/theme_utils.dart'; diff --git a/lib/demo/lottie/lottie_demo.dart b/lib/demo/lottie/lottie_demo.dart index 710d0e267..899c68c7e 100644 --- a/lib/demo/lottie/lottie_demo.dart +++ b/lib/demo/lottie/lottie_demo.dart @@ -6,7 +6,7 @@ import 'package:lottie/lottie.dart'; /// 感谢Flopsy项目提供的思路及素材 class LottieDemo extends StatefulWidget { - const LottieDemo({Key key,}) : super(key: key); + const LottieDemo({Key? key,}) : super(key: key); @override _LottieDemoState createState() => _LottieDemoState(); @@ -18,8 +18,8 @@ const Color _textColor = Color(0xFFCCCCCC); class _LottieDemoState extends State with TickerProviderStateMixin { - AnimationController _controller; - Bunny _bunny; + late AnimationController _controller; + late Bunny _bunny; @override void initState() { @@ -132,8 +132,8 @@ class _LottieDemoState extends State with TickerProviderStateMixin { class _MyTextField extends StatefulWidget { const _MyTextField({ - Key key, - @required this.labelText, + Key? key, + required this.labelText, this.obscureText = false, this.keyboardType, this.onHasFocus, @@ -143,13 +143,13 @@ class _MyTextField extends StatefulWidget { final String labelText; final bool obscureText; - final TextInputType keyboardType; + final TextInputType? keyboardType; /// 获取焦点监听 - final Function(bool isObscure) onHasFocus; + final Function(bool isObscure)? onHasFocus; /// 密码可见监听 - final Function(bool isObscure) onObscureText; + final Function(bool isObscure)? onObscureText; /// 文字输入监听 - final Function(String text) onChanged; + final Function(String text)? onChanged; @override _MyTextFieldState createState() => _MyTextFieldState(); @@ -168,7 +168,7 @@ class _MyTextFieldState extends State<_MyTextField> { void _refresh() { if (_focusNode.hasFocus && widget.onHasFocus != null) { - widget.onHasFocus(_isObscure); + widget.onHasFocus?.call(_isObscure); } setState(() { @@ -216,7 +216,7 @@ class _MyTextFieldState extends State<_MyTextField> { _isObscure = !_isObscure; }); if (widget.onObscureText != null) { - widget.onObscureText(_isObscure); + widget.onObscureText?.call(_isObscure); } }, ) : null, diff --git a/lib/demo/navigator/books_app_state.dart b/lib/demo/navigator/books_app_state.dart index cfc2685e1..49f2ddd58 100644 --- a/lib/demo/navigator/books_app_state.dart +++ b/lib/demo/navigator/books_app_state.dart @@ -1,3 +1,4 @@ +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/demo/navigator/book_entity.dart'; diff --git a/lib/demo/navigator/books_main.dart b/lib/demo/navigator/books_main.dart index 0132263e8..d58c2c0a0 100644 --- a/lib/demo/navigator/books_main.dart +++ b/lib/demo/navigator/books_main.dart @@ -1,3 +1,4 @@ +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/demo/navigator/parser/route_information_parser.dart'; import 'package:flutter_deer/demo/navigator/delegate/router_delegate.dart'; diff --git a/lib/demo/navigator/delegate/inner_router_delegate.dart b/lib/demo/navigator/delegate/inner_router_delegate.dart index 10020a459..a5efed122 100644 --- a/lib/demo/navigator/delegate/inner_router_delegate.dart +++ b/lib/demo/navigator/delegate/inner_router_delegate.dart @@ -1,3 +1,4 @@ +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/demo/navigator/book_entity.dart'; import 'package:flutter_deer/demo/navigator/books_app_state.dart'; diff --git a/lib/demo/navigator/delegate/router_delegate.dart b/lib/demo/navigator/delegate/router_delegate.dart index 7708b4b42..6d7c4b299 100644 --- a/lib/demo/navigator/delegate/router_delegate.dart +++ b/lib/demo/navigator/delegate/router_delegate.dart @@ -1,3 +1,4 @@ +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/demo/navigator/screen/app_shell.dart'; import 'package:flutter_deer/demo/navigator/book_entity.dart'; diff --git a/lib/demo/navigator/parser/route_information_parser.dart b/lib/demo/navigator/parser/route_information_parser.dart index 8814fca38..dc8ae29b0 100644 --- a/lib/demo/navigator/parser/route_information_parser.dart +++ b/lib/demo/navigator/parser/route_information_parser.dart @@ -1,3 +1,4 @@ +// @dart=2.9 import 'package:flutter/material.dart'; import '../book_entity.dart'; diff --git a/lib/demo/navigator/screen/app_shell.dart b/lib/demo/navigator/screen/app_shell.dart index 777abcf99..200b59324 100644 --- a/lib/demo/navigator/screen/app_shell.dart +++ b/lib/demo/navigator/screen/app_shell.dart @@ -1,3 +1,4 @@ +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/demo/navigator/books_app_state.dart'; import 'package:flutter_deer/demo/navigator/delegate/inner_router_delegate.dart'; diff --git a/lib/demo/navigator/screen/book_details_screen.dart b/lib/demo/navigator/screen/book_details_screen.dart index abe2dd217..cb960e660 100644 --- a/lib/demo/navigator/screen/book_details_screen.dart +++ b/lib/demo/navigator/screen/book_details_screen.dart @@ -4,8 +4,8 @@ import 'package:flutter_deer/demo/navigator/book_entity.dart'; class BookDetailsScreen extends StatelessWidget { const BookDetailsScreen({ - Key key, - @required this.book, + Key? key, + required this.book, }): super(key: key); final Book book; diff --git a/lib/demo/navigator/screen/books_list_screen.dart b/lib/demo/navigator/screen/books_list_screen.dart index cde1821f5..0965c6e7e 100644 --- a/lib/demo/navigator/screen/books_list_screen.dart +++ b/lib/demo/navigator/screen/books_list_screen.dart @@ -4,9 +4,9 @@ import 'package:flutter_deer/demo/navigator/book_entity.dart'; class BooksListScreen extends StatelessWidget { const BooksListScreen({ - Key key, - @required this.books, - @required this.onTapped, + Key? key, + required this.books, + required this.onTapped, }): super(key: key); final List books; diff --git a/lib/demo/navigator/screen/setting_screen.dart b/lib/demo/navigator/screen/setting_screen.dart index 564426e09..4efd5e1f9 100644 --- a/lib/demo/navigator/screen/setting_screen.dart +++ b/lib/demo/navigator/screen/setting_screen.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart'; class SettingsScreen extends StatelessWidget { - const SettingsScreen({Key key}) : super(key: key); + const SettingsScreen({Key? key}) : super(key: key); @override Widget build(BuildContext context) { diff --git a/lib/demo/overlay/bottom_navigation/my_bottom_navigation_bar.dart b/lib/demo/overlay/bottom_navigation/my_bottom_navigation_bar.dart index 6dda31afe..d6b86afef 100644 --- a/lib/demo/overlay/bottom_navigation/my_bottom_navigation_bar.dart +++ b/lib/demo/overlay/bottom_navigation/my_bottom_navigation_bar.dart @@ -4,10 +4,10 @@ import 'package:flutter/material.dart'; class MyBottomNavigationBar extends StatefulWidget { const MyBottomNavigationBar({ - Key key, + Key? key, this.selectedPosition = 0, this.isShowIndicator = true, - @required this.selectedCallback, + required this.selectedCallback, }) : super(key: key); /// 选中下标 @@ -42,14 +42,14 @@ class _MyBottomNavigationBarState extends State with Tick double itemWidth = 0; - AnimationController controller; - Animation animation; + late AnimationController controller; + late Animation animation; @override void initState() { super.initState(); - WidgetsBinding.instance.addPostFrameCallback((_) { - itemWidth = (context.size.width - barHeight) / 3; + WidgetsBinding.instance!.addPostFrameCallback((_) { + itemWidth = (context.size!.width - barHeight) / 3; setState(() {}); }); diff --git a/lib/demo/overlay/overlay_main.dart b/lib/demo/overlay/overlay_main.dart index 0a4ccc380..3a74141c4 100644 --- a/lib/demo/overlay/overlay_main.dart +++ b/lib/demo/overlay/overlay_main.dart @@ -6,7 +6,7 @@ import 'package:flutter_deer/demo/overlay/route/my_navigator_observer.dart'; class OverlayDemo extends StatelessWidget { - OverlayDemo({Key key}): super(key: key) { + OverlayDemo({Key? key}): super(key: key) { Application.navigatorObserver = MyNavigatorObserver(); } // This widget is the root of your application. diff --git a/lib/demo/overlay/page/overlay_demo_page.dart b/lib/demo/overlay/page/overlay_demo_page.dart index 4958b7576..0c7e2047f 100644 --- a/lib/demo/overlay/page/overlay_demo_page.dart +++ b/lib/demo/overlay/page/overlay_demo_page.dart @@ -11,7 +11,7 @@ import 'package:flutter_deer/demo/overlay/route/application.dart'; /// 本例包含自定义BottomNavigationBar,路由监听及Overlay悬浮用法。 class OverlayDemoPage extends StatefulWidget { - const OverlayDemoPage({Key key}) : super(key: key); + const OverlayDemoPage({Key? key}) : super(key: key); @override _OverlayDemoPageState createState() => _OverlayDemoPageState(); @@ -19,17 +19,17 @@ class OverlayDemoPage extends StatefulWidget { class _OverlayDemoPageState extends State { - OverlayEntry _overlayEntry; + OverlayEntry? _overlayEntry; @override void initState() { super.initState(); - WidgetsBinding.instance.addPostFrameCallback((_) { + WidgetsBinding.instance!.addPostFrameCallback((_) { _overlayEntry = OverlayEntry( builder: (context) => _buildBottomNavigation(context), ); /// 添加悬浮 - Overlay.of(context).insert(_overlayEntry); + Overlay.of(context)?.insert(_overlayEntry!); }); } diff --git a/lib/demo/overlay/page/test_page.dart b/lib/demo/overlay/page/test_page.dart index 2e33c72aa..20e0c0d39 100644 --- a/lib/demo/overlay/page/test_page.dart +++ b/lib/demo/overlay/page/test_page.dart @@ -4,7 +4,7 @@ import 'package:flutter_deer/demo/widgets/neumorphic.dart'; class TestPage extends StatefulWidget { - const TestPage({Key key}) : super(key: key); + const TestPage({Key? key}) : super(key: key); @override _TestPageState createState() => _TestPageState(); diff --git a/lib/demo/overlay/route/application.dart b/lib/demo/overlay/route/application.dart index fbfe84d45..8f584cbc5 100644 --- a/lib/demo/overlay/route/application.dart +++ b/lib/demo/overlay/route/application.dart @@ -3,5 +3,5 @@ import 'package:flutter_deer/demo/overlay/route/my_navigator_observer.dart'; class Application { - static MyNavigatorObserver navigatorObserver; + static late MyNavigatorObserver navigatorObserver; } diff --git a/lib/demo/overlay/route/my_navigator_observer.dart b/lib/demo/overlay/route/my_navigator_observer.dart index e778d0255..b5aa74a23 100644 --- a/lib/demo/overlay/route/my_navigator_observer.dart +++ b/lib/demo/overlay/route/my_navigator_observer.dart @@ -6,7 +6,7 @@ class MyNavigatorObserver extends NavigatorObserver { List> list = []; @override - void didPush(Route route, Route previousRoute) { + void didPush(Route route, Route? previousRoute) { /// 首页不添加 if (route.settings.name != '/') { list.add(route); @@ -15,7 +15,7 @@ class MyNavigatorObserver extends NavigatorObserver { } @override - void didPop(Route route, Route previousRoute) { + void didPop(Route route, Route? previousRoute) { list.remove(route); print(list.length); } diff --git a/lib/demo/ripple/ripples_animation_page.dart b/lib/demo/ripple/ripples_animation_page.dart index 952ae9242..28a54b422 100644 --- a/lib/demo/ripple/ripples_animation_page.dart +++ b/lib/demo/ripple/ripples_animation_page.dart @@ -7,7 +7,7 @@ import 'package:flutter_deer/util/theme_utils.dart'; /// https://medium.com/flutterdevs/ripple-animation-in-flutter-3421cbd66a18 class RipplesAnimationPage extends StatefulWidget { const RipplesAnimationPage({ - Key key, + Key? key, this.size = 80.0, this.color = Colors.red, }) : super(key: key); @@ -21,7 +21,7 @@ class RipplesAnimationPage extends StatefulWidget { class _RipplesAnimationState extends State with TickerProviderStateMixin { - AnimationController _controller; + late AnimationController _controller; @override void initState() { @@ -47,7 +47,7 @@ class _RipplesAnimationState extends State with TickerProv gradient: RadialGradient( colors: [ widget.color, - Color.lerp(widget.color, Colors.black, .05) + Color.lerp(widget.color, Colors.black, .05)! ], ), ), @@ -92,14 +92,14 @@ class _RipplesAnimationState extends State with TickerProv class CirclePainter extends CustomPainter { CirclePainter(this._animation, { - @required this.color, + required this.color, }) : super(repaint: _animation); final Color color; final Animation _animation; void circle(Canvas canvas, Rect rect, double value) { - final double opacity = (1.0 - (value / 4.0)).clamp(0.0, 1.0) as double; + final double opacity = (1.0 - (value / 4.0)).clamp(0.0, 1.0); final Color _color = color.withOpacity(opacity); final double size = rect.width / 2; final double area = size * size; diff --git a/lib/demo/scratcher/scratch_card_demo_page.dart b/lib/demo/scratcher/scratch_card_demo_page.dart index 316c1f4d5..2dd71636f 100755 --- a/lib/demo/scratcher/scratch_card_demo_page.dart +++ b/lib/demo/scratcher/scratch_card_demo_page.dart @@ -8,7 +8,7 @@ import 'package:scratcher/scratcher.dart'; class ScratchCardDemoPage extends StatefulWidget { - const ScratchCardDemoPage({Key key}) : super(key: key); + const ScratchCardDemoPage({Key? key}) : super(key: key); @override _ScratchCardDemoPageState createState() => _ScratchCardDemoPageState(); @@ -37,7 +37,7 @@ class _ScratchCardDemoPageState extends State { onThreshold: () { /// 这里设置刮开50%,就揭开所有。 print('Threshold reached!'); - scratchKey.currentState.reveal( + scratchKey.currentState!.reveal( duration: const Duration(milliseconds: 1000), ); }, @@ -56,7 +56,7 @@ class _ScratchCardDemoPageState extends State { OutlinedButton( child: const Text('Reset'), onPressed: () { - scratchKey.currentState.reset( + scratchKey.currentState!.reset( duration: const Duration(milliseconds: 2000), ); }, @@ -64,7 +64,7 @@ class _ScratchCardDemoPageState extends State { ElevatedButton( child: const Text('Reveal'), onPressed: () { - scratchKey.currentState.reveal( + scratchKey.currentState!.reveal( duration: const Duration(milliseconds: 2000), ); }, diff --git a/lib/demo/widgets/neumorphic.dart b/lib/demo/widgets/neumorphic.dart index 8babd53c3..57bb1c5f5 100644 --- a/lib/demo/widgets/neumorphic.dart +++ b/lib/demo/widgets/neumorphic.dart @@ -6,8 +6,8 @@ import 'package:flutter/material.dart'; class NeumorphicContainer extends StatefulWidget { NeumorphicContainer({ - Key key, - this.child, + Key? key, + required this.child, this.bevel = 10.0, this.color, }) : blurOffset = Offset(bevel / 2, bevel / 2), @@ -16,7 +16,7 @@ class NeumorphicContainer extends StatefulWidget { final Widget child; final double bevel; final Offset blurOffset; - final Color color; + final Color? color; @override _NeumorphicContainerState createState() => _NeumorphicContainerState(); @@ -81,6 +81,6 @@ class _NeumorphicContainerState extends State { extension ColorUtils on Color { Color mix(Color another, double amount) { - return Color.lerp(this, another, amount); + return Color.lerp(this, another, amount)!; } } \ No newline at end of file diff --git a/lib/generated/json/bank_entity_helper.dart b/lib/generated/json/bank_entity_helper.dart index 1c451a914..a940feaba 100644 --- a/lib/generated/json/bank_entity_helper.dart +++ b/lib/generated/json/bank_entity_helper.dart @@ -1,14 +1,17 @@ import 'package:flutter_deer/account/models/bank_entity.dart'; +import 'package:azlistview/azlistview.dart'; bankEntityFromJson(BankEntity data, Map json) { if (json['id'] != null) { - data.id = json['id']?.toInt(); + data.id = json['id'] is String + ? int.tryParse(json['id']) + : json['id'].toInt(); } if (json['bankName'] != null) { - data.bankName = json['bankName']?.toString(); + data.bankName = json['bankName'].toString(); } if (json['firstLetter'] != null) { - data.firstLetter = json['firstLetter']?.toString(); + data.firstLetter = json['firstLetter'].toString(); } return data; } diff --git a/lib/generated/json/base/json_convert_content.dart b/lib/generated/json/base/json_convert_content.dart index 4529e2655..253805a80 100644 --- a/lib/generated/json/base/json_convert_content.dart +++ b/lib/generated/json/base/json_convert_content.dart @@ -5,10 +5,10 @@ // This file is automatically generated. DO NOT EDIT, all your changes would be lost. import 'package:flutter_deer/account/models/bank_entity.dart'; import 'package:flutter_deer/generated/json/bank_entity_helper.dart'; -import 'package:flutter_deer/account/models/city_entity.dart'; -import 'package:flutter_deer/generated/json/city_entity_helper.dart'; import 'package:flutter_deer/shop/models/user_entity.dart'; import 'package:flutter_deer/generated/json/user_entity_helper.dart'; +import 'package:flutter_deer/account/models/city_entity.dart'; +import 'package:flutter_deer/generated/json/city_entity_helper.dart'; import 'package:flutter_deer/order/models/search_entity.dart'; import 'package:flutter_deer/generated/json/search_entity_helper.dart'; @@ -22,58 +22,89 @@ class JsonConvert { } static _getFromJson(Type type, data, json) { - switch (type) { case BankEntity: - return bankEntityFromJson(data as BankEntity, json) as T; case CityEntity: - return cityEntityFromJson(data as CityEntity, json) as T; case UserEntity: - return userEntityFromJson(data as UserEntity, json) as T; case SearchEntity: - return searchEntityFromJson(data as SearchEntity, json) as T; case SearchItem: - return searchItemFromJson(data as SearchItem, json) as T; } + switch (type) { + case BankEntity: + return bankEntityFromJson(data as BankEntity, json) as T; + case UserEntity: + return userEntityFromJson(data as UserEntity, json) as T; + case CityEntity: + return cityEntityFromJson(data as CityEntity, json) as T; + case SearchEntity: + return searchEntityFromJson(data as SearchEntity, json) as T; + case SearchItems: + return searchItemsFromJson(data as SearchItems, json) as T; + case SearchItemsOwner: + return searchItemsOwnerFromJson(data as SearchItemsOwner, json) as T; + case SearchItemsLicense: + return searchItemsLicenseFromJson(data as SearchItemsLicense, json) as T; } return data as T; } static _getToJson(Type type, data) { - switch (type) { case BankEntity: - return bankEntityToJson(data as BankEntity); case CityEntity: - return cityEntityToJson(data as CityEntity); case UserEntity: - return userEntityToJson(data as UserEntity); case SearchEntity: - return searchEntityToJson(data as SearchEntity); case SearchItem: - return searchItemToJson(data as SearchItem); } - return data as T; - } + switch (type) { + case BankEntity: + return bankEntityToJson(data as BankEntity); + case UserEntity: + return userEntityToJson(data as UserEntity); + case CityEntity: + return cityEntityToJson(data as CityEntity); + case SearchEntity: + return searchEntityToJson(data as SearchEntity); + case SearchItems: + return searchItemsToJson(data as SearchItems); + case SearchItemsOwner: + return searchItemsOwnerToJson(data as SearchItemsOwner); + case SearchItemsLicense: + return searchItemsLicenseToJson(data as SearchItemsLicense); + } + return data as T; + } //Go back to a single instance by type - static _fromJsonSingle(String type, json) { - switch (type) { case 'BankEntity': - return BankEntity().fromJson(json); case 'CityEntity': - return CityEntity().fromJson(json); case 'UserEntity': - return UserEntity().fromJson(json); case 'SearchEntity': - return SearchEntity().fromJson(json); case 'SearchItem': - return SearchItem().fromJson(json); } - return null; - } + static _fromJsonSingle( json) { + String type = M.toString(); + if(type == (BankEntity).toString()){ + return BankEntity().fromJson(json); + } else if(type == (UserEntity).toString()){ + return UserEntity().fromJson(json); + } else if(type == (CityEntity).toString()){ + return CityEntity().fromJson(json); + } else if(type == (SearchEntity).toString()){ + return SearchEntity().fromJson(json); + } else if(type == (SearchItems).toString()){ + return SearchItems().fromJson(json); + } else if(type == (SearchItemsOwner).toString()){ + return SearchItemsOwner().fromJson(json); + } else if(type == (SearchItemsLicense).toString()){ + return SearchItemsLicense().fromJson(json); + } + return null; + } - //empty list is returned by type - static _getListFromType(String type) { - switch (type) { case 'BankEntity': - return List(); case 'CityEntity': - return List(); case 'UserEntity': - return List(); case 'SearchEntity': - return List(); case 'SearchItem': - return List(); } - return null; - } + //list is returned by type + static M _getListChildType(List data) { + if([] is M){ + return data.map((e) => BankEntity().fromJson(e)).toList() as M; + } else if([] is M){ + return data.map((e) => UserEntity().fromJson(e)).toList() as M; + } else if([] is M){ + return data.map((e) => CityEntity().fromJson(e)).toList() as M; + } else if([] is M){ + return data.map((e) => SearchEntity().fromJson(e)).toList() as M; + } else if([] is M){ + return data.map((e) => SearchItems().fromJson(e)).toList() as M; + } else if([] is M){ + return data.map((e) => SearchItemsOwner().fromJson(e)).toList() as M; + } else if([] is M){ + return data.map((e) => SearchItemsLicense().fromJson(e)).toList() as M; + } + throw Exception("not fond"); + } static M fromJsonAsT(json) { - String type = M.toString(); - if (json is List && type.contains("List<")) { - String itemType = type.substring(5, type.length - 1); - List tempList = _getListFromType(itemType); - json.forEach((itemJson) { - tempList - .add(_fromJsonSingle(type.substring(5, type.length - 1), itemJson)); - }); - return tempList as M; + if (json is List) { + return _getListChildType(json); } else { - return _fromJsonSingle(M.toString(), json) as M; + return _fromJsonSingle(json) as M; } } } \ No newline at end of file diff --git a/lib/generated/json/base/json_filed.dart b/lib/generated/json/base/json_field.dart similarity index 62% rename from lib/generated/json/base/json_filed.dart rename to lib/generated/json/base/json_field.dart index 3c7431347..33e90c042 100644 --- a/lib/generated/json/base/json_filed.dart +++ b/lib/generated/json/base/json_field.dart @@ -6,16 +6,13 @@ class JSONField { //Specify the parse field name - final String name; - - //Specify the time resolution format - final String format; + final String? name; //Whether to participate in toJson - final bool serialize; + final bool? serialize; //Whether to participate in fromMap - final bool deserialize; + final bool? deserialize; - const JSONField({this.name, this.format, this.serialize, this.deserialize}); + const JSONField({this.name, this.serialize, this.deserialize}); } diff --git a/lib/generated/json/city_entity_helper.dart b/lib/generated/json/city_entity_helper.dart index 6141a1c4a..284104646 100644 --- a/lib/generated/json/city_entity_helper.dart +++ b/lib/generated/json/city_entity_helper.dart @@ -1,14 +1,15 @@ import 'package:flutter_deer/account/models/city_entity.dart'; +import 'package:azlistview/azlistview.dart'; cityEntityFromJson(CityEntity data, Map json) { if (json['name'] != null) { - data.name = json['name']?.toString(); + data.name = json['name'].toString(); } if (json['cityCode'] != null) { - data.cityCode = json['cityCode']?.toString(); + data.cityCode = json['cityCode'].toString(); } if (json['firstCharacter'] != null) { - data.firstCharacter = json['firstCharacter']?.toString(); + data.firstCharacter = json['firstCharacter'].toString(); } return data; } diff --git a/lib/generated/json/search_entity_helper.dart b/lib/generated/json/search_entity_helper.dart index 9a9bff64b..6b3f1a0a9 100644 --- a/lib/generated/json/search_entity_helper.dart +++ b/lib/generated/json/search_entity_helper.dart @@ -2,16 +2,15 @@ import 'package:flutter_deer/order/models/search_entity.dart'; searchEntityFromJson(SearchEntity data, Map json) { if (json['total_count'] != null) { - data.totalCount = json['total_count']?.toInt(); + data.totalCount = json['total_count'] is String + ? int.tryParse(json['total_count']) + : json['total_count'].toInt(); } if (json['incomplete_results'] != null) { data.incompleteResults = json['incomplete_results']; } if (json['items'] != null) { - data.items = new List(); - (json['items'] as List).forEach((v) { - data.items.add(new SearchItem().fromJson(v)); - }); + data.items = (json['items'] as List).map((v) => SearchItems().fromJson(v)).toList(); } return data; } @@ -20,183 +19,192 @@ Map searchEntityToJson(SearchEntity entity) { final Map data = new Map(); data['total_count'] = entity.totalCount; data['incomplete_results'] = entity.incompleteResults; - if (entity.items != null) { - data['items'] = entity.items.map((v) => v.toJson()).toList(); - } + data['items'] = entity.items?.map((v) => v.toJson())?.toList(); return data; } -searchItemFromJson(SearchItem data, Map json) { +searchItemsFromJson(SearchItems data, Map json) { if (json['id'] != null) { - data.id = json['id']?.toInt(); + data.id = json['id'] is String + ? int.tryParse(json['id']) + : json['id'].toInt(); } if (json['node_id'] != null) { - data.nodeId = json['node_id']?.toString(); + data.nodeId = json['node_id'].toString(); } if (json['name'] != null) { - data.name = json['name']?.toString(); + data.name = json['name'].toString(); } if (json['full_name'] != null) { - data.fullName = json['full_name']?.toString(); + data.fullName = json['full_name'].toString(); } if (json['private'] != null) { data.private = json['private']; } + if (json['owner'] != null) { + data.owner = SearchItemsOwner().fromJson(json['owner']); + } if (json['html_url'] != null) { - data.htmlUrl = json['html_url']?.toString(); + data.htmlUrl = json['html_url'].toString(); } if (json['description'] != null) { - data.description = json['description']?.toString(); + data.description = json['description'].toString(); } if (json['fork'] != null) { data.fork = json['fork']; } if (json['url'] != null) { - data.url = json['url']?.toString(); + data.url = json['url'].toString(); } if (json['forks_url'] != null) { - data.forksUrl = json['forks_url']?.toString(); + data.forksUrl = json['forks_url'].toString(); } if (json['keys_url'] != null) { - data.keysUrl = json['keys_url']?.toString(); + data.keysUrl = json['keys_url'].toString(); } if (json['collaborators_url'] != null) { - data.collaboratorsUrl = json['collaborators_url']?.toString(); + data.collaboratorsUrl = json['collaborators_url'].toString(); } if (json['teams_url'] != null) { - data.teamsUrl = json['teams_url']?.toString(); + data.teamsUrl = json['teams_url'].toString(); } if (json['hooks_url'] != null) { - data.hooksUrl = json['hooks_url']?.toString(); + data.hooksUrl = json['hooks_url'].toString(); } if (json['issue_events_url'] != null) { - data.issueEventsUrl = json['issue_events_url']?.toString(); + data.issueEventsUrl = json['issue_events_url'].toString(); } if (json['events_url'] != null) { - data.eventsUrl = json['events_url']?.toString(); + data.eventsUrl = json['events_url'].toString(); } if (json['assignees_url'] != null) { - data.assigneesUrl = json['assignees_url']?.toString(); + data.assigneesUrl = json['assignees_url'].toString(); } if (json['branches_url'] != null) { - data.branchesUrl = json['branches_url']?.toString(); + data.branchesUrl = json['branches_url'].toString(); } if (json['tags_url'] != null) { - data.tagsUrl = json['tags_url']?.toString(); + data.tagsUrl = json['tags_url'].toString(); } if (json['blobs_url'] != null) { - data.blobsUrl = json['blobs_url']?.toString(); + data.blobsUrl = json['blobs_url'].toString(); } if (json['git_tags_url'] != null) { - data.gitTagsUrl = json['git_tags_url']?.toString(); + data.gitTagsUrl = json['git_tags_url'].toString(); } if (json['git_refs_url'] != null) { - data.gitRefsUrl = json['git_refs_url']?.toString(); + data.gitRefsUrl = json['git_refs_url'].toString(); } if (json['trees_url'] != null) { - data.treesUrl = json['trees_url']?.toString(); + data.treesUrl = json['trees_url'].toString(); } if (json['statuses_url'] != null) { - data.statusesUrl = json['statuses_url']?.toString(); + data.statusesUrl = json['statuses_url'].toString(); } if (json['languages_url'] != null) { - data.languagesUrl = json['languages_url']?.toString(); + data.languagesUrl = json['languages_url'].toString(); } if (json['stargazers_url'] != null) { - data.stargazersUrl = json['stargazers_url']?.toString(); + data.stargazersUrl = json['stargazers_url'].toString(); } if (json['contributors_url'] != null) { - data.contributorsUrl = json['contributors_url']?.toString(); + data.contributorsUrl = json['contributors_url'].toString(); } if (json['subscribers_url'] != null) { - data.subscribersUrl = json['subscribers_url']?.toString(); + data.subscribersUrl = json['subscribers_url'].toString(); } if (json['subscription_url'] != null) { - data.subscriptionUrl = json['subscription_url']?.toString(); + data.subscriptionUrl = json['subscription_url'].toString(); } if (json['commits_url'] != null) { - data.commitsUrl = json['commits_url']?.toString(); + data.commitsUrl = json['commits_url'].toString(); } if (json['git_commits_url'] != null) { - data.gitCommitsUrl = json['git_commits_url']?.toString(); + data.gitCommitsUrl = json['git_commits_url'].toString(); } if (json['comments_url'] != null) { - data.commentsUrl = json['comments_url']?.toString(); + data.commentsUrl = json['comments_url'].toString(); } if (json['issue_comment_url'] != null) { - data.issueCommentUrl = json['issue_comment_url']?.toString(); + data.issueCommentUrl = json['issue_comment_url'].toString(); } if (json['contents_url'] != null) { - data.contentsUrl = json['contents_url']?.toString(); + data.contentsUrl = json['contents_url'].toString(); } if (json['compare_url'] != null) { - data.compareUrl = json['compare_url']?.toString(); + data.compareUrl = json['compare_url'].toString(); } if (json['merges_url'] != null) { - data.mergesUrl = json['merges_url']?.toString(); + data.mergesUrl = json['merges_url'].toString(); } if (json['archive_url'] != null) { - data.archiveUrl = json['archive_url']?.toString(); + data.archiveUrl = json['archive_url'].toString(); } if (json['downloads_url'] != null) { - data.downloadsUrl = json['downloads_url']?.toString(); + data.downloadsUrl = json['downloads_url'].toString(); } if (json['issues_url'] != null) { - data.issuesUrl = json['issues_url']?.toString(); + data.issuesUrl = json['issues_url'].toString(); } if (json['pulls_url'] != null) { - data.pullsUrl = json['pulls_url']?.toString(); + data.pullsUrl = json['pulls_url'].toString(); } if (json['milestones_url'] != null) { - data.milestonesUrl = json['milestones_url']?.toString(); + data.milestonesUrl = json['milestones_url'].toString(); } if (json['notifications_url'] != null) { - data.notificationsUrl = json['notifications_url']?.toString(); + data.notificationsUrl = json['notifications_url'].toString(); } if (json['labels_url'] != null) { - data.labelsUrl = json['labels_url']?.toString(); + data.labelsUrl = json['labels_url'].toString(); } if (json['releases_url'] != null) { - data.releasesUrl = json['releases_url']?.toString(); + data.releasesUrl = json['releases_url'].toString(); } if (json['deployments_url'] != null) { - data.deploymentsUrl = json['deployments_url']?.toString(); + data.deploymentsUrl = json['deployments_url'].toString(); } if (json['created_at'] != null) { - data.createdAt = json['created_at']?.toString(); + data.createdAt = json['created_at'].toString(); } if (json['updated_at'] != null) { - data.updatedAt = json['updated_at']?.toString(); + data.updatedAt = json['updated_at'].toString(); } if (json['pushed_at'] != null) { - data.pushedAt = json['pushed_at']?.toString(); + data.pushedAt = json['pushed_at'].toString(); } if (json['git_url'] != null) { - data.gitUrl = json['git_url']?.toString(); + data.gitUrl = json['git_url'].toString(); } if (json['ssh_url'] != null) { - data.sshUrl = json['ssh_url']?.toString(); + data.sshUrl = json['ssh_url'].toString(); } if (json['clone_url'] != null) { - data.cloneUrl = json['clone_url']?.toString(); + data.cloneUrl = json['clone_url'].toString(); } if (json['svn_url'] != null) { - data.svnUrl = json['svn_url']?.toString(); + data.svnUrl = json['svn_url'].toString(); } if (json['homepage'] != null) { - data.homepage = json['homepage']?.toString(); + data.homepage = json['homepage'].toString(); } if (json['size'] != null) { - data.size = json['size']?.toInt(); + data.size = json['size'] is String + ? int.tryParse(json['size']) + : json['size'].toInt(); } if (json['stargazers_count'] != null) { - data.stargazersCount = json['stargazers_count']?.toInt(); + data.stargazersCount = json['stargazers_count'] is String + ? int.tryParse(json['stargazers_count']) + : json['stargazers_count'].toInt(); } if (json['watchers_count'] != null) { - data.watchersCount = json['watchers_count']?.toInt(); + data.watchersCount = json['watchers_count'] is String + ? int.tryParse(json['watchers_count']) + : json['watchers_count'].toInt(); } if (json['language'] != null) { - data.language = json['language']?.toString(); + data.language = json['language'].toString(); } if (json['has_issues'] != null) { data.hasIssues = json['has_issues']; @@ -214,7 +222,12 @@ searchItemFromJson(SearchItem data, Map json) { data.hasPages = json['has_pages']; } if (json['forks_count'] != null) { - data.forksCount = json['forks_count']?.toInt(); + data.forksCount = json['forks_count'] is String + ? int.tryParse(json['forks_count']) + : json['forks_count'].toInt(); + } + if (json['mirror_url'] != null) { + data.mirrorUrl = json['mirror_url']; } if (json['archived'] != null) { data.archived = json['archived']; @@ -223,33 +236,47 @@ searchItemFromJson(SearchItem data, Map json) { data.disabled = json['disabled']; } if (json['open_issues_count'] != null) { - data.openIssuesCount = json['open_issues_count']?.toInt(); + data.openIssuesCount = json['open_issues_count'] is String + ? int.tryParse(json['open_issues_count']) + : json['open_issues_count'].toInt(); + } + if (json['license'] != null) { + data.license = SearchItemsLicense().fromJson(json['license']); } if (json['forks'] != null) { - data.forks = json['forks']?.toInt(); + data.forks = json['forks'] is String + ? int.tryParse(json['forks']) + : json['forks'].toInt(); } if (json['open_issues'] != null) { - data.openIssues = json['open_issues']?.toInt(); + data.openIssues = json['open_issues'] is String + ? int.tryParse(json['open_issues']) + : json['open_issues'].toInt(); } if (json['watchers'] != null) { - data.watchers = json['watchers']?.toInt(); + data.watchers = json['watchers'] is String + ? int.tryParse(json['watchers']) + : json['watchers'].toInt(); } if (json['default_branch'] != null) { - data.defaultBranch = json['default_branch']?.toString(); + data.defaultBranch = json['default_branch'].toString(); } if (json['score'] != null) { - data.score = json['score']?.toDouble(); + data.score = json['score'] is String + ? double.tryParse(json['score']) + : json['score'].toDouble(); } return data; } -Map searchItemToJson(SearchItem entity) { +Map searchItemsToJson(SearchItems entity) { final Map data = new Map(); data['id'] = entity.id; data['node_id'] = entity.nodeId; data['name'] = entity.name; data['full_name'] = entity.fullName; data['private'] = entity.private; + data['owner'] = entity.owner?.toJson(); data['html_url'] = entity.htmlUrl; data['description'] = entity.description; data['fork'] = entity.fork; @@ -308,13 +335,127 @@ Map searchItemToJson(SearchItem entity) { data['has_wiki'] = entity.hasWiki; data['has_pages'] = entity.hasPages; data['forks_count'] = entity.forksCount; + data['mirror_url'] = entity.mirrorUrl; data['archived'] = entity.archived; data['disabled'] = entity.disabled; data['open_issues_count'] = entity.openIssuesCount; + data['license'] = entity.license?.toJson(); data['forks'] = entity.forks; data['open_issues'] = entity.openIssues; data['watchers'] = entity.watchers; data['default_branch'] = entity.defaultBranch; data['score'] = entity.score; return data; +} + +searchItemsOwnerFromJson(SearchItemsOwner data, Map json) { + if (json['login'] != null) { + data.login = json['login'].toString(); + } + if (json['id'] != null) { + data.id = json['id'] is String + ? int.tryParse(json['id']) + : json['id'].toInt(); + } + if (json['node_id'] != null) { + data.nodeId = json['node_id'].toString(); + } + if (json['avatar_url'] != null) { + data.avatarUrl = json['avatar_url'].toString(); + } + if (json['gravatar_id'] != null) { + data.gravatarId = json['gravatar_id'].toString(); + } + if (json['url'] != null) { + data.url = json['url'].toString(); + } + if (json['html_url'] != null) { + data.htmlUrl = json['html_url'].toString(); + } + if (json['followers_url'] != null) { + data.followersUrl = json['followers_url'].toString(); + } + if (json['following_url'] != null) { + data.followingUrl = json['following_url'].toString(); + } + if (json['gists_url'] != null) { + data.gistsUrl = json['gists_url'].toString(); + } + if (json['starred_url'] != null) { + data.starredUrl = json['starred_url'].toString(); + } + if (json['subscriptions_url'] != null) { + data.subscriptionsUrl = json['subscriptions_url'].toString(); + } + if (json['organizations_url'] != null) { + data.organizationsUrl = json['organizations_url'].toString(); + } + if (json['repos_url'] != null) { + data.reposUrl = json['repos_url'].toString(); + } + if (json['events_url'] != null) { + data.eventsUrl = json['events_url'].toString(); + } + if (json['received_events_url'] != null) { + data.receivedEventsUrl = json['received_events_url'].toString(); + } + if (json['type'] != null) { + data.type = json['type'].toString(); + } + if (json['site_admin'] != null) { + data.siteAdmin = json['site_admin']; + } + return data; +} + +Map searchItemsOwnerToJson(SearchItemsOwner entity) { + final Map data = new Map(); + data['login'] = entity.login; + data['id'] = entity.id; + data['node_id'] = entity.nodeId; + data['avatar_url'] = entity.avatarUrl; + data['gravatar_id'] = entity.gravatarId; + data['url'] = entity.url; + data['html_url'] = entity.htmlUrl; + data['followers_url'] = entity.followersUrl; + data['following_url'] = entity.followingUrl; + data['gists_url'] = entity.gistsUrl; + data['starred_url'] = entity.starredUrl; + data['subscriptions_url'] = entity.subscriptionsUrl; + data['organizations_url'] = entity.organizationsUrl; + data['repos_url'] = entity.reposUrl; + data['events_url'] = entity.eventsUrl; + data['received_events_url'] = entity.receivedEventsUrl; + data['type'] = entity.type; + data['site_admin'] = entity.siteAdmin; + return data; +} + +searchItemsLicenseFromJson(SearchItemsLicense data, Map json) { + if (json['key'] != null) { + data.key = json['key'].toString(); + } + if (json['name'] != null) { + data.name = json['name'].toString(); + } + if (json['spdx_id'] != null) { + data.spdxId = json['spdx_id'].toString(); + } + if (json['url'] != null) { + data.url = json['url'].toString(); + } + if (json['node_id'] != null) { + data.nodeId = json['node_id'].toString(); + } + return data; +} + +Map searchItemsLicenseToJson(SearchItemsLicense entity) { + final Map data = new Map(); + data['key'] = entity.key; + data['name'] = entity.name; + data['spdx_id'] = entity.spdxId; + data['url'] = entity.url; + data['node_id'] = entity.nodeId; + return data; } \ No newline at end of file diff --git a/lib/generated/json/user_entity_helper.dart b/lib/generated/json/user_entity_helper.dart index 560ecd871..f3ebc23a0 100644 --- a/lib/generated/json/user_entity_helper.dart +++ b/lib/generated/json/user_entity_helper.dart @@ -2,16 +2,18 @@ import 'package:flutter_deer/shop/models/user_entity.dart'; userEntityFromJson(UserEntity data, Map json) { if (json['avatar_url'] != null) { - data.avatarUrl = json['avatar_url']?.toString(); + data.avatarUrl = json['avatar_url'].toString(); } if (json['name'] != null) { - data.name = json['name']?.toString(); + data.name = json['name'].toString(); } if (json['id'] != null) { - data.id = json['id']?.toInt(); + data.id = json['id'] is String + ? int.tryParse(json['id']) + : json['id'].toInt(); } if (json['blog'] != null) { - data.blog = json['blog']?.toString(); + data.blog = json['blog'].toString(); } return data; } diff --git a/lib/goods/goods_router.dart b/lib/goods/goods_router.dart index 8ca722e3d..e88c87161 100644 --- a/lib/goods/goods_router.dart +++ b/lib/goods/goods_router.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:common_utils/common_utils.dart'; import 'package:fluro/fluro.dart'; import 'package:flutter_deer/goods/page/qr_code_scanner_page.dart'; diff --git a/lib/goods/models/goods_item_entity.dart b/lib/goods/models/goods_item_entity.dart index 92af51495..f1cae53e6 100644 --- a/lib/goods/models/goods_item_entity.dart +++ b/lib/goods/models/goods_item_entity.dart @@ -1,3 +1,4 @@ +// @dart=2.9 class GoodsItemEntity { GoodsItemEntity({this.icon, this.title, this.type}); diff --git a/lib/goods/page/goods_edit_page.dart b/lib/goods/page/goods_edit_page.dart index c52f655a2..c701e5388 100644 --- a/lib/goods/page/goods_edit_page.dart +++ b/lib/goods/page/goods_edit_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/goods/provider/goods_sort_provider.dart'; import 'package:flutter_deer/goods/widgets/goods_sort_bottom_sheet.dart'; diff --git a/lib/goods/page/goods_list_page.dart b/lib/goods/page/goods_list_page.dart index 90b9c9ac7..4fc357166 100644 --- a/lib/goods/page/goods_list_page.dart +++ b/lib/goods/page/goods_list_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:common_utils/common_utils.dart'; import 'package:flutter/material.dart'; diff --git a/lib/goods/page/goods_page.dart b/lib/goods/page/goods_page.dart index 4348d3715..0da1ce803 100644 --- a/lib/goods/page/goods_page.dart +++ b/lib/goods/page/goods_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/goods/goods_router.dart'; import 'package:flutter_deer/goods/page/goods_list_page.dart'; diff --git a/lib/goods/page/goods_search_page.dart b/lib/goods/page/goods_search_page.dart index 680010a84..9da98077d 100644 --- a/lib/goods/page/goods_search_page.dart +++ b/lib/goods/page/goods_search_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/util/toast_utils.dart'; diff --git a/lib/goods/page/goods_size_edit_page.dart b/lib/goods/page/goods_size_edit_page.dart index 795e1856b..2f17f7dd8 100644 --- a/lib/goods/page/goods_size_edit_page.dart +++ b/lib/goods/page/goods_size_edit_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; import 'package:flutter_deer/widgets/my_button.dart'; diff --git a/lib/goods/page/goods_size_page.dart b/lib/goods/page/goods_size_page.dart index 26dea7db8..b09a84dbb 100644 --- a/lib/goods/page/goods_size_page.dart +++ b/lib/goods/page/goods_size_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/goods/models/goods_size_model.dart'; import 'package:flutter_deer/goods/widgets/goods_size_dialog.dart'; diff --git a/lib/goods/page/qr_code_scanner_page.dart b/lib/goods/page/qr_code_scanner_page.dart index 35478fb68..24f8376d3 100644 --- a/lib/goods/page/qr_code_scanner_page.dart +++ b/lib/goods/page/qr_code_scanner_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'dart:io'; diff --git a/lib/goods/provider/goods_sort_provider.dart b/lib/goods/provider/goods_sort_provider.dart index 7c9f1960e..891a3e0f5 100644 --- a/lib/goods/provider/goods_sort_provider.dart +++ b/lib/goods/provider/goods_sort_provider.dart @@ -1,3 +1,4 @@ +// @dart=2.9 import 'dart:convert'; import 'package:flutter/material.dart'; diff --git a/lib/goods/widgets/goods_add_menu.dart b/lib/goods/widgets/goods_add_menu.dart index b6a6d2722..82249343e 100644 --- a/lib/goods/widgets/goods_add_menu.dart +++ b/lib/goods/widgets/goods_add_menu.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter_deer/routers/fluro_navigator.dart'; import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; diff --git a/lib/goods/widgets/goods_delete_bottom_sheet.dart b/lib/goods/widgets/goods_delete_bottom_sheet.dart index c5ec06052..68ad801f7 100644 --- a/lib/goods/widgets/goods_delete_bottom_sheet.dart +++ b/lib/goods/widgets/goods_delete_bottom_sheet.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; diff --git a/lib/goods/widgets/goods_item.dart b/lib/goods/widgets/goods_item.dart index 000dfa026..0c2ee79bc 100644 --- a/lib/goods/widgets/goods_item.dart +++ b/lib/goods/widgets/goods_item.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:common_utils/common_utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_deer/goods/models/goods_item_entity.dart'; diff --git a/lib/goods/widgets/goods_size_dialog.dart b/lib/goods/widgets/goods_size_dialog.dart index 534943fcc..d0c665f42 100644 --- a/lib/goods/widgets/goods_size_dialog.dart +++ b/lib/goods/widgets/goods_size_dialog.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; import 'package:flutter_deer/util/theme_utils.dart'; diff --git a/lib/goods/widgets/goods_sort_bottom_sheet.dart b/lib/goods/widgets/goods_sort_bottom_sheet.dart index d9184f61a..963fa1811 100644 --- a/lib/goods/widgets/goods_sort_bottom_sheet.dart +++ b/lib/goods/widgets/goods_sort_bottom_sheet.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/goods/provider/goods_sort_provider.dart'; import 'package:flutter_deer/res/resources.dart'; diff --git a/lib/goods/widgets/goods_sort_menu.dart b/lib/goods/widgets/goods_sort_menu.dart index 0ee3627ea..8a3a896a7 100644 --- a/lib/goods/widgets/goods_sort_menu.dart +++ b/lib/goods/widgets/goods_sort_menu.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; diff --git a/lib/goods/widgets/menu_reveal.dart b/lib/goods/widgets/menu_reveal.dart index 05148d275..2338a8b72 100644 --- a/lib/goods/widgets/menu_reveal.dart +++ b/lib/goods/widgets/menu_reveal.dart @@ -1,3 +1,4 @@ +// @dart=2.9 import 'dart:math'; import 'package:flutter/material.dart'; diff --git a/lib/home/home_page.dart b/lib/home/home_page.dart index bcc701b63..c9d2dc73d 100644 --- a/lib/home/home_page.dart +++ b/lib/home/home_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/goods/page/goods_page.dart'; import 'package:flutter_deer/home/provider/home_provider.dart'; diff --git a/lib/home/splash_page.dart b/lib/home/splash_page.dart index 79f89e019..0e98554b5 100644 --- a/lib/home/splash_page.dart +++ b/lib/home/splash_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'dart:async'; import 'package:flutter/material.dart'; diff --git a/lib/home/webview_page.dart b/lib/home/webview_page.dart index 18f996ea7..6f5e7ea20 100644 --- a/lib/home/webview_page.dart +++ b/lib/home/webview_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'dart:async'; import 'package:flutter/material.dart'; diff --git a/lib/login/login_router.dart b/lib/login/login_router.dart index 1da01b71f..31f8ac12f 100644 --- a/lib/login/login_router.dart +++ b/lib/login/login_router.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:fluro/fluro.dart'; import 'package:flutter_deer/routers/i_router.dart'; diff --git a/lib/login/page/login_page.dart b/lib/login/page/login_page.dart index 5d2d69285..a4a085370 100644 --- a/lib/login/page/login_page.dart +++ b/lib/login/page/login_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; diff --git a/lib/login/page/register_page.dart b/lib/login/page/register_page.dart index b8f6de9df..9849f24dc 100644 --- a/lib/login/page/register_page.dart +++ b/lib/login/page/register_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; diff --git a/lib/login/page/reset_password_page.dart b/lib/login/page/reset_password_page.dart index 6584acfa5..660462dbc 100644 --- a/lib/login/page/reset_password_page.dart +++ b/lib/login/page/reset_password_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_gen/gen_l10n/deer_localizations.dart'; diff --git a/lib/login/page/sms_login_page.dart b/lib/login/page/sms_login_page.dart index d5ec76296..3fe63a6e6 100644 --- a/lib/login/page/sms_login_page.dart +++ b/lib/login/page/sms_login_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'dart:ui'; import 'package:flutter/material.dart'; diff --git a/lib/login/page/update_password_page.dart b/lib/login/page/update_password_page.dart index 4923139ad..d3da5fd4d 100644 --- a/lib/login/page/update_password_page.dart +++ b/lib/login/page/update_password_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/util/change_notifier_manage.dart'; import 'package:flutter_deer/res/resources.dart'; diff --git a/lib/login/widgets/my_text_field.dart b/lib/login/widgets/my_text_field.dart index 6af3fa626..0c92bff94 100644 --- a/lib/login/widgets/my_text_field.dart +++ b/lib/login/widgets/my_text_field.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'dart:async'; import 'package:flutter/foundation.dart'; diff --git a/lib/mvp/base_page.dart b/lib/mvp/base_page.dart index 06946c3b0..77c8f0856 100644 --- a/lib/mvp/base_page.dart +++ b/lib/mvp/base_page.dart @@ -1,4 +1,3 @@ - import 'package:flutter/material.dart'; import 'package:flutter_deer/mvp/base_presenter.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; @@ -9,7 +8,7 @@ import 'mvps.dart'; mixin BasePageMixin on State implements IMvpView { - P presenter; + P? presenter; P createPresenter(); diff --git a/lib/mvp/base_page_presenter.dart b/lib/mvp/base_page_presenter.dart index cecc21ac8..0dec543a9 100644 --- a/lib/mvp/base_page_presenter.dart +++ b/lib/mvp/base_page_presenter.dart @@ -2,7 +2,6 @@ import 'dart:io'; import 'package:dio/dio.dart'; import 'package:flutter_deer/mvp/base_presenter.dart'; import 'package:flutter_deer/net/net.dart'; -import 'package:meta/meta.dart'; import 'mvps.dart'; @@ -12,7 +11,7 @@ class BasePagePresenter extends BasePresenter { _cancelToken = CancelToken(); } - CancelToken _cancelToken; + late CancelToken _cancelToken; @override void dispose() { @@ -24,15 +23,15 @@ class BasePagePresenter extends BasePresenter { /// 返回Future 适用于刷新,加载更多 Future requestNetwork(Method method, { - @required String url, + required String url, bool isShow = true, bool isClose = true, - NetSuccessCallback onSuccess, - NetErrorCallback onError, + NetSuccessCallback? onSuccess, + NetErrorCallback? onError, dynamic params, - Map queryParameters, - CancelToken cancelToken, - Options options, + Map? queryParameters, + CancelToken? cancelToken, + Options? options, }) { if (isShow) { view.showProgress(); @@ -46,9 +45,7 @@ class BasePagePresenter extends BasePresenter { if (isClose) { view.closeProgress(); } - if (onSuccess != null) { - onSuccess(data); - } + onSuccess?.call(data); }, onError: (code, msg) { _onError(code, msg, onError); @@ -57,15 +54,15 @@ class BasePagePresenter extends BasePresenter { } void asyncRequestNetwork(Method method, { - @required String url, + required String url, bool isShow = true, bool isClose = true, - NetSuccessCallback onSuccess, - NetErrorCallback onError, + NetSuccessCallback? onSuccess, + NetErrorCallback? onError, dynamic params, - Map queryParameters, - CancelToken cancelToken, - Options options, + Map? queryParameters, + CancelToken? cancelToken, + Options? options, }) { if (isShow) { view.showProgress(); @@ -79,9 +76,7 @@ class BasePagePresenter extends BasePresenter { if (isClose) { view.closeProgress(); } - if (onSuccess != null) { - onSuccess(data); - } + onSuccess?.call(data); }, onError: (code, msg) { _onError(code, msg, onError); @@ -102,7 +97,7 @@ class BasePagePresenter extends BasePresenter { url: HttpApi.upload, params: formData, onSuccess: (data) { - imgPath = data; + imgPath = data ?? ''; } ); } catch(e) { @@ -111,7 +106,7 @@ class BasePagePresenter extends BasePresenter { return imgPath; } - void _onError(int code, String msg, NetErrorCallback onError) { + void _onError(int code, String msg, NetErrorCallback? onError) { /// 异常时直接关闭加载圈,不受isClose影响 view.closeProgress(); if (code != ExceptionHandle.cancel_error) { diff --git a/lib/mvp/base_presenter.dart b/lib/mvp/base_presenter.dart index 80bdb1543..57c09261b 100644 --- a/lib/mvp/base_presenter.dart +++ b/lib/mvp/base_presenter.dart @@ -1,9 +1,8 @@ - import 'mvps.dart'; class BasePresenter extends IPresenter { - V view; + late V view; @override void deactivate() {} diff --git a/lib/mvp/power_presenter.dart b/lib/mvp/power_presenter.dart index 09813b4e1..82774684d 100644 --- a/lib/mvp/power_presenter.dart +++ b/lib/mvp/power_presenter.dart @@ -1,4 +1,3 @@ - import 'package:flutter_deer/mvp/base_page.dart'; import 'package:flutter_deer/mvp/base_page_presenter.dart'; import 'package:flutter_deer/mvp/base_presenter.dart'; @@ -10,7 +9,7 @@ class PowerPresenter extends BasePresenter { _state = state; } - BasePageMixin _state; + late BasePageMixin _state; List _presenters = []; void requestPresenter(List presenters) { diff --git a/lib/net/base_entity.dart b/lib/net/base_entity.dart index 961248c36..e5b843345 100644 --- a/lib/net/base_entity.dart +++ b/lib/net/base_entity.dart @@ -1,4 +1,3 @@ - import 'package:flutter_deer/common/common.dart'; import 'package:flutter_deer/generated/json/base/json_convert_content.dart'; @@ -10,13 +9,13 @@ class BaseEntity { code = json[Constant.code] as int; message = json[Constant.message] as String; if (json.containsKey(Constant.data)) { - data = _generateOBJ(json[Constant.data]); + data = _generateOBJ(json[Constant.data] as Object); } } - int code; - String message; - T data; + late int code; + late String message; + T? data; T _generateOBJ(Object json) { if (T.toString() == 'String') { diff --git a/lib/net/dio_utils.dart b/lib/net/dio_utils.dart index 62658634a..064dc69d4 100644 --- a/lib/net/dio_utils.dart +++ b/lib/net/dio_utils.dart @@ -1,4 +1,3 @@ - import 'dart:convert'; import 'package:dio/dio.dart'; @@ -12,16 +11,16 @@ import 'error_handle.dart'; int _connectTimeout = 15000; int _receiveTimeout = 15000; int _sendTimeout = 10000; -String _baseUrl; +String _baseUrl = ''; List _interceptors = []; /// 初始化Dio配置 void configDio({ - int connectTimeout, - int receiveTimeout, - int sendTimeout, - String baseUrl, - List interceptors, + int? connectTimeout, + int? receiveTimeout, + int? sendTimeout, + String? baseUrl, + List? interceptors, }) { _connectTimeout = connectTimeout ?? _connectTimeout; _receiveTimeout = receiveTimeout ?? _receiveTimeout; @@ -75,16 +74,16 @@ class DioUtils { static DioUtils get instance => DioUtils(); - static Dio _dio; + static late Dio _dio; Dio get dio => _dio; // 数据返回格式统一,统一处理异常 Future> _request(String method, String url, { - dynamic data, - Map queryParameters, - CancelToken cancelToken, - Options options, + Object? data, + Map? queryParameters, + CancelToken? cancelToken, + Options? options, }) async { final Response response = await _dio.request( url, @@ -108,19 +107,19 @@ class DioUtils { } } - Options _checkOptions(String method, Options options) { + Options _checkOptions(String method, Options? options) { options ??= Options(); options.method = method; return options; } Future requestNetwork(Method method, String url, { - NetSuccessCallback onSuccess, - NetErrorCallback onError, - dynamic params, - Map queryParameters, - CancelToken cancelToken, - Options options, + NetSuccessCallback? onSuccess, + NetErrorCallback? onError, + Object? params, + Map? queryParameters, + CancelToken? cancelToken, + Options? options, }) { return _request(method.value, url, data: params, @@ -129,9 +128,7 @@ class DioUtils { cancelToken: cancelToken, ).then((BaseEntity result) { if (result.code == 0) { - if (onSuccess != null) { - onSuccess(result.data); - } + onSuccess?.call(result.data); } else { _onError(result.code, result.message, onError); } @@ -144,12 +141,12 @@ class DioUtils { /// 统一处理(onSuccess返回T对象,onSuccessList返回 List) void asyncRequestNetwork(Method method, String url, { - NetSuccessCallback onSuccess, - NetErrorCallback onError, - dynamic params, - Map queryParameters, - CancelToken cancelToken, - Options options, + NetSuccessCallback? onSuccess, + NetErrorCallback? onError, + Object? params, + Map? queryParameters, + CancelToken? cancelToken, + Options? options, }) { Stream.fromFuture(_request(method.value, url, data: params, @@ -178,15 +175,13 @@ class DioUtils { } } - void _onError(int code, String msg, NetErrorCallback onError) { + void _onError(int code, String msg, NetErrorCallback? onError) { if (code == null) { code = ExceptionHandle.unknown_error; msg = '未知异常'; } Log.e('接口请求异常: code: $code, mag: $msg'); - if (onError != null) { - onError(code, msg); - } + onError?.call(code, msg); } } diff --git a/lib/net/error_handle.dart b/lib/net/error_handle.dart index 9aa847b28..2f3b92c04 100644 --- a/lib/net/error_handle.dart +++ b/lib/net/error_handle.dart @@ -1,5 +1,4 @@ import 'dart:io'; - import 'package:dio/dio.dart'; class ExceptionHandle { @@ -38,7 +37,7 @@ class ExceptionHandle { if (error.type.errorCode == 0) { return _handleException(error.error); } else { - return _errorMap[error.type.errorCode]; + return _errorMap[error.type.errorCode]!; } } else { return _handleException(error); @@ -56,7 +55,7 @@ class ExceptionHandle { if (error is FormatException) { errorCode = parse_error; } - return _errorMap[errorCode]; + return _errorMap[errorCode]!; } } diff --git a/lib/net/intercept.dart b/lib/net/intercept.dart index 409109ae6..d6aafe60b 100644 --- a/lib/net/intercept.dart +++ b/lib/net/intercept.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'dart:convert'; diff --git a/lib/order/iview/order_search_iview.dart b/lib/order/iview/order_search_iview.dart index 12ccddeda..a6b790ed6 100644 --- a/lib/order/iview/order_search_iview.dart +++ b/lib/order/iview/order_search_iview.dart @@ -1,10 +1,10 @@ - +// @dart=2.9 import 'package:flutter_deer/mvp/mvps.dart'; import 'package:flutter_deer/order/models/search_entity.dart'; import 'package:flutter_deer/provider/base_list_provider.dart'; abstract class OrderSearchIMvpView implements IMvpView { - BaseListProvider get provider; + BaseListProvider get provider; } diff --git a/lib/order/models/search_entity.dart b/lib/order/models/search_entity.dart index 9ac725b99..2fb635881 100644 --- a/lib/order/models/search_entity.dart +++ b/lib/order/models/search_entity.dart @@ -1,141 +1,190 @@ import 'package:flutter_deer/generated/json/base/json_convert_content.dart'; -import 'package:flutter_deer/generated/json/base/json_filed.dart'; +import 'package:flutter_deer/generated/json/base/json_field.dart'; class SearchEntity with JsonConvert { @JSONField(name: 'total_count') - int totalCount; + int? totalCount; @JSONField(name: 'incomplete_results') - bool incompleteResults; - List items; + bool? incompleteResults; + List? items; } -class SearchItem with JsonConvert { - int id; +class SearchItems with JsonConvert { + int? id; @JSONField(name: 'node_id') - String nodeId; - String name; + String? nodeId; + String? name; @JSONField(name: 'full_name') - String fullName; - bool private; + String? fullName; + bool? private; + SearchItemsOwner? owner; @JSONField(name: 'html_url') - String htmlUrl; - String description; - bool fork; - String url; + String? htmlUrl; + String? description; + bool? fork; + String? url; @JSONField(name: 'forks_url') - String forksUrl; + String? forksUrl; @JSONField(name: 'keys_url') - String keysUrl; + String? keysUrl; @JSONField(name: 'collaborators_url') - String collaboratorsUrl; + String? collaboratorsUrl; @JSONField(name: 'teams_url') - String teamsUrl; + String? teamsUrl; @JSONField(name: 'hooks_url') - String hooksUrl; + String? hooksUrl; @JSONField(name: 'issue_events_url') - String issueEventsUrl; + String? issueEventsUrl; @JSONField(name: 'events_url') - String eventsUrl; + String? eventsUrl; @JSONField(name: 'assignees_url') - String assigneesUrl; + String? assigneesUrl; @JSONField(name: 'branches_url') - String branchesUrl; + String? branchesUrl; @JSONField(name: 'tags_url') - String tagsUrl; + String? tagsUrl; @JSONField(name: 'blobs_url') - String blobsUrl; + String? blobsUrl; @JSONField(name: 'git_tags_url') - String gitTagsUrl; + String? gitTagsUrl; @JSONField(name: 'git_refs_url') - String gitRefsUrl; + String? gitRefsUrl; @JSONField(name: 'trees_url') - String treesUrl; + String? treesUrl; @JSONField(name: 'statuses_url') - String statusesUrl; + String? statusesUrl; @JSONField(name: 'languages_url') - String languagesUrl; + String? languagesUrl; @JSONField(name: 'stargazers_url') - String stargazersUrl; + String? stargazersUrl; @JSONField(name: 'contributors_url') - String contributorsUrl; + String? contributorsUrl; @JSONField(name: 'subscribers_url') - String subscribersUrl; + String? subscribersUrl; @JSONField(name: 'subscription_url') - String subscriptionUrl; + String? subscriptionUrl; @JSONField(name: 'commits_url') - String commitsUrl; + String? commitsUrl; @JSONField(name: 'git_commits_url') - String gitCommitsUrl; + String? gitCommitsUrl; @JSONField(name: 'comments_url') - String commentsUrl; + String? commentsUrl; @JSONField(name: 'issue_comment_url') - String issueCommentUrl; + String? issueCommentUrl; @JSONField(name: 'contents_url') - String contentsUrl; + String? contentsUrl; @JSONField(name: 'compare_url') - String compareUrl; + String? compareUrl; @JSONField(name: 'merges_url') - String mergesUrl; + String? mergesUrl; @JSONField(name: 'archive_url') - String archiveUrl; + String? archiveUrl; @JSONField(name: 'downloads_url') - String downloadsUrl; + String? downloadsUrl; @JSONField(name: 'issues_url') - String issuesUrl; + String? issuesUrl; @JSONField(name: 'pulls_url') - String pullsUrl; + String? pullsUrl; @JSONField(name: 'milestones_url') - String milestonesUrl; + String? milestonesUrl; @JSONField(name: 'notifications_url') - String notificationsUrl; + String? notificationsUrl; @JSONField(name: 'labels_url') - String labelsUrl; + String? labelsUrl; @JSONField(name: 'releases_url') - String releasesUrl; + String? releasesUrl; @JSONField(name: 'deployments_url') - String deploymentsUrl; + String? deploymentsUrl; @JSONField(name: 'created_at') - String createdAt; + String? createdAt; @JSONField(name: 'updated_at') - String updatedAt; + String? updatedAt; @JSONField(name: 'pushed_at') - String pushedAt; + String? pushedAt; @JSONField(name: 'git_url') - String gitUrl; + String? gitUrl; @JSONField(name: 'ssh_url') - String sshUrl; + String? sshUrl; @JSONField(name: 'clone_url') - String cloneUrl; + String? cloneUrl; @JSONField(name: 'svn_url') - String svnUrl; - String homepage; - int size; + String? svnUrl; + String? homepage; + int? size; @JSONField(name: 'stargazers_count') - int stargazersCount; + int? stargazersCount; @JSONField(name: 'watchers_count') - int watchersCount; - String language; + int? watchersCount; + String? language; @JSONField(name: 'has_issues') - bool hasIssues; + bool? hasIssues; @JSONField(name: 'has_projects') - bool hasProjects; + bool? hasProjects; @JSONField(name: 'has_downloads') - bool hasDownloads; + bool? hasDownloads; @JSONField(name: 'has_wiki') - bool hasWiki; + bool? hasWiki; @JSONField(name: 'has_pages') - bool hasPages; + bool? hasPages; @JSONField(name: 'forks_count') - int forksCount; - bool archived; - bool disabled; + int? forksCount; + @JSONField(name: 'mirror_url') + dynamic? mirrorUrl; + bool? archived; + bool? disabled; @JSONField(name: 'open_issues_count') - int openIssuesCount; - int forks; + int? openIssuesCount; + SearchItemsLicense? license; + int? forks; @JSONField(name: 'open_issues') - int openIssues; - int watchers; + int? openIssues; + int? watchers; @JSONField(name: 'default_branch') - String defaultBranch; - double score; + String? defaultBranch; + double? score; +} + +class SearchItemsOwner with JsonConvert { + String? login; + int? id; + @JSONField(name: 'node_id') + String? nodeId; + @JSONField(name: 'avatar_url') + String? avatarUrl; + @JSONField(name: 'gravatar_id') + String? gravatarId; + String? url; + @JSONField(name: 'html_url') + String? htmlUrl; + @JSONField(name: 'followers_url') + String? followersUrl; + @JSONField(name: 'following_url') + String? followingUrl; + @JSONField(name: 'gists_url') + String? gistsUrl; + @JSONField(name: 'starred_url') + String? starredUrl; + @JSONField(name: 'subscriptions_url') + String? subscriptionsUrl; + @JSONField(name: 'organizations_url') + String? organizationsUrl; + @JSONField(name: 'repos_url') + String? reposUrl; + @JSONField(name: 'events_url') + String? eventsUrl; + @JSONField(name: 'received_events_url') + String? receivedEventsUrl; + String? type; + @JSONField(name: 'site_admin') + bool? siteAdmin; +} + +class SearchItemsLicense with JsonConvert { + String? key; + String? name; + @JSONField(name: 'spdx_id') + String? spdxId; + String? url; + @JSONField(name: 'node_id') + String? nodeId; } diff --git a/lib/order/order_router.dart b/lib/order/order_router.dart index f162c5c75..cc381eda3 100644 --- a/lib/order/order_router.dart +++ b/lib/order/order_router.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:fluro/fluro.dart'; import 'package:flutter_deer/routers/i_router.dart'; diff --git a/lib/order/page/order_info_page.dart b/lib/order/page/order_info_page.dart index db2079ccf..56638b57f 100644 --- a/lib/order/page/order_info_page.dart +++ b/lib/order/page/order_info_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; diff --git a/lib/order/page/order_list_page.dart b/lib/order/page/order_list_page.dart index 8f49fc008..0d686da2a 100644 --- a/lib/order/page/order_list_page.dart +++ b/lib/order/page/order_list_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/order/provider/order_page_provider.dart'; import 'package:flutter_deer/order/widgets/order_item.dart'; diff --git a/lib/order/page/order_page.dart b/lib/order/page/order_page.dart index 3692342f9..ed2b9d62b 100644 --- a/lib/order/page/order_page.dart +++ b/lib/order/page/order_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/order/page/order_list_page.dart'; diff --git a/lib/order/page/order_search_page.dart b/lib/order/page/order_search_page.dart index 775aa9e92..f434757d2 100644 --- a/lib/order/page/order_search_page.dart +++ b/lib/order/page/order_search_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/mvp/base_page.dart'; @@ -27,7 +27,7 @@ class OrderSearchPage extends StatefulWidget { class _OrderSearchPageState extends State with BasePageMixin implements OrderSearchIMvpView, ShopIMvpView { @override - BaseListProvider provider = BaseListProvider(); + BaseListProvider provider = BaseListProvider(); String _keyword; int _page = 1; @@ -41,7 +41,7 @@ class _OrderSearchPageState extends State with BasePageMixin>( + return ChangeNotifierProvider>( create: (_) => provider, child: Scaffold( appBar: SearchBar( @@ -57,7 +57,7 @@ class _OrderSearchPageState extends State with BasePageMixin>( + body: Consumer>( builder: (_, provider, __) { return DeerListView( key: const Key('order_search_list'), diff --git a/lib/order/page/order_track_page.dart b/lib/order/page/order_track_page.dart index 37f655544..11dfba7bc 100644 --- a/lib/order/page/order_track_page.dart +++ b/lib/order/page/order_track_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; diff --git a/lib/order/presenter/order_search_presenter.dart b/lib/order/presenter/order_search_presenter.dart index 436438a90..888577278 100644 --- a/lib/order/presenter/order_search_presenter.dart +++ b/lib/order/presenter/order_search_presenter.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter_deer/mvp/base_page_presenter.dart'; import 'package:flutter_deer/net/net.dart'; import 'package:flutter_deer/order/models/search_entity.dart'; diff --git a/lib/order/widgets/order_item.dart b/lib/order/widgets/order_item.dart index 08129494b..349d342b5 100644 --- a/lib/order/widgets/order_item.dart +++ b/lib/order/widgets/order_item.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:common_utils/common_utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_deer/order/widgets/pay_type_dialog.dart'; diff --git a/lib/order/widgets/order_tag_item.dart b/lib/order/widgets/order_tag_item.dart index 4887a6ea7..1e7a336c5 100644 --- a/lib/order/widgets/order_tag_item.dart +++ b/lib/order/widgets/order_tag_item.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/util/theme_utils.dart'; diff --git a/lib/order/widgets/pay_type_dialog.dart b/lib/order/widgets/pay_type_dialog.dart index 9a718c2ef..74b55e214 100644 --- a/lib/order/widgets/pay_type_dialog.dart +++ b/lib/order/widgets/pay_type_dialog.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; diff --git a/lib/provider/base_list_provider.dart b/lib/provider/base_list_provider.dart index 8e7c4d9a6..25fcdeabd 100644 --- a/lib/provider/base_list_provider.dart +++ b/lib/provider/base_list_provider.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/widgets/state_layout.dart'; diff --git a/lib/provider/locale_provider.dart b/lib/provider/locale_provider.dart index c7617430e..19adc90c9 100644 --- a/lib/provider/locale_provider.dart +++ b/lib/provider/locale_provider.dart @@ -1,3 +1,4 @@ +// @dart=2.9 import 'dart:ui'; import 'package:sp_util/sp_util.dart'; diff --git a/lib/provider/theme_provider.dart b/lib/provider/theme_provider.dart index 710a0fe1b..41fa071f3 100644 --- a/lib/provider/theme_provider.dart +++ b/lib/provider/theme_provider.dart @@ -1,3 +1,4 @@ +// @dart=2.9 import 'dart:ui'; import 'package:flutter_deer/routers/web_page_transitions.dart'; diff --git a/lib/routers/fluro_navigator.dart b/lib/routers/fluro_navigator.dart index 34b3f6b23..5e4cb51e7 100644 --- a/lib/routers/fluro_navigator.dart +++ b/lib/routers/fluro_navigator.dart @@ -15,7 +15,7 @@ class NavigatorUtils { static void pushResult(BuildContext context, String path, Function(Object) function, {bool replace = false, bool clearStack = false}) { unfocus(); - Routes.router.navigateTo(context, path, replace: replace, clearStack: clearStack, transition: TransitionType.native).then((Object result) { + Routes.router.navigateTo(context, path, replace: replace, clearStack: clearStack, transition: TransitionType.native).then((Object? result) { // 页面返回result为null if (result == null) { return; diff --git a/lib/routers/not_found_page.dart b/lib/routers/not_found_page.dart index ef58c9ee9..58a587908 100644 --- a/lib/routers/not_found_page.dart +++ b/lib/routers/not_found_page.dart @@ -1,3 +1,4 @@ +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/widgets/my_app_bar.dart'; import 'package:flutter_deer/widgets/state_layout.dart'; diff --git a/lib/routers/routers.dart b/lib/routers/routers.dart index 56ea3a82a..6aeb883f2 100644 --- a/lib/routers/routers.dart +++ b/lib/routers/routers.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:fluro/fluro.dart'; import 'package:flutter/material.dart'; import 'package:flutter_deer/account/account_router.dart'; diff --git a/lib/setting/page/about_page.dart b/lib/setting/page/about_page.dart index 2f77e038f..8803682f0 100644 --- a/lib/setting/page/about_page.dart +++ b/lib/setting/page/about_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'dart:async'; import 'dart:math'; diff --git a/lib/setting/page/account_manager_page.dart b/lib/setting/page/account_manager_page.dart index 3f2bd0aea..513d7a4f3 100644 --- a/lib/setting/page/account_manager_page.dart +++ b/lib/setting/page/account_manager_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/login/login_router.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; diff --git a/lib/setting/page/locale_page.dart b/lib/setting/page/locale_page.dart index 768a4cda4..840954132 100644 --- a/lib/setting/page/locale_page.dart +++ b/lib/setting/page/locale_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/common/common.dart'; import 'package:flutter_deer/provider/locale_provider.dart'; diff --git a/lib/setting/page/setting_page.dart b/lib/setting/page/setting_page.dart index adc1a64ff..313cfeaaa 100644 --- a/lib/setting/page/setting_page.dart +++ b/lib/setting/page/setting_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter_deer/demo/demo_page.dart'; import 'package:flutter_deer/util/device_utils.dart'; import 'package:sp_util/sp_util.dart'; diff --git a/lib/setting/page/theme_page.dart b/lib/setting/page/theme_page.dart index a8544f385..d9ba30828 100644 --- a/lib/setting/page/theme_page.dart +++ b/lib/setting/page/theme_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/common/common.dart'; import 'package:sp_util/sp_util.dart'; diff --git a/lib/setting/setting_router.dart b/lib/setting/setting_router.dart index 0f5b56bea..7e0c105a0 100644 --- a/lib/setting/setting_router.dart +++ b/lib/setting/setting_router.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:fluro/fluro.dart'; import 'package:flutter_deer/routers/i_router.dart'; import 'package:flutter_deer/setting/page/locale_page.dart'; diff --git a/lib/setting/widgets/exit_dialog.dart b/lib/setting/widgets/exit_dialog.dart index 04132d602..3d65de192 100644 --- a/lib/setting/widgets/exit_dialog.dart +++ b/lib/setting/widgets/exit_dialog.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/login/login_router.dart'; import 'package:flutter_deer/res/styles.dart'; diff --git a/lib/setting/widgets/update_dialog.dart b/lib/setting/widgets/update_dialog.dart index 370239479..e5c51e4ae 100644 --- a/lib/setting/widgets/update_dialog.dart +++ b/lib/setting/widgets/update_dialog.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'dart:io'; import 'package:dio/dio.dart'; diff --git a/lib/shop/iview/shop_iview.dart b/lib/shop/iview/shop_iview.dart index f497b22df..ea5354a78 100644 --- a/lib/shop/iview/shop_iview.dart +++ b/lib/shop/iview/shop_iview.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter_deer/mvp/mvps.dart'; import 'package:flutter_deer/shop/models/user_entity.dart'; diff --git a/lib/shop/models/user_entity.dart b/lib/shop/models/user_entity.dart index 7c746043a..647ff72ae 100644 --- a/lib/shop/models/user_entity.dart +++ b/lib/shop/models/user_entity.dart @@ -1,10 +1,10 @@ import 'package:flutter_deer/generated/json/base/json_convert_content.dart'; -import 'package:flutter_deer/generated/json/base/json_filed.dart'; +import 'package:flutter_deer/generated/json/base/json_field.dart'; class UserEntity with JsonConvert { @JSONField(name: 'avatar_url') - String avatarUrl; - String name; - int id; - String blog; + String? avatarUrl; + String? name; + int? id; + String? blog; } diff --git a/lib/shop/page/freight_config_page.dart b/lib/shop/page/freight_config_page.dart index b8f102f85..d7d6b0277 100644 --- a/lib/shop/page/freight_config_page.dart +++ b/lib/shop/page/freight_config_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; diff --git a/lib/shop/page/input_text_page.dart b/lib/shop/page/input_text_page.dart index 18dab97b6..7c9c03ea0 100644 --- a/lib/shop/page/input_text_page.dart +++ b/lib/shop/page/input_text_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; diff --git a/lib/shop/page/message_page.dart b/lib/shop/page/message_page.dart index 461eaed42..9328a6a4f 100644 --- a/lib/shop/page/message_page.dart +++ b/lib/shop/page/message_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; diff --git a/lib/shop/page/select_address_page.dart b/lib/shop/page/select_address_page.dart index 58a7176a9..0a6cae804 100644 --- a/lib/shop/page/select_address_page.dart +++ b/lib/shop/page/select_address_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_2d_amap/flutter_2d_amap.dart'; diff --git a/lib/shop/page/shop_page.dart b/lib/shop/page/shop_page.dart index c7aa8fac9..e746461d4 100644 --- a/lib/shop/page/shop_page.dart +++ b/lib/shop/page/shop_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/account/account_router.dart'; import 'package:flutter_deer/mvp/base_page.dart'; diff --git a/lib/shop/page/shop_setting_page.dart b/lib/shop/page/shop_setting_page.dart index ba36c34d0..d6153b1a6 100644 --- a/lib/shop/page/shop_setting_page.dart +++ b/lib/shop/page/shop_setting_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_2d_amap/flutter_2d_amap.dart'; diff --git a/lib/shop/presenter/shop_presenter.dart b/lib/shop/presenter/shop_presenter.dart index 174ffe989..2bb93243d 100644 --- a/lib/shop/presenter/shop_presenter.dart +++ b/lib/shop/presenter/shop_presenter.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/account/models/city_entity.dart'; import 'package:flutter_deer/mvp/base_page_presenter.dart'; diff --git a/lib/shop/provider/user_provider.dart b/lib/shop/provider/user_provider.dart index 76b615569..08a882657 100644 --- a/lib/shop/provider/user_provider.dart +++ b/lib/shop/provider/user_provider.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/shop/models/user_entity.dart'; diff --git a/lib/shop/shop_router.dart b/lib/shop/shop_router.dart index da55a1c98..013402645 100644 --- a/lib/shop/shop_router.dart +++ b/lib/shop/shop_router.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:fluro/fluro.dart'; import 'package:flutter_deer/routers/i_router.dart'; diff --git a/lib/shop/widgets/pay_type_dialog.dart b/lib/shop/widgets/pay_type_dialog.dart index 9d6f32cb4..86f4d7a44 100644 --- a/lib/shop/widgets/pay_type_dialog.dart +++ b/lib/shop/widgets/pay_type_dialog.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; diff --git a/lib/shop/widgets/price_input_dialog.dart b/lib/shop/widgets/price_input_dialog.dart index 0f9e3fa43..78d854d06 100644 --- a/lib/shop/widgets/price_input_dialog.dart +++ b/lib/shop/widgets/price_input_dialog.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; diff --git a/lib/shop/widgets/range_price_input_dialog.dart b/lib/shop/widgets/range_price_input_dialog.dart index a657aa3fe..ecae0c3e3 100644 --- a/lib/shop/widgets/range_price_input_dialog.dart +++ b/lib/shop/widgets/range_price_input_dialog.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; diff --git a/lib/shop/widgets/send_type_dialog.dart b/lib/shop/widgets/send_type_dialog.dart index d572443e0..dae39f34a 100644 --- a/lib/shop/widgets/send_type_dialog.dart +++ b/lib/shop/widgets/send_type_dialog.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; diff --git a/lib/statistics/page/goods_statistics_page.dart b/lib/statistics/page/goods_statistics_page.dart index 069da587d..afeaa3458 100644 --- a/lib/statistics/page/goods_statistics_page.dart +++ b/lib/statistics/page/goods_statistics_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'dart:math'; import 'package:flutter/material.dart'; diff --git a/lib/statistics/page/order_statistics_page.dart b/lib/statistics/page/order_statistics_page.dart index 1fcbed101..c154efb28 100644 --- a/lib/statistics/page/order_statistics_page.dart +++ b/lib/statistics/page/order_statistics_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'dart:math'; import 'package:common_utils/common_utils.dart'; diff --git a/lib/statistics/page/statistics_page.dart b/lib/statistics/page/statistics_page.dart index 96f1fc870..56c31abfc 100644 --- a/lib/statistics/page/statistics_page.dart +++ b/lib/statistics/page/statistics_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/order/page/order_page.dart'; import 'package:flutter_deer/res/resources.dart'; diff --git a/lib/statistics/statistics_router.dart b/lib/statistics/statistics_router.dart index 3b2266172..2d6643791 100644 --- a/lib/statistics/statistics_router.dart +++ b/lib/statistics/statistics_router.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:fluro/fluro.dart'; import 'package:flutter_deer/routers/i_router.dart'; diff --git a/lib/statistics/widgets/selected_date.dart b/lib/statistics/widgets/selected_date.dart index d9ea4d018..09cee9bf9 100644 --- a/lib/statistics/widgets/selected_date.dart +++ b/lib/statistics/widgets/selected_date.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/util/theme_utils.dart'; diff --git a/lib/store/page/store_audit_page.dart b/lib/store/page/store_audit_page.dart index 5dd5d5e72..f008e6224 100644 --- a/lib/store/page/store_audit_page.dart +++ b/lib/store/page/store_audit_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_2d_amap/flutter_2d_amap.dart'; diff --git a/lib/store/page/store_audit_result_page.dart b/lib/store/page/store_audit_result_page.dart index da1774784..b965beb0d 100644 --- a/lib/store/page/store_audit_result_page.dart +++ b/lib/store/page/store_audit_result_page.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; diff --git a/lib/store/store_router.dart b/lib/store/store_router.dart index 84b3f3959..796de0113 100644 --- a/lib/store/store_router.dart +++ b/lib/store/store_router.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:fluro/fluro.dart'; import 'package:flutter_deer/routers/i_router.dart'; diff --git a/lib/util/app_navigator.dart b/lib/util/app_navigator.dart index 9b46668f0..9fc37d384 100644 --- a/lib/util/app_navigator.dart +++ b/lib/util/app_navigator.dart @@ -1,3 +1,4 @@ +// @dart=2.9 import 'package:flutter/material.dart'; /// Navigator工具类 diff --git a/lib/util/change_notifier_manage.dart b/lib/util/change_notifier_manage.dart index 3255de26b..4e01d0653 100644 --- a/lib/util/change_notifier_manage.dart +++ b/lib/util/change_notifier_manage.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/foundation.dart'; import 'package:flutter/widgets.dart'; diff --git a/lib/util/device_utils.dart b/lib/util/device_utils.dart index 9898f30a6..2deaf01ec 100644 --- a/lib/util/device_utils.dart +++ b/lib/util/device_utils.dart @@ -1,4 +1,3 @@ - import 'dart:io'; import 'package:device_info/device_info.dart'; import 'package:flutter/foundation.dart'; @@ -16,7 +15,7 @@ class Device { static bool get isFuchsia => !isWeb && Platform.isFuchsia; static bool get isIOS => !isWeb && Platform.isIOS; - static AndroidDeviceInfo _androidInfo; + static late AndroidDeviceInfo _androidInfo; static Future initDeviceInfo() async { if (isAndroid) { diff --git a/lib/util/handle_error_utils.dart b/lib/util/handle_error_utils.dart index 5fa15afa4..1ef29e86c 100644 --- a/lib/util/handle_error_utils.dart +++ b/lib/util/handle_error_utils.dart @@ -1,3 +1,4 @@ +// @dart=2.9 import 'dart:async'; import 'package:flutter/widgets.dart'; diff --git a/lib/util/input_formatter/fix_ios_input_formatter.dart b/lib/util/input_formatter/fix_ios_input_formatter.dart index ee16e18a3..5bdbf0d88 100644 --- a/lib/util/input_formatter/fix_ios_input_formatter.dart +++ b/lib/util/input_formatter/fix_ios_input_formatter.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'dart:io'; import 'package:flutter/services.dart'; diff --git a/lib/util/input_formatter/number_text_input_formatter.dart b/lib/util/input_formatter/number_text_input_formatter.dart index 43466b6f0..87b203f97 100644 --- a/lib/util/input_formatter/number_text_input_formatter.dart +++ b/lib/util/input_formatter/number_text_input_formatter.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/services.dart'; /// 数字、小数格式化(默认两位小数) diff --git a/lib/util/other_utils.dart b/lib/util/other_utils.dart index f4ee93d2b..5899ef4cd 100644 --- a/lib/util/other_utils.dart +++ b/lib/util/other_utils.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'dart:ui'; import 'package:common_utils/common_utils.dart'; diff --git a/lib/util/theme_utils.dart b/lib/util/theme_utils.dart index e9687bdb0..0416c6f72 100644 --- a/lib/util/theme_utils.dart +++ b/lib/util/theme_utils.dart @@ -12,11 +12,11 @@ class ThemeUtils { return Theme.of(context).brightness == Brightness.dark; } - static Color getDarkColor(BuildContext context, Color darkColor) { + static Color? getDarkColor(BuildContext context, Color darkColor) { return isDark(context) ? darkColor : null; } - static Color getIconColor(BuildContext context) { + static Color? getIconColor(BuildContext context) { return isDark(context) ? Colours.dark_text : null; } @@ -28,11 +28,11 @@ class ThemeUtils { return isDark(context) ? Colours.dark_bg_gray_ : Colours.bg_gray; } - static Color getKeyboardActionsColor(BuildContext context) { + static Color? getKeyboardActionsColor(BuildContext context) { return isDark(context) ? Colours.dark_bg_color : Colors.grey[200]; } - static StreamSubscription _subscription; + static StreamSubscription? _subscription; /// 设置NavigationBar样式,使得导航栏颜色与深色模式的设置相符。 static void setSystemNavigationBar(ThemeMode mode) { @@ -49,7 +49,7 @@ class ThemeUtils { /// 设置StatusBar、NavigationBar样式。(仅针对安卓) /// 本项目在android MainActivity中已设置,不需要覆盖设置。 - static void setSystemBarStyle({bool isDark}) { + static void setSystemBarStyle({bool? isDark}) { if (Device.isAndroid) { final bool _isDark = isDark ?? window.platformBrightness == Brightness.dark; diff --git a/lib/widgets/base_dialog.dart b/lib/widgets/base_dialog.dart index 321ba0cc3..65183df1e 100644 --- a/lib/widgets/base_dialog.dart +++ b/lib/widgets/base_dialog.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; diff --git a/lib/widgets/bezier_chart/bezier_chart.dart b/lib/widgets/bezier_chart/bezier_chart.dart index a45335263..f298f7cc9 100644 --- a/lib/widgets/bezier_chart/bezier_chart.dart +++ b/lib/widgets/bezier_chart/bezier_chart.dart @@ -1,3 +1,4 @@ +// @dart=2.9 library bezier_chart; export 'bezier_chart_config.dart'; diff --git a/lib/widgets/bezier_chart/bezier_chart_config.dart b/lib/widgets/bezier_chart/bezier_chart_config.dart index b0beea0e9..79d0b41d4 100644 --- a/lib/widgets/bezier_chart/bezier_chart_config.dart +++ b/lib/widgets/bezier_chart/bezier_chart_config.dart @@ -1,3 +1,4 @@ +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; diff --git a/lib/widgets/bezier_chart/bezier_chart_widget.dart b/lib/widgets/bezier_chart/bezier_chart_widget.dart index a4dc304f2..fb781e8c3 100644 --- a/lib/widgets/bezier_chart/bezier_chart_widget.dart +++ b/lib/widgets/bezier_chart/bezier_chart_widget.dart @@ -1,3 +1,4 @@ +// @dart=2.9 import 'dart:math'; import 'dart:ui'; import 'package:flutter/foundation.dart'; diff --git a/lib/widgets/bezier_chart/bezier_line.dart b/lib/widgets/bezier_chart/bezier_line.dart index 715e0a285..f64b0b4d0 100644 --- a/lib/widgets/bezier_chart/bezier_line.dart +++ b/lib/widgets/bezier_chart/bezier_line.dart @@ -1,3 +1,4 @@ +// @dart=2.9 import 'package:flutter/material.dart'; typedef MissingValueBuilder = double Function(DateTime value); diff --git a/lib/widgets/bezier_chart/my_single_child_scroll_view.dart b/lib/widgets/bezier_chart/my_single_child_scroll_view.dart index 0ddf68fbe..e20216175 100644 --- a/lib/widgets/bezier_chart/my_single_child_scroll_view.dart +++ b/lib/widgets/bezier_chart/my_single_child_scroll_view.dart @@ -1,3 +1,4 @@ +// @dart=2.9 import 'dart:math' as math; import 'package:flutter/widgets.dart'; diff --git a/lib/widgets/click_item.dart b/lib/widgets/click_item.dart index 89969ee2f..1c3e28ecf 100644 --- a/lib/widgets/click_item.dart +++ b/lib/widgets/click_item.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; diff --git a/lib/widgets/double_tap_back_exit_app.dart b/lib/widgets/double_tap_back_exit_app.dart index 35c7fc223..7a94324cd 100644 --- a/lib/widgets/double_tap_back_exit_app.dart +++ b/lib/widgets/double_tap_back_exit_app.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_deer/util/toast_utils.dart'; diff --git a/lib/widgets/load_image.dart b/lib/widgets/load_image.dart index 055c6f790..bbf6cc062 100644 --- a/lib/widgets/load_image.dart +++ b/lib/widgets/load_image.dart @@ -1,4 +1,3 @@ - import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; import 'package:flutter_deer/util/image_utils.dart'; @@ -7,7 +6,7 @@ import 'package:flutter_deer/util/image_utils.dart'; class LoadImage extends StatelessWidget { const LoadImage(this.image, { - Key key, + Key? key, this.width, this.height, this.fit = BoxFit.cover, @@ -19,13 +18,13 @@ class LoadImage extends StatelessWidget { super(key: key); final String image; - final double width; - final double height; + final double? width; + final double? height; final BoxFit fit; final ImageFormat format; final String holderImg; - final int cacheWidth; - final int cacheHeight; + final int? cacheWidth; + final int? cacheHeight; @override Widget build(BuildContext context) { @@ -59,7 +58,7 @@ class LoadImage extends StatelessWidget { class LoadAssetImage extends StatelessWidget { const LoadAssetImage(this.image, { - Key key, + Key? key, this.width, this.height, this.cacheWidth, @@ -70,13 +69,13 @@ class LoadAssetImage extends StatelessWidget { }): super(key: key); final String image; - final double width; - final double height; - final int cacheWidth; - final int cacheHeight; - final BoxFit fit; + final double? width; + final double? height; + final int? cacheWidth; + final int? cacheHeight; + final BoxFit? fit; final ImageFormat format; - final Color color; + final Color? color; @override Widget build(BuildContext context) { diff --git a/lib/widgets/my_app_bar.dart b/lib/widgets/my_app_bar.dart index 9bd380668..b5b664eb0 100644 --- a/lib/widgets/my_app_bar.dart +++ b/lib/widgets/my_app_bar.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_deer/res/resources.dart'; diff --git a/lib/widgets/my_button.dart b/lib/widgets/my_button.dart index 2fb8baea2..e77cf07f1 100644 --- a/lib/widgets/my_button.dart +++ b/lib/widgets/my_button.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/util/theme_utils.dart'; diff --git a/lib/widgets/my_card.dart b/lib/widgets/my_card.dart index 6d3eb222b..73dea0c10 100644 --- a/lib/widgets/my_card.dart +++ b/lib/widgets/my_card.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/res/colors.dart'; import 'package:flutter_deer/util/theme_utils.dart'; diff --git a/lib/widgets/my_flexible_space_bar.dart b/lib/widgets/my_flexible_space_bar.dart index 5853a2c1e..babde359b 100644 --- a/lib/widgets/my_flexible_space_bar.dart +++ b/lib/widgets/my_flexible_space_bar.dart @@ -1,7 +1,7 @@ // Copyright 2016 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. - +// @dart=2.9 import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; diff --git a/lib/widgets/my_refresh_list.dart b/lib/widgets/my_refresh_list.dart index 907f0d4a7..12bc417ac 100644 --- a/lib/widgets/my_refresh_list.dart +++ b/lib/widgets/my_refresh_list.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; diff --git a/lib/widgets/my_scroll_view.dart b/lib/widgets/my_scroll_view.dart index a559447bd..448955a46 100644 --- a/lib/widgets/my_scroll_view.dart +++ b/lib/widgets/my_scroll_view.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; diff --git a/lib/widgets/pie_chart/pie_chart.dart b/lib/widgets/pie_chart/pie_chart.dart index 338601e14..6e85ab39e 100644 --- a/lib/widgets/pie_chart/pie_chart.dart +++ b/lib/widgets/pie_chart/pie_chart.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'dart:math' as math; import 'package:flutter/material.dart'; diff --git a/lib/widgets/pie_chart/pie_data.dart b/lib/widgets/pie_chart/pie_data.dart index 2f52fc74b..e87f4b925 100644 --- a/lib/widgets/pie_chart/pie_data.dart +++ b/lib/widgets/pie_chart/pie_data.dart @@ -1,3 +1,4 @@ +// @dart=2.9 import 'package:flutter/material.dart'; class PieData { diff --git a/lib/widgets/popup_window.dart b/lib/widgets/popup_window.dart index a63263fb6..b2e7f86b2 100644 --- a/lib/widgets/popup_window.dart +++ b/lib/widgets/popup_window.dart @@ -1,3 +1,4 @@ +// @dart=2.9 import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; diff --git a/lib/widgets/progress_dialog.dart b/lib/widgets/progress_dialog.dart index ee1a15725..e6a769826 100644 --- a/lib/widgets/progress_dialog.dart +++ b/lib/widgets/progress_dialog.dart @@ -1,4 +1,3 @@ - import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; @@ -7,7 +6,7 @@ import 'package:flutter_deer/res/resources.dart'; class ProgressDialog extends Dialog { const ProgressDialog({ - Key key, + Key? key, this.hintText = '', }):super(key: key); diff --git a/lib/widgets/search_bar.dart b/lib/widgets/search_bar.dart index 7dcb3bca1..1d2cc5513 100644 --- a/lib/widgets/search_bar.dart +++ b/lib/widgets/search_bar.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter/scheduler.dart'; import 'package:flutter/services.dart'; diff --git a/lib/widgets/selected_image.dart b/lib/widgets/selected_image.dart index 946106fbd..475d1c20a 100644 --- a/lib/widgets/selected_image.dart +++ b/lib/widgets/selected_image.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'dart:io'; import 'package:common_utils/common_utils.dart'; diff --git a/lib/widgets/selected_item.dart b/lib/widgets/selected_item.dart index 32b9540f7..20692d930 100644 --- a/lib/widgets/selected_item.dart +++ b/lib/widgets/selected_item.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; diff --git a/lib/widgets/state_layout.dart b/lib/widgets/state_layout.dart index cd4c2365b..e6a482235 100644 --- a/lib/widgets/state_layout.dart +++ b/lib/widgets/state_layout.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; diff --git a/lib/widgets/text_field_item.dart b/lib/widgets/text_field_item.dart index 56a965b0a..57c00c488 100644 --- a/lib/widgets/text_field_item.dart +++ b/lib/widgets/text_field_item.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; diff --git a/test/accessibility_test.dart b/test/accessibility_test.dart index 7a9bf7ace..ce4f214e3 100644 --- a/test/accessibility_test.dart +++ b/test/accessibility_test.dart @@ -1,3 +1,4 @@ +// @dart=2.9 import 'account/account_accessibility_test.dart' as account_test; import 'goods/goods_accessibility_test.dart' as goods_test; import 'login/login_accessibility_test.dart' as login_test; diff --git a/test/account/account_accessibility_test.dart b/test/account/account_accessibility_test.dart index d6103b244..47ea07502 100644 --- a/test/account/account_accessibility_test.dart +++ b/test/account/account_accessibility_test.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/account/page/account_page.dart'; import 'package:flutter_deer/account/page/account_record_list_page.dart'; diff --git a/test/goods/goods_accessibility_test.dart b/test/goods/goods_accessibility_test.dart index a34133013..c3a1b07c3 100644 --- a/test/goods/goods_accessibility_test.dart +++ b/test/goods/goods_accessibility_test.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/goods/page/goods_edit_page.dart'; import 'package:flutter_deer/goods/page/goods_page.dart'; diff --git a/test/login/login_accessibility_test.dart b/test/login/login_accessibility_test.dart index 668b332a4..e465f37b9 100644 --- a/test/login/login_accessibility_test.dart +++ b/test/login/login_accessibility_test.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/login/page/login_page.dart'; import 'package:flutter_deer/login/page/register_page.dart'; diff --git a/test/net/dio_test.dart b/test/net/dio_test.dart index a5aa2a7c5..ded06056f 100644 --- a/test/net/dio_test.dart +++ b/test/net/dio_test.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:dio/dio.dart'; import 'package:flutter_deer/net/net.dart'; import 'package:flutter_deer/shop/models/user_entity.dart'; diff --git a/test/order/order_accessibility_test.dart b/test/order/order_accessibility_test.dart index 8f0faee4b..35a039308 100644 --- a/test/order/order_accessibility_test.dart +++ b/test/order/order_accessibility_test.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/order/page/order_info_page.dart'; import 'package:flutter_deer/order/page/order_page.dart'; diff --git a/test/setting/setting_accessibility_test.dart b/test/setting/setting_accessibility_test.dart index 045f1096a..290d4085d 100644 --- a/test/setting/setting_accessibility_test.dart +++ b/test/setting/setting_accessibility_test.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/provider/theme_provider.dart'; import 'package:flutter_deer/setting/page/about_page.dart'; diff --git a/test/shop/shop_accessibility_test.dart b/test/shop/shop_accessibility_test.dart index 2ea1dba78..a9092a626 100644 --- a/test/shop/shop_accessibility_test.dart +++ b/test/shop/shop_accessibility_test.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/shop/page/freight_config_page.dart'; import 'package:flutter_deer/shop/page/input_text_page.dart'; diff --git a/test/statistics/statistic_accessibility_test.dart b/test/statistics/statistic_accessibility_test.dart index 587cf6f7b..7dfa36542 100644 --- a/test/statistics/statistic_accessibility_test.dart +++ b/test/statistics/statistic_accessibility_test.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/statistics/page/goods_statistics_page.dart'; import 'package:flutter_deer/statistics/page/order_statistics_page.dart'; diff --git a/test/store/store_accessibility_test.dart b/test/store/store_accessibility_test.dart index 96d697d7c..0926a41e7 100644 --- a/test/store/store_accessibility_test.dart +++ b/test/store/store_accessibility_test.dart @@ -1,4 +1,4 @@ - +// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/provider/theme_provider.dart'; import 'package:flutter_deer/store/page/store_audit_page.dart'; diff --git a/test/widget_test.dart b/test/widget_test.dart index a9113e921..28196a08f 100644 --- a/test/widget_test.dart +++ b/test/widget_test.dart @@ -1,3 +1,4 @@ +// @dart=2.9 // This is a basic Flutter widget test. // // To perform an interaction with a widget in your test, use the WidgetTester From 03be4e2e5273f96020bd725ed700a684aeaac2e9 Mon Sep 17 00:00:00 2001 From: weilu Date: Fri, 23 Apr 2021 08:01:10 +0800 Subject: [PATCH 012/206] =?UTF-8?q?widget=E3=80=81util=E3=80=81demo?= =?UTF-8?q?=E8=BF=81=E7=A7=BB=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README-EN.md | 2 +- README.md | 2 +- ...56\351\242\230\346\261\207\346\200\273.md" | 11 ++++ lib/account/account_router.dart | 3 +- lib/account/widgets/rise_number_text.dart | 11 ++-- lib/account/widgets/sms_verify_dialog.dart | 9 ++- .../widgets/withdrawal_account_item.dart | 17 +++--- .../widgets/withdrawal_password_setting.dart | 5 +- lib/demo/demo_page.dart | 3 +- lib/demo/focus/focus_demo_page.dart | 5 +- lib/demo/navigator/books_app_state.dart | 11 ++-- lib/demo/navigator/books_main.dart | 3 +- .../delegate/inner_router_delegate.dart | 5 +- .../navigator/delegate/router_delegate.dart | 1 - .../parser/route_information_parser.dart | 7 +-- lib/demo/navigator/screen/app_shell.dart | 11 ++-- lib/provider/base_list_provider.dart | 1 - lib/provider/locale_provider.dart | 5 +- lib/provider/theme_provider.dart | 6 +- lib/routers/not_found_page.dart | 3 +- lib/routers/routers.dart | 9 ++- lib/util/app_navigator.dart | 3 +- lib/util/change_notifier_manage.dart | 3 +- lib/util/handle_error_utils.dart | 3 +- lib/util/image_utils.dart | 4 +- .../fix_ios_input_formatter.dart | 3 +- .../number_text_input_formatter.dart | 1 - lib/util/other_utils.dart | 15 +++-- lib/widgets/base_dialog.dart | 19 +++--- lib/widgets/click_item.dart | 9 ++- lib/widgets/double_tap_back_exit_app.dart | 9 ++- lib/widgets/my_app_bar.dart | 18 ++---- lib/widgets/my_button.dart | 21 ++++--- lib/widgets/my_card.dart | 23 ++------ lib/widgets/my_flexible_space_bar.dart | 46 +++++++-------- lib/widgets/my_refresh_list.dart | 19 +++--- lib/widgets/my_scroll_view.dart | 17 +++--- lib/widgets/pie_chart/pie_chart.dart | 39 ++++++------- lib/widgets/pie_chart/pie_data.dart | 9 ++- lib/widgets/popup_window.dart | 58 +++++++++---------- lib/widgets/search_bar.dart | 11 ++-- lib/widgets/selected_image.dart | 17 +++--- lib/widgets/selected_item.dart | 9 ++- lib/widgets/state_layout.dart | 9 ++- lib/widgets/text_field_item.dart | 11 ++-- 45 files changed, 229 insertions(+), 277 deletions(-) diff --git a/README-EN.md b/README-EN.md index c003efa75..da7a31433 100644 --- a/README-EN.md +++ b/README-EN.md @@ -75,7 +75,7 @@ Web:https://simplezhli.github.io/flutter_deer/ - I have added a relative path to the design drawings in the page notes. I can search or find the corresponding page. I hope it will help you. -- This project uses the FlutterJsonBeanFactory plugin to generate beans. +- This project uses the [FlutterJsonBeanFactory](https://github.com/zhangruiyu/FlutterJsonBeanFactory) plugin to generate beans. ## Summary of experience diff --git a/README.md b/README.md index 43f116e13..9addff154 100644 --- a/README.md +++ b/README.md @@ -82,7 +82,7 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ - 因为页面有点多,一开始可能会导致页面无法与设计图对应上。我在代码注释中有添加设计图的相对路径,可以搜索或查找到对应页面,希望对你有帮助。 -- 本项目使用FlutterJsonBeanFactory插件来生成Bean。FlutterJsonBeanFactory插件使用可以查看[这篇文章](https://www.jianshu.com/p/14cbcbaa74b7)。 +- 本项目使用[FlutterJsonBeanFactory](https://github.com/zhangruiyu/FlutterJsonBeanFactory)插件来生成Bean。 - Web受制于js等资源过大和部署在Github上,访问会慢一些。 diff --git "a/docs/Web\351\227\256\351\242\230\346\261\207\346\200\273.md" "b/docs/Web\351\227\256\351\242\230\346\261\207\346\200\273.md" index 6bc5b3cfb..a11a2c3dd 100644 --- "a/docs/Web\351\227\256\351\242\230\346\261\207\346\200\273.md" +++ "b/docs/Web\351\227\256\351\242\230\346\261\207\346\200\273.md" @@ -40,6 +40,12 @@ 目前处理方法是添加`RepaintBoundary`。 +## 按钮的大小在移动端与Web端不同 + +可以`ThemeData`中全局指定`visualDensity`属性为`VisualDensity.standard`。 + +详情见[Buttons not respecting default dimensions](https://github.com/flutter/flutter/issues/77142) + ## 指定渲染引擎 ``` @@ -51,5 +57,10 @@ flutter run -d chrome --release --web-renderer canvaskit > 总结:HTML渲染相较于CanvasKit渲染,UI还原度差一些,但综合性能相对较好。 +## 历史问题 + +- 2.0.0已知问题(~~#79351~~)。 + + diff --git a/lib/account/account_router.dart b/lib/account/account_router.dart index 5d20dc47a..bded156c8 100644 --- a/lib/account/account_router.dart +++ b/lib/account/account_router.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:fluro/fluro.dart'; import 'package:flutter_deer/routers/i_router.dart'; @@ -35,7 +34,7 @@ class AccountRouter implements IRouterProvider{ router.define(accountRecordListPage, handler: Handler(handlerFunc: (_, __) => const AccountRecordListPage())); router.define(addWithdrawalAccountPage, handler: Handler(handlerFunc: (_, __) => const AddWithdrawalAccountPage())); router.define(bankSelectPage, handler: Handler(handlerFunc: (_, Map> params) { - final int type = int.parse(params['type']?.first); + final int type = int.parse(params['type']?.first ?? '0'); return BankSelectPage(type: type); })); router.define(citySelectPage, handler: Handler(handlerFunc: (_, __) => const CitySelectPage())); diff --git a/lib/account/widgets/rise_number_text.dart b/lib/account/widgets/rise_number_text.dart index 849af97cc..57b68c2b4 100644 --- a/lib/account/widgets/rise_number_text.dart +++ b/lib/account/widgets/rise_number_text.dart @@ -1,17 +1,16 @@ -// @dart=2.9 import 'package:flutter/material.dart'; // 简易实现数字滚动效果 class RiseNumberText extends StatefulWidget { const RiseNumberText(this.number,{ - Key key, + Key? key, this.style, this.duration = 1200 }): super(key: key); final num number; - final TextStyle style; + final TextStyle? style; final int duration; @override @@ -20,8 +19,8 @@ class RiseNumberText extends StatefulWidget { class _RiseNumberTextState extends State with SingleTickerProviderStateMixin { - Animation _animation; - AnimationController _controller; + late Animation _animation; + late AnimationController _controller; num _fromNumber = 0; @override @@ -46,7 +45,7 @@ class _RiseNumberTextState extends State with SingleTickerProvid @override void dispose() { - _controller?.dispose(); + _controller.dispose(); super.dispose(); } diff --git a/lib/account/widgets/sms_verify_dialog.dart b/lib/account/widgets/sms_verify_dialog.dart index feb7b3a6a..966e2569b 100644 --- a/lib/account/widgets/sms_verify_dialog.dart +++ b/lib/account/widgets/sms_verify_dialog.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'dart:async'; import 'package:flutter/material.dart'; @@ -17,7 +16,7 @@ import 'package:flutter_deer/widgets/my_button.dart'; /// 骚操作:借腹生子 class SMSVerifyDialog extends StatefulWidget { - const SMSVerifyDialog({Key key}) : super(key: key); + const SMSVerifyDialog({Key? key}) : super(key: key); @override _SMSVerifyDialogState createState() => _SMSVerifyDialogState(); @@ -28,8 +27,8 @@ class _SMSVerifyDialogState extends State { /// 倒计时秒数 final int _second = 60; /// 当前秒数 - int _currentSecond; - StreamSubscription _subscription; + late int _currentSecond; + StreamSubscription? _subscription; bool _clickable = true; final FocusNode _focusNode = FocusNode(); @@ -131,7 +130,7 @@ class _SMSVerifyDialogState extends State { /// https://github.com/flutter/flutter/issues/47191 /// https://github.com/flutter/flutter/pull/57264 /// 1.19.0已修复,小于此版本需添加addPostFrameCallback处理,否则会错误触发onChanged。 - SchedulerBinding.instance.addPostFrameCallback((_) { + SchedulerBinding.instance!.addPostFrameCallback((_) { _controller.clear(); }); } diff --git a/lib/account/widgets/withdrawal_account_item.dart b/lib/account/widgets/withdrawal_account_item.dart index e86d3530f..de829abe2 100644 --- a/lib/account/widgets/withdrawal_account_item.dart +++ b/lib/account/widgets/withdrawal_account_item.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'dart:math'; import 'package:flutter/material.dart'; @@ -11,9 +10,9 @@ import 'package:flutter_deer/widgets/load_image.dart'; class WithdrawalAccountItem extends StatefulWidget { const WithdrawalAccountItem({ - Key key, - @required this.data, - this.onLongPress, + Key? key, + required this.data, + required this.onLongPress, }): super(key: key); final WithdrawalAccountModel data; @@ -26,8 +25,8 @@ class WithdrawalAccountItem extends StatefulWidget { /// 3D翻转动画 https://medium.com/flutterpub/flutter-flip-card-animation-with-3d-effect-4284af04f5a class _WithdrawalAccountItemState extends State with SingleTickerProviderStateMixin { - AnimationController _animationController; - Animation _animation; + late AnimationController _animationController; + late Animation _animation; AnimationStatus _animationStatus = AnimationStatus.dismissed; @override @@ -142,9 +141,9 @@ class _WithdrawalAccountItemState extends State with Sing class AccountCard extends StatefulWidget { const AccountCard({ - Key key, - @required this.child, - this.type + Key? key, + required this.child, + required this.type }): super(key: key); final Widget child; diff --git a/lib/account/widgets/withdrawal_password_setting.dart b/lib/account/widgets/withdrawal_password_setting.dart index c2672b6d3..4c6010e5c 100644 --- a/lib/account/widgets/withdrawal_password_setting.dart +++ b/lib/account/widgets/withdrawal_password_setting.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; @@ -12,7 +11,7 @@ import 'package:vibration/vibration.dart'; /// design/6店铺-账户/index.html#artboard13 class WithdrawalPasswordSetting extends StatefulWidget { - const WithdrawalPasswordSetting({Key key}) : super(key: key); + const WithdrawalPasswordSetting({Key? key}) : super(key: key); @override _WithdrawalPasswordSettingState createState() => _WithdrawalPasswordSettingState(); @@ -125,7 +124,7 @@ class _WithdrawalPasswordSettingState extends State { } /// 点击时给予振动反馈 - if (!Device.isDesktop && await Vibration.hasVibrator()) { + if (!Device.isDesktop && (await Vibration.hasVibrator() ?? false)) { Vibration.vibrate(duration: 10); } diff --git a/lib/demo/demo_page.dart b/lib/demo/demo_page.dart index 5672c2a83..a582b4c11 100644 --- a/lib/demo/demo_page.dart +++ b/lib/demo/demo_page.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/demo/focus/focus_demo_page.dart'; import 'package:flutter_deer/demo/lottie/lottie_demo.dart'; @@ -14,7 +13,7 @@ import 'package:flutter_deer/widgets/my_app_bar.dart'; class DemoPage extends StatefulWidget { - const DemoPage({Key key}) : super(key: key); + const DemoPage({Key? key}) : super(key: key); @override _DemoPageState createState() => _DemoPageState(); diff --git a/lib/demo/focus/focus_demo_page.dart b/lib/demo/focus/focus_demo_page.dart index 1b2d1eaff..aab81a3a7 100644 --- a/lib/demo/focus/focus_demo_page.dart +++ b/lib/demo/focus/focus_demo_page.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/util/theme_utils.dart'; @@ -6,7 +5,7 @@ import 'package:flutter_deer/util/theme_utils.dart'; /// 博客:https://weilu.blog.csdn.net/article/details/107132031 class FocusDemoPage extends StatefulWidget { - const FocusDemoPage({Key key, this.title}) : super(key: key); + const FocusDemoPage({Key? key, required this.title}) : super(key: key); final String title; @@ -47,7 +46,7 @@ class _FocusDemoPageState extends State { // FocusScope.of(context).unfocus(); // _focusNode.unfocus(); // FocusManager.instance.primaryFocus.unfocus(); - WidgetsBinding.instance.addPostFrameCallback((_) { + WidgetsBinding.instance!.addPostFrameCallback((_) { debugDumpFocusTree(); }); }, diff --git a/lib/demo/navigator/books_app_state.dart b/lib/demo/navigator/books_app_state.dart index 49f2ddd58..812c569ef 100644 --- a/lib/demo/navigator/books_app_state.dart +++ b/lib/demo/navigator/books_app_state.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/demo/navigator/book_entity.dart'; @@ -6,9 +5,9 @@ class BooksAppState extends ChangeNotifier { BooksAppState() : _selectedIndex = 0; - int _selectedIndex; + late int _selectedIndex; - Book _selectedBook; + Book? _selectedBook; final List books = [ Book('Stranger in a Strange Land', 'Robert A. Heinlein'), @@ -29,9 +28,9 @@ class BooksAppState extends ChangeNotifier { notifyListeners(); } - Book get selectedBook => _selectedBook; + Book? get selectedBook => _selectedBook; - set selectedBook(Book book) { + set selectedBook(Book? book) { _selectedBook = book; notifyListeners(); } @@ -40,7 +39,7 @@ class BooksAppState extends ChangeNotifier { if (!books.contains(_selectedBook)) { return 0; } - return books.indexOf(_selectedBook); + return books.indexOf(_selectedBook!); } void setSelectedBookById(int id) { diff --git a/lib/demo/navigator/books_main.dart b/lib/demo/navigator/books_main.dart index d58c2c0a0..b366bec0b 100644 --- a/lib/demo/navigator/books_main.dart +++ b/lib/demo/navigator/books_main.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/demo/navigator/parser/route_information_parser.dart'; import 'package:flutter_deer/demo/navigator/delegate/router_delegate.dart'; @@ -7,7 +6,7 @@ import 'package:flutter_deer/demo/navigator/delegate/router_delegate.dart'; /// https://weilu.blog.csdn.net/article/details/108902282 class NestedRouterDemo extends StatefulWidget { - const NestedRouterDemo({Key key}) : super(key: key); + const NestedRouterDemo({Key? key}) : super(key: key); @override _NestedRouterDemoState createState() => _NestedRouterDemoState(); diff --git a/lib/demo/navigator/delegate/inner_router_delegate.dart b/lib/demo/navigator/delegate/inner_router_delegate.dart index a5efed122..d24c6455f 100644 --- a/lib/demo/navigator/delegate/inner_router_delegate.dart +++ b/lib/demo/navigator/delegate/inner_router_delegate.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/demo/navigator/book_entity.dart'; import 'package:flutter_deer/demo/navigator/books_app_state.dart'; @@ -39,7 +38,7 @@ class InnerRouterDelegate extends RouterDelegate if (appState.selectedBook != null) MaterialPage( key: ValueKey(appState.selectedBook), - child: BookDetailsScreen(book: appState.selectedBook), + child: BookDetailsScreen(book: appState.selectedBook!), ), ] else const FadeAnimationPage( @@ -70,7 +69,7 @@ class InnerRouterDelegate extends RouterDelegate class FadeAnimationPage extends Page { - const FadeAnimationPage({LocalKey key, this.child}) : super(key: key); + const FadeAnimationPage({LocalKey? key, required this.child}) : super(key: key); final Widget child; diff --git a/lib/demo/navigator/delegate/router_delegate.dart b/lib/demo/navigator/delegate/router_delegate.dart index 6d7c4b299..7708b4b42 100644 --- a/lib/demo/navigator/delegate/router_delegate.dart +++ b/lib/demo/navigator/delegate/router_delegate.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/demo/navigator/screen/app_shell.dart'; import 'package:flutter_deer/demo/navigator/book_entity.dart'; diff --git a/lib/demo/navigator/parser/route_information_parser.dart b/lib/demo/navigator/parser/route_information_parser.dart index dc8ae29b0..fb96fd9d2 100644 --- a/lib/demo/navigator/parser/route_information_parser.dart +++ b/lib/demo/navigator/parser/route_information_parser.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import '../book_entity.dart'; @@ -7,14 +6,14 @@ class BookRouteInformationParser extends RouteInformationParser { @override Future parseRouteInformation( RouteInformation routeInformation) async { - final uri = Uri.parse(routeInformation.location); + final uri = Uri.parse(routeInformation.location!); if (uri.pathSegments.isNotEmpty && uri.pathSegments.first == 'settings') { return BooksSettingsPath(); } else { if (uri.pathSegments.length >= 2) { if (uri.pathSegments[0] == 'book') { - return BooksDetailsPath(int.tryParse(uri.pathSegments[1])); + return BooksDetailsPath(int.tryParse(uri.pathSegments[1])!); } } return BooksListPath(); @@ -22,7 +21,7 @@ class BookRouteInformationParser extends RouteInformationParser { } @override - RouteInformation restoreRouteInformation(BookRoutePath configuration) { + RouteInformation? restoreRouteInformation(BookRoutePath configuration) { if (configuration is BooksListPath) { return const RouteInformation(location: '/home'); } diff --git a/lib/demo/navigator/screen/app_shell.dart b/lib/demo/navigator/screen/app_shell.dart index 200b59324..9f2240c01 100644 --- a/lib/demo/navigator/screen/app_shell.dart +++ b/lib/demo/navigator/screen/app_shell.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/demo/navigator/books_app_state.dart'; import 'package:flutter_deer/demo/navigator/delegate/inner_router_delegate.dart'; @@ -7,8 +6,8 @@ import 'package:flutter_deer/demo/navigator/delegate/inner_router_delegate.dart' class AppShell extends StatefulWidget { const AppShell({ - Key key, - @required this.appState, + Key? key, + required this.appState, }): super(key: key); final BooksAppState appState; @@ -18,8 +17,8 @@ class AppShell extends StatefulWidget { } class _AppShellState extends State { - InnerRouterDelegate _routerDelegate; - ChildBackButtonDispatcher _backButtonDispatcher; + late InnerRouterDelegate _routerDelegate; + late ChildBackButtonDispatcher _backButtonDispatcher; @override void initState() { @@ -38,7 +37,7 @@ class _AppShellState extends State { super.didChangeDependencies(); // Defer back button dispatching to the child router _backButtonDispatcher = Router.of(context) - .backButtonDispatcher + .backButtonDispatcher! .createChildBackButtonDispatcher(); } diff --git a/lib/provider/base_list_provider.dart b/lib/provider/base_list_provider.dart index 25fcdeabd..a56e323a1 100644 --- a/lib/provider/base_list_provider.dart +++ b/lib/provider/base_list_provider.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/widgets/state_layout.dart'; diff --git a/lib/provider/locale_provider.dart b/lib/provider/locale_provider.dart index 19adc90c9..ba42a1955 100644 --- a/lib/provider/locale_provider.dart +++ b/lib/provider/locale_provider.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'dart:ui'; import 'package:sp_util/sp_util.dart'; @@ -8,8 +7,8 @@ import 'package:flutter_deer/common/common.dart'; class LocaleProvider extends ChangeNotifier { - Locale get locale { - final String locale = SpUtil.getString(Constant.locale); + Locale? get locale { + final String locale = SpUtil.getString(Constant.locale) ?? ''; switch(locale) { case 'zh': return const Locale('zh', 'CN'); diff --git a/lib/provider/theme_provider.dart b/lib/provider/theme_provider.dart index 41fa071f3..0fefee124 100644 --- a/lib/provider/theme_provider.dart +++ b/lib/provider/theme_provider.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'dart:ui'; import 'package:flutter_deer/routers/web_page_transitions.dart'; @@ -15,7 +14,7 @@ extension ThemeModeExtension on ThemeMode { class ThemeProvider extends ChangeNotifier { void syncTheme() { - final String theme = SpUtil.getString(Constant.theme); + final String theme = SpUtil.getString(Constant.theme) ?? ''; if (theme.isNotEmpty && theme != ThemeMode.system.value) { notifyListeners(); } @@ -27,7 +26,7 @@ class ThemeProvider extends ChangeNotifier { } ThemeMode getThemeMode(){ - final String theme = SpUtil.getString(Constant.theme); + final String theme = SpUtil.getString(Constant.theme) ?? ''; switch(theme) { case 'Dark': return ThemeMode.dark; @@ -82,6 +81,7 @@ class ThemeProvider extends ChangeNotifier { brightness: isDarkMode ? Brightness.dark : Brightness.light, ), pageTransitionsTheme: NoTransitionsOnWeb(), + visualDensity: VisualDensity.standard, // https://github.com/flutter/flutter/issues/77142 ); } diff --git a/lib/routers/not_found_page.dart b/lib/routers/not_found_page.dart index 58a587908..504af4642 100644 --- a/lib/routers/not_found_page.dart +++ b/lib/routers/not_found_page.dart @@ -1,11 +1,10 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/widgets/my_app_bar.dart'; import 'package:flutter_deer/widgets/state_layout.dart'; class NotFoundPage extends StatelessWidget { - const NotFoundPage({Key key}) : super(key: key); + const NotFoundPage({Key? key}) : super(key: key); @override Widget build(BuildContext context) { diff --git a/lib/routers/routers.dart b/lib/routers/routers.dart index 6aeb883f2..6ef976e0b 100644 --- a/lib/routers/routers.dart +++ b/lib/routers/routers.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:fluro/fluro.dart'; import 'package:flutter/material.dart'; import 'package:flutter_deer/account/account_router.dart'; @@ -28,17 +27,17 @@ class Routes { static void initRoutes() { /// 指定路由跳转错误返回页 router.notFoundHandler = Handler( - handlerFunc: (BuildContext context, Map> params) { + handlerFunc: (BuildContext? context, Map> params) { debugPrint('未找到目标页'); return const NotFoundPage(); }); router.define(home, handler: Handler( - handlerFunc: (BuildContext context, Map> params) => const Home())); + handlerFunc: (BuildContext? context, Map> params) => const Home())); router.define(webViewPage, handler: Handler(handlerFunc: (_, params) { - final String title = params['title']?.first; - final String url = params['url']?.first; + final String title = params['title']?.first ?? ''; + final String url = params['url']?.first ?? ''; return WebViewPage(title: title, url: url); })); diff --git a/lib/util/app_navigator.dart b/lib/util/app_navigator.dart index 9fc37d384..f63609702 100644 --- a/lib/util/app_navigator.dart +++ b/lib/util/app_navigator.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; /// Navigator工具类 @@ -33,7 +32,7 @@ class AppNavigator { ); } - static void pushResult(BuildContext context, Widget scene, Function(Object) function) { + static void pushResult(BuildContext context, Widget scene, Function(Object?) function) { Navigator.push( context, MaterialPageRoute( diff --git a/lib/util/change_notifier_manage.dart b/lib/util/change_notifier_manage.dart index 4e01d0653..f73040791 100644 --- a/lib/util/change_notifier_manage.dart +++ b/lib/util/change_notifier_manage.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/foundation.dart'; import 'package:flutter/widgets.dart'; @@ -43,7 +42,7 @@ import 'package:flutter/widgets.dart'; /// ``` mixin ChangeNotifierMixin on State { - Map> _map; + Map>? _map; Map> changeNotifier(); diff --git a/lib/util/handle_error_utils.dart b/lib/util/handle_error_utils.dart index 1ef29e86c..e2471d09f 100644 --- a/lib/util/handle_error_utils.dart +++ b/lib/util/handle_error_utils.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'dart:async'; import 'package:flutter/widgets.dart'; @@ -13,7 +12,7 @@ void handleError(void body) { FlutterError.dumpErrorToConsole(details); } else { // release时,将异常交由zone统一处理。 - Zone.current.handleUncaughtError(details.exception, details.stack); + Zone.current.handleUncaughtError(details.exception, details.stack!); } }; diff --git a/lib/util/image_utils.dart b/lib/util/image_utils.dart index d677e8646..d75f7072c 100644 --- a/lib/util/image_utils.dart +++ b/lib/util/image_utils.dart @@ -14,11 +14,11 @@ class ImageUtils { return 'assets/images/$name.${format.value}'; } - static ImageProvider getImageProvider(String imageUrl, {String holderImg = 'none'}) { + static ImageProvider getImageProvider(String? imageUrl, {String holderImg = 'none'}) { if (TextUtil.isEmpty(imageUrl)) { return AssetImage(getImgPath(holderImg)); } - return CachedNetworkImageProvider(imageUrl); + return CachedNetworkImageProvider(imageUrl!); } } diff --git a/lib/util/input_formatter/fix_ios_input_formatter.dart b/lib/util/input_formatter/fix_ios_input_formatter.dart index 5bdbf0d88..18be76566 100644 --- a/lib/util/input_formatter/fix_ios_input_formatter.dart +++ b/lib/util/input_formatter/fix_ios_input_formatter.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'dart:io'; import 'package:flutter/services.dart'; @@ -22,7 +21,7 @@ class FixIOSTextInputFormatter extends TextInputFormatter { // ios Composing变化也执行format,因为在拼音阶段没有执行LengthLimitingTextInputFormatter,从拼音到汉字需要重新执行 if (newValue != null && newValue.composing != null && newValue.composing.isValid) { // ios拼音阶段不执行长度限制的format - return null; + return const TextEditingValue(); } } return TextEditingValue( diff --git a/lib/util/input_formatter/number_text_input_formatter.dart b/lib/util/input_formatter/number_text_input_formatter.dart index 87b203f97..1a93aa103 100644 --- a/lib/util/input_formatter/number_text_input_formatter.dart +++ b/lib/util/input_formatter/number_text_input_formatter.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/services.dart'; /// 数字、小数格式化(默认两位小数) diff --git a/lib/util/other_utils.dart b/lib/util/other_utils.dart index 5899ef4cd..0d6c71c4a 100644 --- a/lib/util/other_utils.dart +++ b/lib/util/other_utils.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'dart:ui'; import 'package:common_utils/common_utils.dart'; @@ -33,7 +32,7 @@ class Utils { } static String formatPrice(String price, {MoneyFormat format = MoneyFormat.END_INTEGER}){ - return MoneyUtil.changeYWithUnit(NumUtil.getDoubleByValueStr(price), MoneyUnit.YUAN, format: format); + return MoneyUtil.changeYWithUnit(NumUtil.getDoubleByValueStr(price) ?? 0, MoneyUnit.YUAN, format: format); } static KeyboardActionsConfig getKeyboardActionsConfig(BuildContext context, List list) { @@ -57,10 +56,10 @@ class Utils { ); } - static String getCurrLocale() { - final String locale = SpUtil.getString(Constant.locale); + static String? getCurrLocale() { + final String locale = SpUtil.getString(Constant.locale)!; if (locale == '') { - return window.locale.languageCode; + return window.locale?.languageCode; // 2.0.0 web问题:https://github.com/flutter/flutter/issues/79351 } return locale; } @@ -68,10 +67,10 @@ class Utils { } -Future showElasticDialog({ - @required BuildContext context, +Future showElasticDialog({ + required BuildContext context, bool barrierDismissible = true, - WidgetBuilder builder, + required WidgetBuilder builder, }) { return showGeneralDialog( diff --git a/lib/widgets/base_dialog.dart b/lib/widgets/base_dialog.dart index 65183df1e..13e26a791 100644 --- a/lib/widgets/base_dialog.dart +++ b/lib/widgets/base_dialog.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; @@ -9,15 +8,15 @@ import 'package:flutter_deer/widgets/my_button.dart'; class BaseDialog extends StatelessWidget { const BaseDialog({ - Key key, + Key? key, this.title, this.onPressed, this.hiddenTitle = false, - @required this.child + required this.child }) : super(key : key); - final String title; - final VoidCallback onPressed; + final String? title; + final VoidCallback? onPressed; final Widget child; final bool hiddenTitle; @@ -29,7 +28,7 @@ class BaseDialog extends StatelessWidget { child: Padding( padding: const EdgeInsets.only(bottom: 8.0), child: Text( - hiddenTitle ? '' : title, + hiddenTitle ? '' : title ?? '', style: TextStyles.textBold18, ), ), @@ -107,15 +106,15 @@ class BaseDialog extends StatelessWidget { class _DialogButton extends StatelessWidget { const _DialogButton({ - Key key, - this.text, + Key? key, + required this.text, this.textColor, this.onPressed, }): super(key: key); final String text; - final Color textColor; - final VoidCallback onPressed; + final Color? textColor; + final VoidCallback? onPressed; @override Widget build(BuildContext context) { diff --git a/lib/widgets/click_item.dart b/lib/widgets/click_item.dart index 1c3e28ecf..38be61e15 100644 --- a/lib/widgets/click_item.dart +++ b/lib/widgets/click_item.dart @@ -1,19 +1,18 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; class ClickItem extends StatelessWidget { const ClickItem({ - Key key, + Key? key, this.onTap, - @required this.title, + required this.title, this.content = '', this.textAlign = TextAlign.start, this.maxLines = 1 }): super(key: key); - final GestureTapCallback onTap; + final GestureTapCallback? onTap; final String title; final String content; final TextAlign textAlign; @@ -35,7 +34,7 @@ class ClickItem extends StatelessWidget { maxLines: maxLines, textAlign: maxLines == 1 ? TextAlign.right : textAlign, overflow: TextOverflow.ellipsis, - style: Theme.of(context).textTheme.subtitle2.copyWith(fontSize: Dimens.font_sp14), + style: Theme.of(context).textTheme.subtitle2!.copyWith(fontSize: Dimens.font_sp14), ), ), Gaps.hGap8, diff --git a/lib/widgets/double_tap_back_exit_app.dart b/lib/widgets/double_tap_back_exit_app.dart index 7a94324cd..e0624c2ed 100644 --- a/lib/widgets/double_tap_back_exit_app.dart +++ b/lib/widgets/double_tap_back_exit_app.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_deer/util/toast_utils.dart'; @@ -7,8 +6,8 @@ import 'package:flutter_deer/util/toast_utils.dart'; class DoubleTapBackExitApp extends StatefulWidget { const DoubleTapBackExitApp({ - Key key, - @required this.child, + Key? key, + required this.child, this.duration = const Duration(milliseconds: 2500), }): super(key: key); @@ -22,7 +21,7 @@ class DoubleTapBackExitApp extends StatefulWidget { class _DoubleTapBackExitAppState extends State { - DateTime _lastTime; + DateTime? _lastTime; @override Widget build(BuildContext context) { @@ -33,7 +32,7 @@ class _DoubleTapBackExitAppState extends State { } Future _isExit() async { - if (_lastTime == null || DateTime.now().difference(_lastTime) > widget.duration) { + if (_lastTime == null || DateTime.now().difference(_lastTime!) > widget.duration) { _lastTime = DateTime.now(); Toast.show('再次点击退出应用'); return Future.value(false); diff --git a/lib/widgets/my_app_bar.dart b/lib/widgets/my_app_bar.dart index b5b664eb0..2d4b2e15f 100644 --- a/lib/widgets/my_app_bar.dart +++ b/lib/widgets/my_app_bar.dart @@ -1,4 +1,4 @@ -// @dart=2.9 + import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_deer/res/resources.dart'; @@ -9,7 +9,7 @@ import 'package:flutter_deer/widgets/my_button.dart'; class MyAppBar extends StatelessWidget implements PreferredSizeWidget { const MyAppBar({ - Key key, + Key? key, this.backgroundColor, this.title = '', this.centerTitle = '', @@ -20,24 +20,18 @@ class MyAppBar extends StatelessWidget implements PreferredSizeWidget { this.isBack = true }): super(key: key); - final Color backgroundColor; + final Color? backgroundColor; final String title; final String centerTitle; final String backImg; - final Color backImgColor; + final Color? backImgColor; final String actionName; - final VoidCallback onPressed; + final VoidCallback? onPressed; final bool isBack; @override Widget build(BuildContext context) { - Color _backgroundColor; - - if (backgroundColor == null) { - _backgroundColor = context.backgroundColor; - } else { - _backgroundColor = backgroundColor; - } + final Color _backgroundColor = backgroundColor ?? context.backgroundColor; final SystemUiOverlayStyle _overlayStyle = ThemeData.estimateBrightnessForColor(_backgroundColor) == Brightness.dark ? SystemUiOverlayStyle.light : SystemUiOverlayStyle.dark; diff --git a/lib/widgets/my_button.dart b/lib/widgets/my_button.dart index e77cf07f1..3ceffca8b 100644 --- a/lib/widgets/my_button.dart +++ b/lib/widgets/my_button.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/util/theme_utils.dart'; @@ -7,7 +6,7 @@ import 'package:flutter_deer/util/theme_utils.dart'; class MyButton extends StatelessWidget { const MyButton({ - Key key, + Key? key, this.text = '', this.fontSize = Dimens.font_sp18, this.textColor, @@ -19,18 +18,18 @@ class MyButton extends StatelessWidget { this.padding = const EdgeInsets.symmetric(horizontal: 16.0), this.radius = 2.0, this.side = BorderSide.none, - @required this.onPressed, + required this.onPressed, }): super(key: key); final String text; final double fontSize; - final Color textColor; - final Color disabledTextColor; - final Color backgroundColor; - final Color disabledBackgroundColor; - final double minHeight; - final double minWidth; - final VoidCallback onPressed; + final Color? textColor; + final Color? disabledTextColor; + final Color? backgroundColor; + final Color? disabledBackgroundColor; + final double? minHeight; + final double? minWidth; + final VoidCallback? onPressed; final EdgeInsetsGeometry padding; final double radius; final BorderSide side; @@ -62,7 +61,7 @@ class MyButton extends StatelessWidget { return (textColor ?? (isDark ? Colours.dark_button_text : Colors.white)).withOpacity(0.12); }), // 按钮最小大小 - minimumSize: (minWidth == null || minHeight == null) ? null : MaterialStateProperty.all(Size(minWidth, minHeight)), + minimumSize: (minWidth == null || minHeight == null) ? null : MaterialStateProperty.all(Size(minWidth!, minHeight!)), padding: MaterialStateProperty.all(padding), shape: MaterialStateProperty.all( RoundedRectangleBorder( diff --git a/lib/widgets/my_card.dart b/lib/widgets/my_card.dart index 73dea0c10..eba2483c0 100644 --- a/lib/widgets/my_card.dart +++ b/lib/widgets/my_card.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/res/colors.dart'; import 'package:flutter_deer/util/theme_utils.dart'; @@ -6,32 +5,22 @@ import 'package:flutter_deer/util/theme_utils.dart'; class MyCard extends StatelessWidget { const MyCard({ - Key key, - @required this.child, + Key? key, + required this.child, this.color, this.shadowColor }): super(key: key); final Widget child; - final Color color; - final Color shadowColor; + final Color? color; + final Color? shadowColor; @override Widget build(BuildContext context) { - Color _backgroundColor; - Color _shadowColor; final bool isDark = context.isDark; - if (color == null) { - _backgroundColor = isDark ? Colours.dark_bg_gray_ : Colors.white; - } else { - _backgroundColor = color; - } - if (shadowColor == null) { - _shadowColor = isDark ? Colors.transparent : const Color(0x80DCE7FA); - } else { - _shadowColor = isDark ? Colors.transparent : shadowColor; - } + final Color _backgroundColor = color ?? (isDark ? Colours.dark_bg_gray_ : Colors.white); + final Color _shadowColor = isDark ? Colors.transparent : (shadowColor ?? const Color(0x80DCE7FA)); return DecoratedBox( decoration: BoxDecoration( diff --git a/lib/widgets/my_flexible_space_bar.dart b/lib/widgets/my_flexible_space_bar.dart index babde359b..bb7ab197f 100644 --- a/lib/widgets/my_flexible_space_bar.dart +++ b/lib/widgets/my_flexible_space_bar.dart @@ -1,7 +1,6 @@ // Copyright 2016 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart=2.9 import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; @@ -28,7 +27,7 @@ class MyFlexibleSpaceBar extends StatefulWidget { /// /// Most commonly used in the [AppBar.flexibleSpace] field. const MyFlexibleSpaceBar({ - Key key, + Key? key, this.title, this.background, this.centerTitle, @@ -40,18 +39,18 @@ class MyFlexibleSpaceBar extends StatefulWidget { /// The primary contents of the flexible space bar when expanded. /// /// Typically a [Text] widget. - final Widget title; + final Widget? title; /// Shown behind the [title] when expanded. /// /// Typically an [Image] widget with [Image.fit] set to [BoxFit.cover]. - final Widget background; + final Widget? background; /// Whether the title should be centered. /// /// By default this property is true if the current target platform /// is [TargetPlatform.iOS], false otherwise. - final bool centerTitle; + final bool? centerTitle; /// Collapse effect while scrolling. /// @@ -68,7 +67,7 @@ class MyFlexibleSpaceBar extends StatefulWidget { /// By default the value of this property is /// `EdgeInsetsDirectional.only(start: 72, bottom: 16)` if the title is /// not centered, `EdgeInsetsDirectional.only(start 0, bottom: 16)` otherwise. - final EdgeInsetsGeometry titlePadding; + final EdgeInsetsGeometry? titlePadding; /// Wraps a widget that contains an [AppBar] to convey sizing information down /// to the [FlexibleSpaceBar]. @@ -88,11 +87,11 @@ class MyFlexibleSpaceBar extends StatefulWidget { /// * [FlexibleSpaceBarSettings] which creates a settings object that can be /// used to specify these settings to a [FlexibleSpaceBar]. static Widget createSettings({ - double toolbarOpacity, - double minExtent, - double maxExtent, - @required double currentExtent, - @required Widget child, + double? toolbarOpacity, + double? minExtent, + double? maxExtent, + required double currentExtent, + required Widget child, }) { assert(currentExtent != null); return FlexibleSpaceBarSettings( @@ -111,7 +110,7 @@ class MyFlexibleSpaceBar extends StatefulWidget { class _FlexibleSpaceBarState extends State { bool _getEffectiveCenterTitle(ThemeData theme) { if (widget.centerTitle != null) - return widget.centerTitle; + return widget.centerTitle!; assert(theme.platform != null); switch (theme.platform) { case TargetPlatform.android: @@ -123,7 +122,6 @@ class _FlexibleSpaceBarState extends State { case TargetPlatform.macOS: return true; } - return null; } Alignment _getTitleAlignment(bool effectiveCenterTitle) { @@ -137,10 +135,9 @@ class _FlexibleSpaceBarState extends State { case TextDirection.ltr: return Alignment.bottomLeft; } - return null; } - double _getCollapsePadding(double t, FlexibleSpaceBarSettings settings) { + double? _getCollapsePadding(double t, FlexibleSpaceBarSettings settings) { switch (widget.collapseMode) { case CollapseMode.pin: return -(settings.maxExtent - settings.currentExtent); @@ -150,7 +147,6 @@ class _FlexibleSpaceBarState extends State { final double deltaExtent = settings.maxExtent - settings.minExtent; return -Tween(begin: 0.0, end: deltaExtent / 4.0).transform(t); } - return null; } final GlobalKey _key = GlobalKey(); @@ -160,9 +156,9 @@ class _FlexibleSpaceBarState extends State { @override void initState() { //监听Widget是否绘制完毕 - WidgetsBinding.instance.addPostFrameCallback((_) { - final RenderBox renderBoxRed = _key.currentContext.findRenderObject() as RenderBox; - _offset = renderBoxRed.size.width / 2; + WidgetsBinding.instance!.addPostFrameCallback((_) { + final RenderBox? renderBoxRed = _key.currentContext!.findRenderObject() as RenderBox?; + _offset = renderBoxRed!.size.width / 2; }); super.initState(); } @@ -170,7 +166,7 @@ class _FlexibleSpaceBarState extends State { @override Widget build(BuildContext context) { final Size size = MediaQuery.of(context).size; - final FlexibleSpaceBarSettings settings = context.dependOnInheritedWidgetOfExactType(); + final FlexibleSpaceBarSettings settings = context.dependOnInheritedWidgetOfExactType()!; assert(settings != null, 'A FlexibleSpaceBar must be wrapped in the widget returned by FlexibleSpaceBar.createSettings().'); final List children = []; @@ -179,7 +175,7 @@ class _FlexibleSpaceBarState extends State { // 0.0 -> Expanded // 1.0 -> Collapsed to toolbar - final double t = (1.0 - (settings.currentExtent - settings.minExtent) / deltaExtent).clamp(0.0, 1.0) as double; + final double t = (1.0 - (settings.currentExtent - settings.minExtent) / deltaExtent).clamp(0.0, 1.0); // background image if (widget.background != null) { @@ -188,7 +184,7 @@ class _FlexibleSpaceBarState extends State { left: 0.0, right: 0.0, height: settings.maxExtent, - child: widget.background, + child: widget.background!, )); } @@ -198,7 +194,7 @@ class _FlexibleSpaceBarState extends State { switch (theme.platform) { case TargetPlatform.iOS: case TargetPlatform.macOS: - title = widget.title; + title = widget.title!; break; case TargetPlatform.android: case TargetPlatform.fuchsia: @@ -218,9 +214,9 @@ class _FlexibleSpaceBarState extends State { final double opacity = settings.toolbarOpacity; if (opacity > 0.0) { - TextStyle titleStyle = theme.primaryTextTheme.headline6; + TextStyle titleStyle = theme.primaryTextTheme.headline6!; titleStyle = titleStyle.copyWith( - color: titleStyle.color.withOpacity(opacity), + color: titleStyle.color!.withOpacity(opacity), fontWeight: t != 0 ? FontWeight.normal : FontWeight.bold ); final bool effectiveCenterTitle = _getEffectiveCenterTitle(theme); diff --git a/lib/widgets/my_refresh_list.dart b/lib/widgets/my_refresh_list.dart index 12bc417ac..0c60a4cdc 100644 --- a/lib/widgets/my_refresh_list.dart +++ b/lib/widgets/my_refresh_list.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -10,10 +9,10 @@ import 'package:flutter_deer/widgets/state_layout.dart'; class DeerListView extends StatefulWidget { const DeerListView({ - Key key, - @required this.itemCount, - @required this.itemBuilder, - @required this.onRefresh, + Key? key, + required this.itemCount, + required this.itemBuilder, + required this.onRefresh, this.loadMore, this.hasMore = false, this.stateType = StateType.empty, @@ -23,7 +22,7 @@ class DeerListView extends StatefulWidget { }): super(key: key); final RefreshCallback onRefresh; - final LoadMoreCallback loadMore; + final LoadMoreCallback? loadMore; final int itemCount; final bool hasMore; final IndexedWidgetBuilder itemBuilder; @@ -31,8 +30,8 @@ class DeerListView extends StatefulWidget { /// 一页的数量,默认为10 final int pageSize; /// padding属性使用时注意会破坏原有的SafeArea,需要自行计算bottom大小 - final EdgeInsetsGeometry padding; - final double itemExtent; + final EdgeInsetsGeometry? padding; + final double? itemExtent; @override _DeerListViewState createState() => _DeerListViewState(); @@ -91,7 +90,7 @@ class _DeerListViewState extends State { return; } _isLoading = true; - await widget.loadMore(); + await widget.loadMore?.call(); _isLoading = false; } @@ -99,7 +98,7 @@ class _DeerListViewState extends State { class MoreWidget extends StatelessWidget { - const MoreWidget(this.itemCount, this.hasMore, this.pageSize, {Key key}): super(key: key); + const MoreWidget(this.itemCount, this.hasMore, this.pageSize, {Key? key}): super(key: key); final int itemCount; final bool hasMore; diff --git a/lib/widgets/my_scroll_view.dart b/lib/widgets/my_scroll_view.dart index 448955a46..9d4aa2fe7 100644 --- a/lib/widgets/my_scroll_view.dart +++ b/lib/widgets/my_scroll_view.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; @@ -13,8 +12,8 @@ class MyScrollView extends StatelessWidget { /// 注意:同时存在底部按钮与keyboardConfig配置时,为保证软键盘弹出高度正常。需要在`Scaffold`使用 `resizeToAvoidBottomInset: defaultTargetPlatform != TargetPlatform.iOS,` /// 除非Android与iOS平台均使用keyboard_actions const MyScrollView({ - Key key, - @required this.children, + Key? key, + required this.children, this.padding, this.physics = const BouncingScrollPhysics(), this.crossAxisAlignment = CrossAxisAlignment.start, @@ -25,11 +24,11 @@ class MyScrollView extends StatelessWidget { }): super(key: key); final List children; - final EdgeInsetsGeometry padding; + final EdgeInsetsGeometry? padding; final ScrollPhysics physics; final CrossAxisAlignment crossAxisAlignment; - final Widget bottomButton; - final KeyboardActionsConfig keyboardConfig; + final Widget? bottomButton; + final KeyboardActionsConfig? keyboardConfig; /// 键盘外部按下将其关闭 final bool tapOutsideToDismiss; /// 默认弹起位置在TextField的文字下面,可以添加此属性继续向上滑动一段距离。用来露出完整的TextField。 @@ -48,7 +47,7 @@ class MyScrollView extends StatelessWidget { if (padding != null) { contents = Padding( - padding: padding, + padding: padding!, child: contents ); } @@ -56,7 +55,7 @@ class MyScrollView extends StatelessWidget { contents = KeyboardActions( isDialog: bottomButton != null, overscroll: overScroll, - config: keyboardConfig, + config: keyboardConfig!, tapOutsideToDismiss: tapOutsideToDismiss, child: contents ); @@ -76,7 +75,7 @@ class MyScrollView extends StatelessWidget { child: contents ), SafeArea( - child: bottomButton + child: bottomButton! ) ], ); diff --git a/lib/widgets/pie_chart/pie_chart.dart b/lib/widgets/pie_chart/pie_chart.dart index 6e85ab39e..58cc32280 100644 --- a/lib/widgets/pie_chart/pie_chart.dart +++ b/lib/widgets/pie_chart/pie_chart.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'dart:math' as math; import 'package:flutter/material.dart'; @@ -11,9 +10,9 @@ import 'package:flutter_deer/widgets/pie_chart/pie_data.dart'; class PieChart extends StatefulWidget { const PieChart({ - Key key, - @required this.data, - @required this.name + Key? key, + required this.data, + required this.name }) : assert(data != null, 'The [data] argument must not be null.'), assert(name != null, 'The [name] argument must not be null.'), super(key: key); @@ -32,10 +31,10 @@ class PieChart extends StatefulWidget { class _PieChartState extends State with SingleTickerProviderStateMixin { - int count; - Animation animation; - AnimationController controller; - List oldData; + late int count; + late Animation animation; + late AnimationController controller; + late List oldData; @override void initState() { @@ -82,7 +81,7 @@ class _PieChartState extends State with SingleTickerProviderStateMixin child: RepaintBoundary( child: AnimatedBuilder( animation: animation, - builder: (_, Widget child) { + builder: (_, Widget? child) { return CustomPaint( painter: PieChartPainter( widget.data, @@ -122,7 +121,7 @@ class PieChartPainter extends CustomPainter { for (int i = 0; i < data.length; i++) { count += data[i].number; } - PieData pieData; + PieData? pieData; if (data.length == 11) { // 获取“其他”数据 pieData = data[10]; @@ -146,22 +145,22 @@ class PieChartPainter extends CustomPainter { _mPaint = Paint(); totalAngle = angleFactor * math.pi * 2; } - - Rect mCircle; - Paint _mPaint; + + late Rect mCircle; + late Paint _mPaint; // 半径 - double mRadius; - List data; - double totalAngle; + late double mRadius; + late List data; + late double totalAngle; // 起始角度 - double prevAngle; - Color bgColor; + late double prevAngle; + late Color bgColor; // 总数量 - int count; + late int count; // 图表名称 - String name; + late String name; @override void paint(Canvas canvas, Size size) { diff --git a/lib/widgets/pie_chart/pie_data.dart b/lib/widgets/pie_chart/pie_data.dart index e87f4b925..cedaac1bc 100644 --- a/lib/widgets/pie_chart/pie_data.dart +++ b/lib/widgets/pie_chart/pie_data.dart @@ -1,15 +1,14 @@ -// @dart=2.9 import 'package:flutter/material.dart'; class PieData { /// 颜色 - Color color; + late Color color; /// 百分比 - num percentage; + late num percentage; /// 数量 - int number; + late int number; /// 名称 - String name; + late String name; @override String toString() => 'name: $name, color: $color, ' diff --git a/lib/widgets/popup_window.dart b/lib/widgets/popup_window.dart index b2e7f86b2..a2bd200a4 100644 --- a/lib/widgets/popup_window.dart +++ b/lib/widgets/popup_window.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; @@ -13,28 +12,27 @@ const double _kWindowCloseIntervalEnd = 2.0 / 3.0; const double _kWindowScreenPadding = 0.0; ///弹窗方法 -Future showPopupWindow({ - @required BuildContext context, - @required RenderBox anchor, - @required Widget child, - Offset offset, - String semanticLabel, +Future showPopupWindow({ + required BuildContext context, + required RenderBox anchor, + required Widget child, + Offset? offset, + String? semanticLabel, bool isShowBg = false, }) { assert(context != null); - String label = semanticLabel; + switch (defaultTargetPlatform) { case TargetPlatform.iOS: case TargetPlatform.macOS: - label = semanticLabel; break; case TargetPlatform.android: case TargetPlatform.fuchsia: case TargetPlatform.linux: case TargetPlatform.windows: - label = semanticLabel ?? MaterialLocalizations.of(context)?.popupMenuLabel; + semanticLabel ??= MaterialLocalizations.of(context).popupMenuLabel; } - final RenderBox overlay = Overlay.of(context).context.findRenderObject() as RenderBox; + final RenderBox? overlay = Overlay.of(context)!.context.findRenderObject() as RenderBox?; // 默认位置锚点下方 final Offset _offset = Offset(0, anchor.size.height); @@ -50,13 +48,13 @@ Future showPopupWindow({ final b = anchor.localToGlobal(anchor.size.bottomLeft(offset), ancestor: overlay); final RelativeRect position = RelativeRect.fromRect( Rect.fromPoints(a, b), - Offset.zero & overlay.size, + Offset.zero & overlay!.size, ); return Navigator.push(context, _PopupWindowRoute( position: position, child: child, - semanticLabel: label, + semanticLabel: semanticLabel, barrierLabel: MaterialLocalizations.of(context).modalBarrierDismissLabel, isShowBg: isShowBg )); @@ -65,21 +63,21 @@ Future showPopupWindow({ ///自定义弹窗路由:参照_PopupMenuRoute修改的 class _PopupWindowRoute extends PopupRoute { _PopupWindowRoute({ - RouteSettings settings, - this.child, - this.position, - this.barrierLabel, - this.semanticLabel, - this.isShowBg, + RouteSettings? settings, + required this.child, + required this.position, + required this.barrierLabel, + required this.semanticLabel, + required this.isShowBg, }) : super(settings: settings); final Widget child; final RelativeRect position; - final String semanticLabel; + final String? semanticLabel; final bool isShowBg; @override - Color get barrierColor => null; + Color? get barrierColor => null; @override bool get barrierDismissible => true; @@ -140,13 +138,13 @@ class _PopupWindowRoute extends PopupRoute { ///自定义弹窗控件:对自定义的弹窗内容进行再包装,添加长宽、动画等约束条件 class _PopupWindow extends StatelessWidget { const _PopupWindow({ - Key key, - this.route, - this.semanticLabel, + Key? key, + required this.route, + required this.semanticLabel, }) : super(key: key); final _PopupWindowRoute route; - final String semanticLabel; + final String? semanticLabel; @override Widget build(BuildContext context) { @@ -163,14 +161,14 @@ class _PopupWindow extends StatelessWidget { ); return AnimatedBuilder( - animation: route.animation, - builder: (BuildContext context, Widget child) { + animation: route.animation!, + builder: (BuildContext context, Widget? child) { return Opacity( - opacity: opacity.evaluate(route.animation), + opacity: opacity.evaluate(route.animation!), child: Align( alignment: AlignmentDirectional.topEnd, - widthFactor: width.evaluate(route.animation), - heightFactor: height.evaluate(route.animation), + widthFactor: width.evaluate(route.animation!), + heightFactor: height.evaluate(route.animation!), child: Semantics( scopesRoute: true, namesRoute: true, diff --git a/lib/widgets/search_bar.dart b/lib/widgets/search_bar.dart index 1d2cc5513..6e70a02ce 100644 --- a/lib/widgets/search_bar.dart +++ b/lib/widgets/search_bar.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter/scheduler.dart'; import 'package:flutter/services.dart'; @@ -12,7 +11,7 @@ import 'load_image.dart'; class SearchBar extends StatefulWidget implements PreferredSizeWidget { const SearchBar({ - Key key, + Key? key, this.hintText = '', this.backImg = 'assets/images/ic_back_black.png', this.onPressed, @@ -20,7 +19,7 @@ class SearchBar extends StatefulWidget implements PreferredSizeWidget { final String backImg; final String hintText; - final Function(String) onPressed; + final Function(String)? onPressed; @override _SearchBarState createState() => _SearchBarState(); @@ -113,7 +112,7 @@ class _SearchBarState extends State { onSubmitted: (String val) { _focus.unfocus(); // 点击软键盘的动作按钮时的回调 - widget.onPressed(val); + widget.onPressed?.call(val); }, decoration: InputDecoration( contentPadding: const EdgeInsets.only(top: 0.0, left: -8.0, right: -16.0, bottom: 14.0), @@ -133,7 +132,7 @@ class _SearchBarState extends State { ), onTap: () { /// https://github.com/flutter/flutter/issues/35848 - SchedulerBinding.instance.addPostFrameCallback((_) { + SchedulerBinding.instance!.addPostFrameCallback((_) { _controller.text = ''; }); }, @@ -152,7 +151,7 @@ class _SearchBarState extends State { text: '搜索', onPressed:() { _focus.unfocus(); - widget.onPressed(_controller.text); + widget.onPressed?.call(_controller.text); }, ); diff --git a/lib/widgets/selected_image.dart b/lib/widgets/selected_image.dart index 475d1c20a..8e9354d04 100644 --- a/lib/widgets/selected_image.dart +++ b/lib/widgets/selected_image.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'dart:io'; import 'package:common_utils/common_utils.dart'; @@ -13,14 +12,14 @@ import 'package:image_picker/image_picker.dart'; class SelectedImage extends StatefulWidget { const SelectedImage({ - Key key, + Key? key, this.url, this.heroTag, this.size = 80.0, }): super(key: key); - final String url; - final String heroTag; + final String? url; + final String? heroTag; final double size; @override @@ -30,8 +29,8 @@ class SelectedImage extends StatefulWidget { class SelectedImageState extends State { final ImagePicker _picker = ImagePicker(); - ImageProvider _imageProvider; - PickedFile pickedFile; + ImageProvider? _imageProvider; + PickedFile? pickedFile; Future _getImage() async { try { @@ -39,9 +38,9 @@ class SelectedImageState extends State { if (pickedFile != null) { if (Device.isWeb) { - _imageProvider = NetworkImage(pickedFile.path); + _imageProvider = NetworkImage(pickedFile!.path); } else { - _imageProvider = FileImage(File(pickedFile.path)); + _imageProvider = FileImage(File(pickedFile!.path)); } } else { @@ -78,7 +77,7 @@ class SelectedImageState extends State { ); if (widget.heroTag != null && !Device.isWeb) { - image = Hero(tag: widget.heroTag, child: image); + image = Hero(tag: widget.heroTag!, child: image); } return Semantics( diff --git a/lib/widgets/selected_item.dart b/lib/widgets/selected_item.dart index 20692d930..b9085950a 100644 --- a/lib/widgets/selected_item.dart +++ b/lib/widgets/selected_item.dart @@ -1,23 +1,22 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; class SelectedItem extends StatelessWidget { const SelectedItem({ - Key key, + Key? key, this.onTap, - @required this.title, + required this.title, this.content = '', this.textAlign = TextAlign.start, this.style }): super(key: key); - final GestureTapCallback onTap; + final GestureTapCallback? onTap; final String title; final String content; final TextAlign textAlign; - final TextStyle style; + final TextStyle? style; @override Widget build(BuildContext context) { diff --git a/lib/widgets/state_layout.dart b/lib/widgets/state_layout.dart index e6a482235..f5f172110 100644 --- a/lib/widgets/state_layout.dart +++ b/lib/widgets/state_layout.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; @@ -9,13 +8,13 @@ import 'package:flutter_deer/widgets/load_image.dart'; class StateLayout extends StatelessWidget { const StateLayout({ - Key key, - @required this.type, + Key? key, + required this.type, this.hintText }):super(key: key); final StateType type; - final String hintText; + final String? hintText; @override Widget build(BuildContext context) { @@ -37,7 +36,7 @@ class StateLayout extends StatelessWidget { const SizedBox(width: double.infinity, height: Dimens.gap_dp16,), Text( hintText ?? type.hintText, - style: Theme.of(context).textTheme.subtitle2.copyWith(fontSize: Dimens.font_sp14), + style: Theme.of(context).textTheme.subtitle2!.copyWith(fontSize: Dimens.font_sp14), ), Gaps.vGap50, ], diff --git a/lib/widgets/text_field_item.dart b/lib/widgets/text_field_item.dart index 57c00c488..421c10876 100644 --- a/lib/widgets/text_field_item.dart +++ b/lib/widgets/text_field_item.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; @@ -9,19 +8,19 @@ import 'package:flutter_deer/util/input_formatter/number_text_input_formatter.da class TextFieldItem extends StatelessWidget { const TextFieldItem({ - Key key, + Key? key, this.controller, - @required this.title, + required this.title, this.keyboardType = TextInputType.text, this.hintText = '', this.focusNode, }): super(key: key); - final TextEditingController controller; + final TextEditingController? controller; final String title; final String hintText; final TextInputType keyboardType; - final FocusNode focusNode; + final FocusNode? focusNode; @override Widget build(BuildContext context) { @@ -63,7 +62,7 @@ class TextFieldItem extends StatelessWidget { ); } - List _getInputFormatters() { + List? _getInputFormatters() { if (keyboardType == const TextInputType.numberWithOptions(decimal: true)) { return [UsNumberTextInputFormatter()]; } From c0679f9cbb43ea3ff5bd3a8f576175fb11962718 Mon Sep 17 00:00:00 2001 From: weilu Date: Fri, 23 Apr 2021 14:21:14 +0800 Subject: [PATCH 013/206] =?UTF-8?q?store=E3=80=81statistics=E3=80=81shop?= =?UTF-8?q?=E3=80=81setting=E3=80=81account=E8=BF=81=E7=A7=BB=E5=AE=8C?= =?UTF-8?q?=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/account/page/account_page.dart | 15 +- .../page/account_record_list_page.dart | 3 +- .../page/add_withdrawal_account_page.dart | 11 +- lib/account/page/bank_select_page.dart | 22 +- lib/account/page/city_select_page.dart | 5 +- .../page/withdrawal_account_list_page.dart | 3 +- lib/account/page/withdrawal_account_page.dart | 7 +- lib/account/page/withdrawal_page.dart | 7 +- .../page/withdrawal_password_page.dart | 3 +- .../page/withdrawal_record_list_page.dart | 3 +- lib/account/page/withdrawal_result_page.dart | 3 +- lib/goods/models/goods_item_entity.dart | 9 +- lib/setting/page/about_page.dart | 7 +- lib/setting/page/account_manager_page.dart | 3 +- lib/setting/page/locale_page.dart | 6 +- lib/setting/page/setting_page.dart | 7 +- lib/setting/page/theme_page.dart | 5 +- lib/setting/setting_router.dart | 1 - lib/setting/widgets/exit_dialog.dart | 3 +- lib/setting/widgets/update_dialog.dart | 6 +- lib/shop/iview/shop_iview.dart | 3 +- lib/shop/page/freight_config_page.dart | 7 +- lib/shop/page/input_text_page.dart | 17 +- lib/shop/page/message_page.dart | 3 +- lib/shop/page/select_address_page.dart | 27 +- lib/shop/page/shop_page.dart | 19 +- lib/shop/page/shop_setting_page.dart | 13 +- lib/shop/presenter/shop_presenter.dart | 5 +- lib/shop/provider/user_provider.dart | 7 +- lib/shop/shop_router.dart | 1 - lib/shop/widgets/pay_type_dialog.dart | 9 +- lib/shop/widgets/price_input_dialog.dart | 7 +- .../widgets/range_price_input_dialog.dart | 7 +- lib/shop/widgets/send_type_dialog.dart | 6 +- .../page/goods_statistics_page.dart | 5 +- .../page/order_statistics_page.dart | 19 +- lib/statistics/page/statistics_page.dart | 5 +- lib/statistics/statistics_router.dart | 3 +- lib/statistics/widgets/selected_date.dart | 9 +- lib/store/page/store_audit_page.dart | 15 +- lib/store/page/store_audit_result_page.dart | 3 +- lib/store/store_router.dart | 1 - lib/util/other_utils.dart | 12 +- lib/widgets/bezier_chart/bezier_chart.dart | 1 - .../bezier_chart/bezier_chart_config.dart | 15 +- .../bezier_chart/bezier_chart_widget.dart | 245 +++++++++--------- lib/widgets/bezier_chart/bezier_line.dart | 23 +- .../my_single_child_scroll_view.dart | 79 +++--- lib/widgets/click_item.dart | 2 +- lib/widgets/state_layout.dart | 2 +- 50 files changed, 330 insertions(+), 369 deletions(-) diff --git a/lib/account/page/account_page.dart b/lib/account/page/account_page.dart index 8fd83bda3..95dd63097 100644 --- a/lib/account/page/account_page.dart +++ b/lib/account/page/account_page.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:common_utils/common_utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_deer/account/widgets/rise_number_text.dart'; @@ -13,7 +12,7 @@ import '../account_router.dart'; /// design/6店铺-账户/index.html#artboard2 class AccountPage extends StatefulWidget { - const AccountPage({Key key}) : super(key: key); + const AccountPage({Key? key}) : super(key: key); @override _AccountPageState createState() => _AccountPageState(); @@ -88,17 +87,17 @@ class _AccountPageState extends State { class _AccountMoney extends StatelessWidget { const _AccountMoney({ - Key key, - @required this.title, - @required this.money, + Key? key, + required this.title, + required this.money, this.alignment, this.moneyTextStyle }): super(key: key); final String title; final String money; - final MainAxisAlignment alignment; - final TextStyle moneyTextStyle; + final MainAxisAlignment? alignment; + final TextStyle? moneyTextStyle; @override Widget build(BuildContext context) { @@ -112,7 +111,7 @@ class _AccountMoney extends StatelessWidget { Text(title, style: const TextStyle(color: Colours.text_disabled, fontSize: Dimens.font_sp12)), Gaps.vGap8, RiseNumberText( - NumUtil.getDoubleByValueStr(money), + NumUtil.getDoubleByValueStr(money) ?? 0, style: moneyTextStyle ?? const TextStyle( color: Colours.text_disabled, fontSize: Dimens.font_sp14, diff --git a/lib/account/page/account_record_list_page.dart b/lib/account/page/account_record_list_page.dart index d0b26d9da..468702934 100644 --- a/lib/account/page/account_record_list_page.dart +++ b/lib/account/page/account_record_list_page.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/util/theme_utils.dart'; @@ -8,7 +7,7 @@ import 'package:sticky_headers/sticky_headers.dart'; /// design/6店铺-账户/index.html#artboard1 class AccountRecordListPage extends StatefulWidget { - const AccountRecordListPage({Key key}) : super(key: key); + const AccountRecordListPage({Key? key}) : super(key: key); @override _AccountRecordListPageState createState() => _AccountRecordListPageState(); diff --git a/lib/account/page/add_withdrawal_account_page.dart b/lib/account/page/add_withdrawal_account_page.dart index 664cec591..03fa01ffa 100644 --- a/lib/account/page/add_withdrawal_account_page.dart +++ b/lib/account/page/add_withdrawal_account_page.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/account/account_router.dart'; import 'package:flutter_deer/account/models/bank_entity.dart'; @@ -17,7 +16,7 @@ import 'package:flutter_deer/widgets/text_field_item.dart'; /// design/6店铺-账户/index.html#artboard29 class AddWithdrawalAccountPage extends StatefulWidget { - const AddWithdrawalAccountPage({Key key}) : super(key: key); + const AddWithdrawalAccountPage({Key? key}) : super(key: key); @override _AddWithdrawalAccountPageState createState() => _AddWithdrawalAccountPageState(); @@ -32,7 +31,7 @@ class _AddWithdrawalAccountPageState extends State { @override Widget build(BuildContext context) { - final TextStyle style = Theme.of(context).textTheme.subtitle2.copyWith(fontSize: Dimens.font_sp14); + final TextStyle? style = Theme.of(context).textTheme.subtitle2?.copyWith(fontSize: Dimens.font_sp14); final List children = [ Gaps.vGap5, SelectedItem( @@ -57,7 +56,7 @@ class _AddWithdrawalAccountPageState extends State { SelectedItem( title: '开 户 地', content: _city.isEmpty ? '选择开户城市' : _city, - style: _city.isEmpty ? style: null, + style: _city.isEmpty ? style : null, onTap: () { NavigatorUtils.pushResult(context, AccountRouter.citySelectPage, (Object result) { setState(() { @@ -75,7 +74,7 @@ class _AddWithdrawalAccountPageState extends State { NavigatorUtils.pushResult(context, '${AccountRouter.bankSelectPage}?type=0', (Object result) { setState(() { final BankEntity model = result as BankEntity; - _bank = model.bankName; + _bank = model.bankName.nullSafe; }); }); }, @@ -88,7 +87,7 @@ class _AddWithdrawalAccountPageState extends State { NavigatorUtils.pushResult(context, '${AccountRouter.bankSelectPage}?type=1', (Object result) { setState(() { final BankEntity model = result as BankEntity; - _bank1 = model.bankName; + _bank1 = model.bankName.nullSafe; }); }); }, diff --git a/lib/account/page/bank_select_page.dart b/lib/account/page/bank_select_page.dart index 06aac2fe6..380e1b7bb 100644 --- a/lib/account/page/bank_select_page.dart +++ b/lib/account/page/bank_select_page.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'dart:convert'; import 'package:flutter/material.dart'; @@ -7,6 +6,7 @@ import 'package:flutter_deer/account/models/bank_entity.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; import 'package:flutter_deer/util/theme_utils.dart'; +import 'package:flutter_deer/util/other_utils.dart'; import 'package:flutter_deer/widgets/my_app_bar.dart'; import 'package:azlistview/azlistview.dart'; import 'package:flutter_deer/widgets/load_image.dart'; @@ -14,7 +14,7 @@ import 'package:flutter_deer/widgets/load_image.dart'; /// design/6店铺-账户/index.html#artboard33 class BankSelectPage extends StatefulWidget { - const BankSelectPage({Key key, this.type}) : super(key: key); + const BankSelectPage({Key? key, this.type = 0}) : super(key: key); final int type; @@ -55,14 +55,16 @@ class _BankSelectPageState extends State { SuspensionUtil.setShowSuspensionStatus(_bankList); _indexBarData = _bankList.map((BankEntity e) { if (e.isShowSuspension) { - return e.firstLetter; + return e.firstLetter.nullSafe; } else { return ''; } }).where((String element) => element.isNotEmpty).toList(); - // add header. - _bankList.insert(0, BankEntity(firstLetter: '常用')); - _indexBarData.insert(0, '常用'); + if (widget.type == 0) { + // add header. + _bankList.insert(0, BankEntity(firstLetter: '常用')); + _indexBarData.insert(0, '常用'); + } setState(() { }); @@ -80,7 +82,7 @@ class _BankSelectPageState extends State { data: _bankList, itemCount: _bankList.length, itemBuilder: (_, int index) { - if (index == 0) { + if (index == 0 && widget.type == 0) { return _buildHeader(); } return _buildListItem(index); @@ -92,7 +94,7 @@ class _BankSelectPageState extends State { indexHintWidth: 96, indexHintHeight: 96, indexHintTextStyle: const TextStyle(fontSize: 26.0, color: Colors.white), - textStyle: Theme.of(context).textTheme.subtitle2, + textStyle: Theme.of(context).textTheme.subtitle2!, downTextStyle: context.isDark ? TextStyles.textSize12 : const TextStyle(fontSize: 12.0, color: Colors.black), ), ), @@ -156,11 +158,11 @@ class _BankSelectPageState extends State { opacity: model.isShowSuspension ? 1 : 0, child: SizedBox( width: 28.0, - child: Text(model.firstLetter), + child: Text(model.firstLetter.nullSafe), ) ), Expanded( - child: Text(model.bankName), + child: Text(model.bankName.nullSafe), ) ], ), diff --git a/lib/account/page/city_select_page.dart b/lib/account/page/city_select_page.dart index f616d4c29..d320e0091 100644 --- a/lib/account/page/city_select_page.dart +++ b/lib/account/page/city_select_page.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'dart:convert'; import 'package:flutter/material.dart'; @@ -14,7 +13,7 @@ import 'package:azlistview/azlistview.dart'; /// design/6店铺-账户/index.html#artboard34 class CitySelectPage extends StatefulWidget { - const CitySelectPage({Key key}) : super(key: key); + const CitySelectPage({Key? key}) : super(key: key); @override _CitySelectPageState createState() => _CitySelectPageState(); @@ -84,7 +83,7 @@ class _CitySelectPageState extends State { indexHintWidth: 96, indexHintHeight: 96, indexHintTextStyle: const TextStyle(fontSize: 26.0, color: Colors.white), - textStyle: Theme.of(context).textTheme.subtitle2, + textStyle: Theme.of(context).textTheme.subtitle2!, downTextStyle: context.isDark ? TextStyles.textSize12 : const TextStyle(fontSize: 12.0, color: Colors.black), ), ), diff --git a/lib/account/page/withdrawal_account_list_page.dart b/lib/account/page/withdrawal_account_list_page.dart index 2237c6111..d62ce88d5 100644 --- a/lib/account/page/withdrawal_account_list_page.dart +++ b/lib/account/page/withdrawal_account_list_page.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/account/models/withdrawal_account_model.dart'; import 'package:flutter_deer/res/resources.dart'; @@ -11,7 +10,7 @@ import '../account_router.dart'; /// design/6店铺-账户/index.html#artboard7 class WithdrawalAccountListPage extends StatefulWidget { - const WithdrawalAccountListPage({Key key}) : super(key: key); + const WithdrawalAccountListPage({Key? key}) : super(key: key); @override _WithdrawalAccountListPageState createState() => _WithdrawalAccountListPageState(); diff --git a/lib/account/page/withdrawal_account_page.dart b/lib/account/page/withdrawal_account_page.dart index 88125de68..d3b148727 100644 --- a/lib/account/page/withdrawal_account_page.dart +++ b/lib/account/page/withdrawal_account_page.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/account/models/withdrawal_account_model.dart'; import 'package:flutter_deer/account/widgets/withdrawal_account_item.dart'; @@ -13,7 +12,7 @@ import '../account_router.dart'; /// design/6店铺-账户/index.html#artboard26 class WithdrawalAccountPage extends StatefulWidget { - const WithdrawalAccountPage({Key key}) : super(key: key); + const WithdrawalAccountPage({Key? key}) : super(key: key); @override _WithdrawalAccountPageState createState() => _WithdrawalAccountPageState(); @@ -72,7 +71,7 @@ class _WithdrawalAccountPageState extends State { void _removeItem(int index) { /// 先移除数据 final WithdrawalAccountModel item = _list.removeAt(index); - _listKey.currentState.removeItem( + _listKey.currentState?.removeItem( index, (_, animation) => sizeItem(item, 0, animation), /// 构建移除Widget duration: _kDuration, ); @@ -95,7 +94,7 @@ class _WithdrawalAccountPageState extends State { }); } else { - _listKey.currentState.insertItem( + _listKey.currentState?.insertItem( index, duration: _kDuration, ); diff --git a/lib/account/page/withdrawal_page.dart b/lib/account/page/withdrawal_page.dart index cee09b362..126dab300 100644 --- a/lib/account/page/withdrawal_page.dart +++ b/lib/account/page/withdrawal_page.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/account/models/withdrawal_account_model.dart'; import 'package:flutter_deer/res/resources.dart'; @@ -15,7 +14,7 @@ import '../account_router.dart'; /// design/6店铺-账户/index.html#artboard3 class WithdrawalPage extends StatefulWidget { - const WithdrawalPage({Key key}) : super(key: key); + const WithdrawalPage({Key? key}) : super(key: key); @override _WithdrawalPageState createState() => _WithdrawalPageState(); @@ -220,14 +219,14 @@ class _WithdrawalPageState extends State { child: RichText( text: type == 0 ? TextSpan( text: '手续费按', - style: Theme.of(context).textTheme.bodyText2.copyWith(fontSize: Dimens.font_sp12), + style: Theme.of(context).textTheme.bodyText2?.copyWith(fontSize: Dimens.font_sp12), children: const [ TextSpan(text: '0.3%', style: TextStyle(color: Color(0xFFFF8547))), TextSpan(text: '收取'), ], ) : TextSpan( text: '预计', - style: Theme.of(context).textTheme.bodyText2.copyWith(fontSize: Dimens.font_sp12), + style: Theme.of(context).textTheme.bodyText2?.copyWith(fontSize: Dimens.font_sp12), children: const [ TextSpan(text: 'T+1天到账(免手续费,T为工作日)', style: TextStyle(color: Color(0xFFFF8547))), ], diff --git a/lib/account/page/withdrawal_password_page.dart b/lib/account/page/withdrawal_password_page.dart index 2a9802cb1..6bccc2ef0 100644 --- a/lib/account/page/withdrawal_password_page.dart +++ b/lib/account/page/withdrawal_password_page.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/account/widgets/sms_verify_dialog.dart'; import 'package:flutter_deer/account/widgets/withdrawal_password_setting.dart'; @@ -12,7 +11,7 @@ import 'package:flutter_deer/widgets/click_item.dart'; /// design/6店铺-账户/index.html#artboard20 class WithdrawalPasswordPage extends StatefulWidget { - const WithdrawalPasswordPage({Key key}) : super(key: key); + const WithdrawalPasswordPage({Key? key}) : super(key: key); @override _WithdrawalPasswordPageState createState() => _WithdrawalPasswordPageState(); diff --git a/lib/account/page/withdrawal_record_list_page.dart b/lib/account/page/withdrawal_record_list_page.dart index 13ce58c49..da90066fa 100644 --- a/lib/account/page/withdrawal_record_list_page.dart +++ b/lib/account/page/withdrawal_record_list_page.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/util/theme_utils.dart'; @@ -8,7 +7,7 @@ import 'package:sticky_headers/sticky_headers.dart'; /// design/6店铺-账户/index.html#artboard19 class WithdrawalRecordListPage extends StatefulWidget { - const WithdrawalRecordListPage({Key key}) : super(key: key); + const WithdrawalRecordListPage({Key? key}) : super(key: key); @override _WithdrawalRecordListPageState createState() => _WithdrawalRecordListPageState(); diff --git a/lib/account/page/withdrawal_result_page.dart b/lib/account/page/withdrawal_result_page.dart index aec7151e0..75479fdd9 100644 --- a/lib/account/page/withdrawal_result_page.dart +++ b/lib/account/page/withdrawal_result_page.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; @@ -9,7 +8,7 @@ import 'package:flutter_deer/widgets/my_button.dart'; /// design/6店铺-账户/index.html#artboard5 class WithdrawalResultPage extends StatefulWidget { - const WithdrawalResultPage({Key key}) : super(key: key); + const WithdrawalResultPage({Key? key}) : super(key: key); @override _WithdrawalResultPageState createState() => _WithdrawalResultPageState(); diff --git a/lib/goods/models/goods_item_entity.dart b/lib/goods/models/goods_item_entity.dart index f1cae53e6..d4f238fcb 100644 --- a/lib/goods/models/goods_item_entity.dart +++ b/lib/goods/models/goods_item_entity.dart @@ -1,7 +1,6 @@ -// @dart=2.9 class GoodsItemEntity { - GoodsItemEntity({this.icon, this.title, this.type}); + GoodsItemEntity({required this.icon, required this.title, required this.type}); GoodsItemEntity.fromJson(Map json) { icon = json['icon'] as String; @@ -9,9 +8,9 @@ class GoodsItemEntity { type = json['type'] as int; } - String icon; - String title; - int type; + late String icon; + late String title; + late int type; Map toJson() { final Map data = {}; diff --git a/lib/setting/page/about_page.dart b/lib/setting/page/about_page.dart index 8803682f0..7b1ff96ed 100644 --- a/lib/setting/page/about_page.dart +++ b/lib/setting/page/about_page.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'dart:async'; import 'dart:math'; @@ -12,7 +11,7 @@ import 'package:flutter_deer/widgets/click_item.dart'; class AboutPage extends StatefulWidget { - const AboutPage({Key key}) : super(key: key); + const AboutPage({Key? key}) : super(key: key); @override _AboutPageState createState() => _AboutPageState(); @@ -40,12 +39,12 @@ class _AboutPageState extends State { return Color.fromARGB(255, red, greed, blue); } - Timer _countdownTimer; + Timer? _countdownTimer; @override void initState() { super.initState(); - WidgetsBinding.instance.addPostFrameCallback((_) async { + WidgetsBinding.instance!.addPostFrameCallback((_) async { // 2s定时器 _countdownTimer = Timer.periodic(const Duration(seconds: 2), (_) { // https://www.jianshu.com/p/e4106b829bff diff --git a/lib/setting/page/account_manager_page.dart b/lib/setting/page/account_manager_page.dart index 513d7a4f3..3a8dc64c0 100644 --- a/lib/setting/page/account_manager_page.dart +++ b/lib/setting/page/account_manager_page.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/login/login_router.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; @@ -10,7 +9,7 @@ import 'package:flutter_deer/widgets/load_image.dart'; /// design/8设置/index.html#artboard1 class AccountManagerPage extends StatefulWidget { - const AccountManagerPage({Key key}) : super(key: key); + const AccountManagerPage({Key? key}) : super(key: key); @override _AccountManagerPageState createState() => _AccountManagerPageState(); diff --git a/lib/setting/page/locale_page.dart b/lib/setting/page/locale_page.dart index 840954132..084bd8a93 100644 --- a/lib/setting/page/locale_page.dart +++ b/lib/setting/page/locale_page.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/common/common.dart'; import 'package:flutter_deer/provider/locale_provider.dart'; @@ -9,7 +8,7 @@ import 'package:provider/provider.dart'; class LocalePage extends StatefulWidget { - const LocalePage({Key key}) : super(key: key); + const LocalePage({Key? key}) : super(key: key); @override _LocalePageState createState() => _LocalePageState(); @@ -21,7 +20,7 @@ class _LocalePageState extends State { @override Widget build(BuildContext context) { - final String locale = SpUtil.getString(Constant.locale); + final String? locale = SpUtil.getString(Constant.locale); String localeMode; switch(locale) { case 'zh': @@ -47,6 +46,7 @@ class _LocalePageState extends State { final String locale = index == 0 ? '' : (index == 1 ? 'zh' : 'en'); context.read().setLocale(locale); Toast.show('当前功能仅登录模块有效'); + setState(() {}); }, child: Container( alignment: Alignment.centerLeft, diff --git a/lib/setting/page/setting_page.dart b/lib/setting/page/setting_page.dart index 313cfeaaa..ee85d445a 100644 --- a/lib/setting/page/setting_page.dart +++ b/lib/setting/page/setting_page.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter_deer/demo/demo_page.dart'; import 'package:flutter_deer/util/device_utils.dart'; import 'package:sp_util/sp_util.dart'; @@ -18,7 +17,7 @@ import '../setting_router.dart'; /// design/8设置/index.html class SettingPage extends StatefulWidget { - const SettingPage({Key key}) : super(key: key); + const SettingPage({Key? key}) : super(key: key); @override _SettingPageState createState() => _SettingPageState(); @@ -79,7 +78,7 @@ class _SettingPageState extends State { } String _getCurrentTheme() { - final String theme = SpUtil.getString(Constant.theme); + final String? theme = SpUtil.getString(Constant.theme); String themeMode; switch(theme) { case 'Dark': @@ -96,7 +95,7 @@ class _SettingPageState extends State { } String _getCurrentLocale() { - final String locale = SpUtil.getString(Constant.locale); + final String? locale = SpUtil.getString(Constant.locale); String localeMode; switch(locale) { case 'zh': diff --git a/lib/setting/page/theme_page.dart b/lib/setting/page/theme_page.dart index d9ba30828..529d000d7 100644 --- a/lib/setting/page/theme_page.dart +++ b/lib/setting/page/theme_page.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/common/common.dart'; import 'package:sp_util/sp_util.dart'; @@ -8,7 +7,7 @@ import 'package:provider/provider.dart'; class ThemePage extends StatefulWidget { - const ThemePage({Key key}) : super(key: key); + const ThemePage({Key? key}) : super(key: key); @override _ThemePageState createState() => _ThemePageState(); @@ -20,7 +19,7 @@ class _ThemePageState extends State { @override Widget build(BuildContext context) { - final String theme = SpUtil.getString(Constant.theme); + final String? theme = SpUtil.getString(Constant.theme); String themeMode; switch(theme) { case 'Dark': diff --git a/lib/setting/setting_router.dart b/lib/setting/setting_router.dart index 7e0c105a0..de6c1b1de 100644 --- a/lib/setting/setting_router.dart +++ b/lib/setting/setting_router.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:fluro/fluro.dart'; import 'package:flutter_deer/routers/i_router.dart'; import 'package:flutter_deer/setting/page/locale_page.dart'; diff --git a/lib/setting/widgets/exit_dialog.dart b/lib/setting/widgets/exit_dialog.dart index 3d65de192..a1aeb7df9 100644 --- a/lib/setting/widgets/exit_dialog.dart +++ b/lib/setting/widgets/exit_dialog.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/login/login_router.dart'; import 'package:flutter_deer/res/styles.dart'; @@ -8,7 +7,7 @@ import 'package:flutter_deer/widgets/base_dialog.dart'; class ExitDialog extends StatefulWidget { const ExitDialog({ - Key key, + Key? key, }) : super(key : key); @override diff --git a/lib/setting/widgets/update_dialog.dart b/lib/setting/widgets/update_dialog.dart index e5c51e4ae..0df6172d7 100644 --- a/lib/setting/widgets/update_dialog.dart +++ b/lib/setting/widgets/update_dialog.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'dart:io'; import 'package:dio/dio.dart'; @@ -10,13 +9,14 @@ import 'package:flutter_deer/routers/fluro_navigator.dart'; import 'package:flutter_deer/util/image_utils.dart'; import 'package:flutter_deer/util/theme_utils.dart'; import 'package:flutter_deer/util/toast_utils.dart'; +import 'package:flutter_deer/util/other_utils.dart'; import 'package:flutter_deer/util/version_utils.dart'; import 'package:flutter_deer/widgets/my_button.dart'; class UpdateDialog extends StatefulWidget { - const UpdateDialog({Key key}) : super(key: key); + const UpdateDialog({Key? key}) : super(key: key); @override _UpdateDialogState createState() => _UpdateDialogState(); @@ -154,7 +154,7 @@ class _UpdateDialogState extends State { setInitDir(initStorageDir: true); await DirectoryUtil.getInstance(); DirectoryUtil.createStorageDirSync(category: 'Download'); - final String path = DirectoryUtil.getStoragePath(fileName: 'deer', category: 'Download', format: 'apk'); + final String path = DirectoryUtil.getStoragePath(fileName: 'deer', category: 'Download', format: 'apk').nullSafe; final File file = File(path); /// 链接可能会失效 await Dio().download('http://imtt.dd.qq.com/16891/apk/FF9625F40FD26F015F4CDED37B6B66AE.apk', diff --git a/lib/shop/iview/shop_iview.dart b/lib/shop/iview/shop_iview.dart index ea5354a78..591abc6a1 100644 --- a/lib/shop/iview/shop_iview.dart +++ b/lib/shop/iview/shop_iview.dart @@ -1,10 +1,9 @@ -// @dart=2.9 import 'package:flutter_deer/mvp/mvps.dart'; import 'package:flutter_deer/shop/models/user_entity.dart'; abstract class ShopIMvpView implements IMvpView { - void setUser(UserEntity user); + void setUser(UserEntity? user); bool get isAccessibilityTest; } diff --git a/lib/shop/page/freight_config_page.dart b/lib/shop/page/freight_config_page.dart index d7d6b0277..c8d97be38 100644 --- a/lib/shop/page/freight_config_page.dart +++ b/lib/shop/page/freight_config_page.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; @@ -16,7 +15,7 @@ import 'package:flutter_deer/widgets/my_card.dart'; /// design/7店铺-店铺配置/index.html class FreightConfigPage extends StatefulWidget { - const FreightConfigPage({Key key}) : super(key: key); + const FreightConfigPage({Key? key}) : super(key: key); @override _FreightConfigPageState createState() => _FreightConfigPageState(); @@ -138,7 +137,7 @@ class _FreightConfigPageState extends State { _getPriceText(index).isEmpty ? '订单金额' : _getPriceText(index), key: Key('订单金额$index'), textAlign: TextAlign.end, - style: _getPriceText(index).isEmpty ? Theme.of(context).textTheme.subtitle2.copyWith(fontSize: Dimens.font_sp14) : null, + style: _getPriceText(index).isEmpty ? Theme.of(context).textTheme.subtitle2?.copyWith(fontSize: Dimens.font_sp14) : null, ), ), )), @@ -196,7 +195,7 @@ class _FreightConfigPageState extends State { child: Text( _list[index].price.isEmpty ? (_list[index].type == 1 ? '运费比率' : '运费金额'): _list[index].price, textAlign: TextAlign.end, - style: _list[index].price.isEmpty ? Theme.of(context).textTheme.subtitle2.copyWith(fontSize: Dimens.font_sp14) : null, + style: _list[index].price.isEmpty ? Theme.of(context).textTheme.subtitle2?.copyWith(fontSize: Dimens.font_sp14) : null, ), ), )), diff --git a/lib/shop/page/input_text_page.dart b/lib/shop/page/input_text_page.dart index 7c9c03ea0..7df16f0ce 100644 --- a/lib/shop/page/input_text_page.dart +++ b/lib/shop/page/input_text_page.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; @@ -9,17 +8,17 @@ import 'package:flutter_deer/widgets/my_app_bar.dart'; class InputTextPage extends StatefulWidget { const InputTextPage({ - Key key, - @required this.title, + Key? key, + required this.title, this.content, this.hintText, this.keyboardType = TextInputType.text, }) : super(key : key); final String title; - final String content; - final String hintText; - final TextInputType keyboardType; + final String? content; + final String? hintText; + final TextInputType? keyboardType; @override _InputTextPageState createState() => _InputTextPageState(); @@ -28,13 +27,13 @@ class InputTextPage extends StatefulWidget { class _InputTextPageState extends State { final TextEditingController _controller = TextEditingController(); - List _inputFormatters; - int _maxLength; + List? _inputFormatters; + late int _maxLength; @override void initState() { super.initState(); - _controller.text = widget.content; + _controller.text = widget.content ?? ''; _maxLength = widget.keyboardType == TextInputType.phone ? 11 : 30; _inputFormatters = widget.keyboardType == TextInputType.phone ? [FilteringTextInputFormatter.allow(RegExp('[0-9]'))] : null; } diff --git a/lib/shop/page/message_page.dart b/lib/shop/page/message_page.dart index 9328a6a4f..aa40b3b0b 100644 --- a/lib/shop/page/message_page.dart +++ b/lib/shop/page/message_page.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; @@ -8,7 +7,7 @@ import 'package:flutter_deer/widgets/my_card.dart'; /// design/8设置/index.html#artboard2 class MessagePage extends StatefulWidget { - const MessagePage({Key key}) : super(key: key); + const MessagePage({Key? key}) : super(key: key); @override _MessagePageState createState() => _MessagePageState(); diff --git a/lib/shop/page/select_address_page.dart b/lib/shop/page/select_address_page.dart index 0a6cae804..ba30d93d0 100644 --- a/lib/shop/page/select_address_page.dart +++ b/lib/shop/page/select_address_page.dart @@ -1,14 +1,14 @@ -// @dart=2.9 import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_2d_amap/flutter_2d_amap.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; import 'package:flutter_deer/widgets/my_button.dart'; +import 'package:flutter_deer/util/other_utils.dart'; import 'package:flutter_deer/widgets/search_bar.dart'; class AddressSelectPage extends StatefulWidget { - const AddressSelectPage({Key key}) : super(key: key); + const AddressSelectPage({Key? key}) : super(key: key); @override _AddressSelectPageState createState() => _AddressSelectPageState(); @@ -19,7 +19,7 @@ class _AddressSelectPageState extends State { List _list = []; int _index = 0; final ScrollController _controller = ScrollController(); - AMap2DController _aMap2DController; + AMap2DController? _aMap2DController; @override void dispose() { @@ -46,9 +46,7 @@ class _AddressSelectPageState extends State { onPressed: (text) { _controller.animateTo(0.0, duration: const Duration(milliseconds: 10), curve: Curves.ease); _index = 0; - if (_aMap2DController != null) { - _aMap2DController.search(text); - } + _aMap2DController?.search(text); }, ), body: SafeArea( @@ -88,9 +86,7 @@ class _AddressSelectPageState extends State { date: _list[index], onTap: () { _index = index; - if (_aMap2DController != null) { - _aMap2DController.move(_list[index].latitude, _list[index].longitude); - } + _aMap2DController?.move(_list[index].latitude.nullSafe, _list[index].longitude.nullSafe); setState(() { }); }, @@ -114,15 +110,15 @@ class _AddressSelectPageState extends State { class _AddressItem extends StatelessWidget { const _AddressItem({ - Key key, - @required this.date, + Key? key, + required this.date, this.isSelected = false, this.onTap, }) : super(key: key); final PoiSearch date; final bool isSelected; - final GestureTapCallback onTap; + final GestureTapCallback? onTap; @override Widget build(BuildContext context) { @@ -136,10 +132,9 @@ class _AddressItem extends StatelessWidget { children: [ Expanded( child: Text( - date.provinceName + ' ' + - date.cityName + ' ' + - date.adName + ' ' + - date.title, + date.provinceName.nullSafe + ' ' + + date.cityName.nullSafe + ' ' + + date.adName.nullSafe + ' ' + date.title.nullSafe, ), ), Visibility( diff --git a/lib/shop/page/shop_page.dart b/lib/shop/page/shop_page.dart index e746461d4..afbfecf3c 100644 --- a/lib/shop/page/shop_page.dart +++ b/lib/shop/page/shop_page.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/account/account_router.dart'; import 'package:flutter_deer/mvp/base_page.dart'; @@ -19,7 +18,7 @@ import 'package:provider/provider.dart'; class ShopPage extends StatefulWidget { const ShopPage({ - Key key, + Key? key, this.isAccessibilityTest = false, }) : super(key : key); @@ -38,7 +37,7 @@ class _ShopPageState extends State with BasePageMixin with BasePageMixin with BasePageMixin with BasePageMixin _ShopSettingPageState(); @@ -175,10 +173,9 @@ class _ShopSettingPageState extends State { NavigatorUtils.pushResult(context, ShopRouter.addressSelectPage, (result) { setState(() { final PoiSearch model = result as PoiSearch; - _address = model.provinceName + ' ' + - model.cityName + ' ' + - model.adName + ' ' + - model.title; + _address = model.provinceName.nullSafe + ' ' + + model.cityName.nullSafe + ' ' + + model.adName.nullSafe + ' ' + model.title.nullSafe; }); }); }, @@ -211,7 +208,7 @@ class _ShopSettingPageState extends State { } void _goInputTextPage(BuildContext context, String title, - String hintText, String content, Function(Object) function, {TextInputType keyboardType}) { + String hintText, String content, Function(Object?) function, {TextInputType? keyboardType}) { AppNavigator.pushResult( context, InputTextPage( diff --git a/lib/shop/presenter/shop_presenter.dart b/lib/shop/presenter/shop_presenter.dart index 2bb93243d..6c0c85264 100644 --- a/lib/shop/presenter/shop_presenter.dart +++ b/lib/shop/presenter/shop_presenter.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/account/models/city_entity.dart'; import 'package:flutter_deer/mvp/base_page_presenter.dart'; @@ -12,7 +11,7 @@ class ShopPagePresenter extends BasePagePresenter { @override void initState() { - WidgetsBinding.instance.addPostFrameCallback((_) { + WidgetsBinding.instance!.addPostFrameCallback((_) { if (view.isAccessibilityTest) { return; } @@ -33,7 +32,7 @@ class ShopPagePresenter extends BasePagePresenter { asyncRequestNetwork>(Method.get, url: HttpApi.subscriptions, onSuccess: (data) { - data.forEach((element) { + data?.forEach((element) { Log.d(element.name); }); }, diff --git a/lib/shop/provider/user_provider.dart b/lib/shop/provider/user_provider.dart index 08a882657..fcd7ac5fa 100644 --- a/lib/shop/provider/user_provider.dart +++ b/lib/shop/provider/user_provider.dart @@ -1,13 +1,12 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/shop/models/user_entity.dart'; class UserProvider extends ChangeNotifier { - UserEntity _user; - UserEntity get user => _user; + UserEntity? _user; + UserEntity? get user => _user; - void setUser(UserEntity user) { + void setUser(UserEntity? user) { _user = user; notifyListeners(); } diff --git a/lib/shop/shop_router.dart b/lib/shop/shop_router.dart index 013402645..08207a42d 100644 --- a/lib/shop/shop_router.dart +++ b/lib/shop/shop_router.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:fluro/fluro.dart'; import 'package:flutter_deer/routers/i_router.dart'; diff --git a/lib/shop/widgets/pay_type_dialog.dart b/lib/shop/widgets/pay_type_dialog.dart index 86f4d7a44..10254185a 100644 --- a/lib/shop/widgets/pay_type_dialog.dart +++ b/lib/shop/widgets/pay_type_dialog.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; @@ -11,12 +10,12 @@ import 'package:flutter_deer/widgets/load_image.dart'; class PayTypeDialog extends StatefulWidget { const PayTypeDialog({ - Key key, + Key? key, this.value, - this.onPressed, + required this.onPressed, }) : super(key : key); - final List value; + final List? value; final Function(List) onPressed; @override @@ -26,7 +25,7 @@ class PayTypeDialog extends StatefulWidget { class _PayTypeDialog extends State { - List _selectValue; + late List _selectValue; final List _list = ['线上支付', '对公转账', '货到付款']; Widget _buildItem(int index) { diff --git a/lib/shop/widgets/price_input_dialog.dart b/lib/shop/widgets/price_input_dialog.dart index 78d854d06..f50138299 100644 --- a/lib/shop/widgets/price_input_dialog.dart +++ b/lib/shop/widgets/price_input_dialog.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; @@ -12,13 +11,13 @@ import 'package:flutter_deer/widgets/base_dialog.dart'; class PriceInputDialog extends StatefulWidget { const PriceInputDialog({ - Key key, + Key? key, this.title, this.inputMaxPrice = 100000, - this.onPressed, + required this.onPressed, }) : super(key : key); - final String title; + final String? title; final double inputMaxPrice; final Function(String) onPressed; diff --git a/lib/shop/widgets/range_price_input_dialog.dart b/lib/shop/widgets/range_price_input_dialog.dart index ecae0c3e3..e2baf37d5 100644 --- a/lib/shop/widgets/range_price_input_dialog.dart +++ b/lib/shop/widgets/range_price_input_dialog.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; @@ -11,12 +10,12 @@ import 'package:flutter_deer/widgets/base_dialog.dart'; class RangePriceInputDialog extends StatefulWidget { const RangePriceInputDialog({ - Key key, + Key? key, this.title, - this.onPressed, + required this.onPressed, }) : super(key : key); - final String title; + final String? title; final Function(String, String) onPressed; @override diff --git a/lib/shop/widgets/send_type_dialog.dart b/lib/shop/widgets/send_type_dialog.dart index dae39f34a..50a4991f0 100644 --- a/lib/shop/widgets/send_type_dialog.dart +++ b/lib/shop/widgets/send_type_dialog.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; @@ -10,15 +9,14 @@ import 'package:flutter_deer/widgets/load_image.dart'; class SendTypeDialog extends StatefulWidget { const SendTypeDialog({ - Key key, - this.onPressed, + Key? key, + required this.onPressed, }) : super(key : key); final Function(int, String) onPressed; @override _SendTypeDialog createState() => _SendTypeDialog(); - } class _SendTypeDialog extends State { diff --git a/lib/statistics/page/goods_statistics_page.dart b/lib/statistics/page/goods_statistics_page.dart index afeaa3458..74bc0f396 100644 --- a/lib/statistics/page/goods_statistics_page.dart +++ b/lib/statistics/page/goods_statistics_page.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'dart:math'; import 'package:flutter/material.dart'; @@ -16,7 +15,7 @@ import 'package:flutter_deer/widgets/pie_chart/pie_data.dart'; /// design/5统计/index.html#artboard11 class GoodsStatisticsPage extends StatefulWidget { - const GoodsStatisticsPage({Key key}) : super(key: key); + const GoodsStatisticsPage({Key? key}) : super(key: key); @override _GoodsStatisticsPageState createState() => _GoodsStatisticsPageState(); @@ -24,7 +23,7 @@ class GoodsStatisticsPage extends StatefulWidget { class _GoodsStatisticsPageState extends State { - DateTime _initialDay; + late DateTime _initialDay; int _selectedIndex = 2; /// false 待配货 true 已配货 bool _type = false; diff --git a/lib/statistics/page/order_statistics_page.dart b/lib/statistics/page/order_statistics_page.dart index c154efb28..8ee9ca5ce 100644 --- a/lib/statistics/page/order_statistics_page.dart +++ b/lib/statistics/page/order_statistics_page.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'dart:math'; import 'package:common_utils/common_utils.dart'; @@ -17,7 +16,7 @@ import 'package:flutter_deer/util/date_utils.dart' as date; /// design/5统计/index.html#artboard6 class OrderStatisticsPage extends StatefulWidget { - const OrderStatisticsPage(this.index, {Key key}) : super(key: key); + const OrderStatisticsPage(this.index, {Key? key}) : super(key: key); final int index; @@ -28,18 +27,18 @@ class OrderStatisticsPage extends StatefulWidget { class _OrderStatisticsPageState extends State with TickerProviderStateMixin { int _selectedIndex = 2; - DateTime _initialDay; - Iterable _weeksDays; - List _currentMonthsDays; + late DateTime _initialDay; + late Iterable _weeksDays; + late List _currentMonthsDays; // 周视图中选择的日期 - int _selectedWeekDay; + late int _selectedWeekDay; // 月视图中选择的日期 - DateTime _selectedDay; + late DateTime _selectedDay; // 年视图中选择的月份 - int _selectedMonth; + late int _selectedMonth; final List _monthList = []; bool _isExpanded = true; - Color _unSelectedTextColor; + late Color _unSelectedTextColor; static const List _weeks = ['周一', '周二', '周三', '周四', '周五', '周六', '周日']; @@ -254,7 +253,7 @@ class _OrderStatisticsPageState extends State with TickerPr } Widget _buildCalendar() { - List children; + List children = []; if (_selectedIndex == 0) { children = _builderYearCalendar(); } else if (_selectedIndex == 1) { diff --git a/lib/statistics/page/statistics_page.dart b/lib/statistics/page/statistics_page.dart index 56c31abfc..a8848a429 100644 --- a/lib/statistics/page/statistics_page.dart +++ b/lib/statistics/page/statistics_page.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/order/page/order_page.dart'; import 'package:flutter_deer/res/resources.dart'; @@ -15,7 +14,7 @@ import 'package:flutter_deer/widgets/my_flexible_space_bar.dart'; /// design/5统计/index.html class StatisticsPage extends StatefulWidget { - const StatisticsPage({Key key}) : super(key: key); + const StatisticsPage({Key? key}) : super(key: key); @override _StatisticsPageState createState() => _StatisticsPageState(); @@ -113,7 +112,7 @@ class _StatisticsPageState extends State { class _StatisticsItem extends StatelessWidget { - const _StatisticsItem(this.title, this.img, this.index, {Key key}): super(key: key); + const _StatisticsItem(this.title, this.img, this.index, {Key? key}): super(key: key); final String title; final String img; diff --git a/lib/statistics/statistics_router.dart b/lib/statistics/statistics_router.dart index 2d6643791..a203102ab 100644 --- a/lib/statistics/statistics_router.dart +++ b/lib/statistics/statistics_router.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:fluro/fluro.dart'; import 'package:flutter_deer/routers/i_router.dart'; @@ -14,7 +13,7 @@ class StatisticsRouter implements IRouterProvider{ @override void initRouter(FluroRouter router) { router.define(orderStatisticsPage, handler: Handler(handlerFunc: (_, params) { - final int index = int.parse(params['index']?.first); + final int index = int.parse(params['index']?.first ?? '0'); return OrderStatisticsPage(index); })); router.define(goodsStatisticsPage, handler: Handler(handlerFunc: (_, __) => const GoodsStatisticsPage())); diff --git a/lib/statistics/widgets/selected_date.dart b/lib/statistics/widgets/selected_date.dart index 09cee9bf9..bebe5dab2 100644 --- a/lib/statistics/widgets/selected_date.dart +++ b/lib/statistics/widgets/selected_date.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/util/theme_utils.dart'; @@ -6,10 +5,10 @@ import 'package:flutter_deer/util/theme_utils.dart'; class SelectedDateButton extends StatelessWidget { const SelectedDateButton(this.text,{ - Key key, + Key? key, this.fontSize = 14.0, this.selected = false, - @required this.unSelectedTextColor, + required this.unSelectedTextColor, this.enable = true, this.onTap, this.semanticsLabel @@ -20,9 +19,9 @@ class SelectedDateButton extends StatelessWidget { final double fontSize; final bool selected; final Color unSelectedTextColor; - final GestureTapCallback onTap; + final GestureTapCallback? onTap; final bool enable; - final String semanticsLabel; + final String? semanticsLabel; @override Widget build(BuildContext context) { diff --git a/lib/store/page/store_audit_page.dart b/lib/store/page/store_audit_page.dart index f008e6224..811aa7af5 100644 --- a/lib/store/page/store_audit_page.dart +++ b/lib/store/page/store_audit_page.dart @@ -1,9 +1,9 @@ -// @dart=2.9 import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_2d_amap/flutter_2d_amap.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; import 'package:flutter_deer/shop/shop_router.dart'; +import 'package:flutter_deer/util/other_utils.dart'; import 'package:flutter_deer/store/store_router.dart'; import 'package:flutter_deer/util/theme_utils.dart'; import 'package:flutter_deer/widgets/my_button.dart'; @@ -20,7 +20,7 @@ import 'package:keyboard_actions/keyboard_actions.dart'; /// design/2店铺审核/index.html class StoreAuditPage extends StatefulWidget { - const StoreAuditPage({Key key}) : super(key: key); + const StoreAuditPage({Key? key}) : super(key: key); @override _StoreAuditPageState createState() => _StoreAuditPageState(); @@ -83,7 +83,7 @@ class _StoreAuditPageState extends State { padding: const EdgeInsets.only(left: 16.0, right: 16.0, bottom: 8.0), child: MyButton( onPressed: () { - debugPrint('文件路径:${_imageGlobalKey.currentState.pickedFile?.path}'); + debugPrint('文件路径:${_imageGlobalKey.currentState?.pickedFile?.path}'); NavigatorUtils.push(context, StoreRouter.auditResultPage); }, text: '提交', @@ -112,7 +112,7 @@ class _StoreAuditPageState extends State { Center( child: Text( '店主手持身份证或营业执照', - style: Theme.of(context).textTheme.subtitle2.copyWith(fontSize: Dimens.font_sp14), + style: Theme.of(context).textTheme.subtitle2?.copyWith(fontSize: Dimens.font_sp14), ), ), Gaps.vGap16, @@ -133,10 +133,9 @@ class _StoreAuditPageState extends State { NavigatorUtils.pushResult(context, ShopRouter.addressSelectPage, (result) { setState(() { final PoiSearch model = result as PoiSearch; - _address = model.provinceName + ' ' + - model.cityName + ' ' + - model.adName + ' ' + - model.title; + _address = model.provinceName.nullSafe + ' ' + + model.cityName.nullSafe + ' ' + + model.adName.nullSafe + ' ' + model.title.nullSafe; }); }); } diff --git a/lib/store/page/store_audit_result_page.dart b/lib/store/page/store_audit_result_page.dart index b965beb0d..b5cf3c681 100644 --- a/lib/store/page/store_audit_result_page.dart +++ b/lib/store/page/store_audit_result_page.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; @@ -10,7 +9,7 @@ import 'package:flutter_deer/widgets/my_button.dart'; /// design/2店铺审核/index.html#artboard2 class StoreAuditResultPage extends StatefulWidget { - const StoreAuditResultPage({Key key}) : super(key: key); + const StoreAuditResultPage({Key? key}) : super(key: key); @override _StoreAuditResultPageState createState() => _StoreAuditResultPageState(); diff --git a/lib/store/store_router.dart b/lib/store/store_router.dart index 796de0113..048ebd89b 100644 --- a/lib/store/store_router.dart +++ b/lib/store/store_router.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:fluro/fluro.dart'; import 'package:flutter_deer/routers/i_router.dart'; diff --git a/lib/util/other_utils.dart b/lib/util/other_utils.dart index 0d6c71c4a..6c3563e6a 100644 --- a/lib/util/other_utils.dart +++ b/lib/util/other_utils.dart @@ -3,6 +3,7 @@ import 'dart:ui'; import 'package:common_utils/common_utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_deer/common/common.dart'; +import 'package:flutter_deer/util/device_utils.dart'; import 'package:flutter_deer/util/theme_utils.dart'; import 'package:flutter_deer/util/toast_utils.dart'; import 'package:keyboard_actions/keyboard_actions_item.dart'; @@ -59,7 +60,11 @@ class Utils { static String? getCurrLocale() { final String locale = SpUtil.getString(Constant.locale)!; if (locale == '') { - return window.locale?.languageCode; // 2.0.0 web问题:https://github.com/flutter/flutter/issues/79351 + if (Device.isWeb) { + return window.locale?.languageCode; // 2.0.0 web问题:https://github.com/flutter/flutter/issues/79351 + } else { + return window.locale.languageCode; + } } return locale; } @@ -107,4 +112,9 @@ Widget _buildDialogTransitions(BuildContext context, Animation animation child: child, ), ); +} + +/// String 空安全处理 +extension StringExtension on String? { + String get nullSafe => this ?? ''; } \ No newline at end of file diff --git a/lib/widgets/bezier_chart/bezier_chart.dart b/lib/widgets/bezier_chart/bezier_chart.dart index f298f7cc9..a45335263 100644 --- a/lib/widgets/bezier_chart/bezier_chart.dart +++ b/lib/widgets/bezier_chart/bezier_chart.dart @@ -1,4 +1,3 @@ -// @dart=2.9 library bezier_chart; export 'bezier_chart_config.dart'; diff --git a/lib/widgets/bezier_chart/bezier_chart_config.dart b/lib/widgets/bezier_chart/bezier_chart_config.dart index 79d0b41d4..1f872c45a 100644 --- a/lib/widgets/bezier_chart/bezier_chart_config.dart +++ b/lib/widgets/bezier_chart/bezier_chart_config.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; @@ -47,7 +46,7 @@ class BezierChartConfig { final TextStyle bubbleIndicatorValueStyle; ///NumberFormat for the value displayed inside the bubble indicator - final NumberFormat bubbleIndicatorValueFormat; + final NumberFormat? bubbleIndicatorValueFormat; ///TextStyle for the label displayed inside the bubble indicator final TextStyle bubbleIndicatorLabelStyle; @@ -56,7 +55,7 @@ class BezierChartConfig { final Color backgroundColor; ///Gradient of the background of the chart - final LinearGradient backgroundGradient; + final LinearGradient? backgroundGradient; ///`true` if you want to display the value of the Y axis, [false] by default final bool displayYAxis; @@ -64,16 +63,16 @@ class BezierChartConfig { ///If [displayYAxis] is true, then you can set a positive value to display the steps of Y axis values ///e.g 1: stepsYAxis : 5 , if your maxValue is 100, then the Y values should be: [0,5,10,15 .... 100] ///e.g 2: stepsYAxis : 10 , if your maxValue is 100, then the Y values should be: [10,20,30,40 .... 100] - final int stepsYAxis; + final int? stepsYAxis; ///`true` if you want to start the values of Y axis from the minimum value of your Y values. final bool startYAxisFromNonZeroValue; ///TextStyle of the text of the Y Axis values - final TextStyle yAxisTextStyle; + final TextStyle? yAxisTextStyle; ///TextStyle of the text of the X Axis values - final TextStyle xAxisTextStyle; + final TextStyle? xAxisTextStyle; ///Height of the footer final double footerHeight; @@ -89,7 +88,7 @@ class BezierChartConfig { final bool pinchZoom; ///If the `contentWidth` is upper than the current width then the content will be scrollable (only valid for `bezierChartScale` = `CUSTOM`) - final double contentWidth; + final double? contentWidth; ///`true` if you want to display a vertical line on each X data point, it only works when there is one `BezierLine`. final bool displayLinesXAxis; @@ -145,7 +144,7 @@ class BezierChartConfig { this.bubbleIndicatorValueFormat, this.physics = const AlwaysScrollableScrollPhysics(), this.updatePositionOnTap = false, - bool verticalLineFullHeight, + bool? verticalLineFullHeight, }) : this.verticalLineFullHeight = verticalLineFullHeight ?? verticalIndicatorFixedPosition; } \ No newline at end of file diff --git a/lib/widgets/bezier_chart/bezier_chart_widget.dart b/lib/widgets/bezier_chart/bezier_chart_widget.dart index fb781e8c3..c17c8521f 100644 --- a/lib/widgets/bezier_chart/bezier_chart_widget.dart +++ b/lib/widgets/bezier_chart/bezier_chart_widget.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'dart:math'; import 'dart:ui'; import 'package:flutter/foundation.dart'; @@ -31,58 +30,58 @@ class BezierChart extends StatefulWidget { ///[Optional] This callback only works if the `BezierChartScale` is `BezierChartScale.CUSTOM` otherwise it will be ignored ///This is used to display a custom footer value based on the current 'x' value - final FooterValueBuilder footerValueBuilder; + final FooterValueBuilder? footerValueBuilder; ///[Optional] This callback only works if the `BezierChartScale` is `BezierChartScale.CUSTOM` otherwise it will be ignored ///This is used to display a custom bubble label value based on the current 'x' value - final FooterValueBuilder bubbleLabelValueBuilder; + final FooterValueBuilder? bubbleLabelValueBuilder; ///[Optional] This callback only works if the `BezierChartScale` is Date type otherwise it will be ignored ///This is used to display a custom footer value based on the current 'x' value - final FooterDateTimeBuilder footerDateTimeBuilder; + final FooterDateTimeBuilder? footerDateTimeBuilder; ///[Optional] This callback only works if the `BezierChartScale` is Date type otherwise it will be ignored ///This is used to display a custom bubble label value based on the current 'x' value - final FooterDateTimeBuilder bubbleLabelDateTimeBuilder; + final FooterDateTimeBuilder? bubbleLabelDateTimeBuilder; ///[Optional] This callback notify when the display indicator is visible or not - final ValueChanged onIndicatorVisible; + final ValueChanged? onIndicatorVisible; ///[Optional] This callback will display the current `double` value selected by the indicator ///Only works when the `BezierChartScale` is not `BezierChartScale.CUSTOM` - final ValueChanged onValueSelected; + final ValueChanged? onValueSelected; ///[Optional] This callback will display the current `DateTime` selected by the indicator ///Only works when the `BezierChartScale` is date type - final ValueChanged onDateTimeSelected; + final ValueChanged? onDateTimeSelected; ///This value is required only if the `BezierChartScale` is not `BezierChartScale.CUSTOM` - final DateTime fromDate; + final DateTime? fromDate; ///This value is required only if the `BezierChartScale` is not `BezierChartScale.CUSTOM` - final DateTime toDate; + final DateTime? toDate; ///This value represents the date selected to display the info in the Chart ///For `BezierChartScale.HOURLY` it will use year, month, day and hour ///For `BezierChartScale.WEEKLY` it will use year, month and day ///For `BezierChartScale.MONTHLY` it will use year, month ///For `BezierChartScale.YEARLY` it will use year - final DateTime selectedDate; + final DateTime? selectedDate; ///This value represents the value selected to display the info in the Chart ///It's only for `BezierChartScale.CUSTOM` - final double selectedValue; + final double? selectedValue; ///Beziers used in the Axis Y final List series; ///Notify if the `BezierChartScale` changed, it only works with date scales. - final ValueChanged onScaleChanged; + final ValueChanged? onScaleChanged; BezierChart({ - Key key, - this.config, - this.xAxisCustomValues, + Key? key, + required this.config, + required this.xAxisCustomValues, this.footerValueBuilder, this.bubbleLabelValueBuilder, this.footerDateTimeBuilder, @@ -95,8 +94,8 @@ class BezierChart extends StatefulWidget { this.onValueSelected, this.selectedValue, this.bezierChartAggregation = BezierChartAggregation.SUM, - @required this.bezierChartScale, - @required this.series, + required this.bezierChartScale, + required this.series, this.onScaleChanged, }) : assert( (bezierChartScale == BezierChartScale.CUSTOM && @@ -135,7 +134,7 @@ class BezierChart extends StatefulWidget { ), assert( (((bezierChartScale != BezierChartScale.CUSTOM) && - toDate.isAfter(fromDate)) || + toDate!.isAfter(fromDate!)) || (bezierChartScale == BezierChartScale.CUSTOM && fromDate == null && toDate == null)), @@ -150,12 +149,12 @@ class BezierChart extends StatefulWidget { @visibleForTesting class BezierChartState extends State with SingleTickerProviderStateMixin { - AnimationController _animationController; - ScrollController _scrollController; + late AnimationController _animationController; + late ScrollController _scrollController; GlobalKey _keyScroll = GlobalKey(); ///Track the current position when dragging the indicator - Offset _verticalIndicatorPosition; + Offset? _verticalIndicatorPosition; bool _displayIndicator = false; ///padding for leading and trailing of the chart @@ -175,10 +174,10 @@ class BezierChartState extends State double _currentScale = 1.0; ///This value allow us to get the last scale used when start the pinch/zoom again - double _previousScale; + late double _previousScale; ///The current chart scale - BezierChartScale _currentBezierChartScale; + late BezierChartScale _currentBezierChartScale; double _lastValueSnapped = double.infinity; bool get isPinchZoomActive => (_touchFingers > 1 && widget.config.pinchZoom); @@ -190,13 +189,13 @@ class BezierChartState extends State bool _isScrollable = false; ///Calculate all of the values related to the Y axis - List _yValues; + late List _yValues; ///Values from valueBuilder - List _tempYValues; + late List _tempYValues; - DateTime _dateTimeSelected; - double _valueSelected; + DateTime? _dateTimeSelected; + double? _valueSelected; GlobalKey _keyLastYAxisItem = GlobalKey(); double _yAxisWidth = 0.0; @@ -210,7 +209,7 @@ class BezierChartState extends State ///Update and refresh the position based on the current screen void _updatePosition(Offset globalPosition) { - RenderBox renderBox = context.findRenderObject(); + final RenderBox renderBox = context.findRenderObject() as RenderBox; final position = renderBox.globalToLocal(globalPosition); if (position == null) return; return setState( @@ -232,7 +231,7 @@ class BezierChartState extends State from: 0.0, ); if (widget.onIndicatorVisible != null) { - widget.onIndicatorVisible(true); + widget.onIndicatorVisible!(true); } } _onDataPointSnap(double.maxFinite); @@ -243,7 +242,7 @@ class BezierChartState extends State _onHideIndicator() { if (_displayIndicator) { if (widget.onIndicatorVisible != null) { - widget.onIndicatorVisible(false); + widget.onIndicatorVisible!(false); } _animationController.reverse(from: 1.0).whenCompleteOrCancel( () { @@ -274,7 +273,7 @@ class BezierChartState extends State _checkMissingValues(DateTime newDate) { for (BezierLine line in widget.series) { if (line.onMissingValue != null) { - final newValue = line.onMissingValue(newDate); + final newValue = line.onMissingValue!(newDate); if (!_tempYValues.contains(newValue)) _tempYValues.add(newValue); //if there is no missingvalue specified we should use 0 as minimum value to avoid overlap } else if (widget.config.startYAxisFromNonZeroValue && @@ -294,9 +293,9 @@ class BezierChartState extends State .map((val) => DataPoint(value: val, xAxis: val)) .toList(); } else if (scale == BezierChartScale.HOURLY) { - final hours = widget.toDate.difference(widget.fromDate).inHours; + final hours = widget.toDate!.difference(widget.fromDate!).inHours; for (int i = 0; i < hours; i++) { - final tempDate = widget.fromDate.add( + final tempDate = widget.fromDate!.add( Duration( hours: (i + 1), ), @@ -309,11 +308,11 @@ class BezierChartState extends State _checkMissingValues(newDate); } } else if (scale == BezierChartScale.WEEKLY) { - final days = _convertToDateOnly(widget.toDate) - .difference(_convertToDateOnly(widget.fromDate)) + final days = _convertToDateOnly(widget.toDate!) + .difference(_convertToDateOnly(widget.fromDate!)) .inDays; for (int i = 0; i <= days; i++) { - final newDate = widget.fromDate.add( + final newDate = widget.fromDate!.add( Duration( days: (i), ), @@ -325,12 +324,12 @@ class BezierChartState extends State } } else if (scale == BezierChartScale.MONTHLY) { DateTime startDate = DateTime( - widget.fromDate.year, - widget.fromDate.month, + widget.fromDate!.year, + widget.fromDate!.month, ); DateTime endDate = DateTime( - widget.toDate.year, - widget.toDate.month, + widget.toDate!.year, + widget.toDate!.month, ); for (int i = 0; (startDate.isBefore(endDate) || areEqualDates(startDate, endDate)); @@ -343,10 +342,10 @@ class BezierChartState extends State } } else if (scale == BezierChartScale.YEARLY) { DateTime startDate = DateTime( - widget.fromDate.year, + widget.fromDate!.year, ); DateTime endDate = DateTime( - widget.toDate.year, + widget.toDate!.year, ); for (int i = 0; (startDate.isBefore(endDate) || areEqualDates(startDate, endDate)); @@ -405,7 +404,7 @@ class BezierChartState extends State ///When the widget finish rendering for the first time _onLayoutDone(_) { - _yAxisWidth = _keyLastYAxisItem.currentContext?.size?.width; + _yAxisWidth = _keyLastYAxisItem.currentContext?.size?.width ?? 0; //Move to selected position if ((widget.selectedDate != null && _currentBezierChartScale != BezierChartScale.CUSTOM) || @@ -414,20 +413,20 @@ class BezierChartState extends State int index = -1; if (_currentBezierChartScale == BezierChartScale.WEEKLY) { index = _xAxisDataPoints.indexWhere( - (dp) => areEqualDates((dp.xAxis as DateTime), widget.selectedDate)); + (dp) => areEqualDates((dp.xAxis as DateTime), widget.selectedDate!)); } else if (_currentBezierChartScale == BezierChartScale.HOURLY) { index = _xAxisDataPoints.indexWhere((dp) => - (dp.xAxis as DateTime).year == widget.selectedDate.year && - (dp.xAxis as DateTime).month == widget.selectedDate.month && - (dp.xAxis as DateTime).day == widget.selectedDate.day && - (dp.xAxis as DateTime).hour == widget.selectedDate.hour); + (dp.xAxis as DateTime).year == widget.selectedDate!.year && + (dp.xAxis as DateTime).month == widget.selectedDate!.month && + (dp.xAxis as DateTime).day == widget.selectedDate!.day && + (dp.xAxis as DateTime).hour == widget.selectedDate!.hour); } else if (_currentBezierChartScale == BezierChartScale.MONTHLY) { index = _xAxisDataPoints.indexWhere((dp) => - (dp.xAxis as DateTime).year == widget.selectedDate.year && - (dp.xAxis as DateTime).month == widget.selectedDate.month); + (dp.xAxis as DateTime).year == widget.selectedDate!.year && + (dp.xAxis as DateTime).month == widget.selectedDate!.month); } else if (_currentBezierChartScale == BezierChartScale.YEARLY) { index = _xAxisDataPoints.indexWhere( - (dp) => (dp.xAxis as DateTime).year == widget.selectedDate.year); + (dp) => (dp.xAxis as DateTime).year == widget.selectedDate!.year); } else if (_currentBezierChartScale == BezierChartScale.CUSTOM) { index = _xAxisDataPoints .indexWhere((dp) => (dp.xAxis as double) == widget.selectedValue); @@ -456,7 +455,7 @@ class BezierChartState extends State } else { final jumpToX = (index * horizontalSpacing) - horizontalPadding / 2 - - _keyScroll.currentContext.size.width / 2; + _keyScroll.currentContext!.size!.width / 2; _scrollController.jumpTo(jumpToX); fixedPosition = Offset( @@ -483,7 +482,7 @@ class BezierChartState extends State _checkIfNeedScroll() { if (_contentWidth > - _keyScroll.currentContext.size.width - horizontalPadding * 2) { + _keyScroll.currentContext!.size!.width - horizontalPadding * 2) { _isScrollable = true; } } @@ -500,7 +499,7 @@ class BezierChartState extends State _currentBezierChartScale == BezierChartScale.HOURLY) { for (BezierLine line in widget.series) { Map> tmpMap = Map(); - for (DataPoint dataPoint in line.data) { + for (DataPoint dataPoint in line.data) { String key; if (_currentBezierChartScale == BezierChartScale.MONTHLY) { key = @@ -517,9 +516,9 @@ class BezierChartState extends State //support aggregations for y axis if (!tmpMap.containsKey(key)) { - tmpMap[key] = new List(); + tmpMap[key] = []; } - tmpMap[key].add(dataPoint.value); + tmpMap[key]?.add(dataPoint.value); } Map valueMap = Map(); @@ -553,7 +552,7 @@ class BezierChartState extends State valueMap.keys.forEach( (key) { final value = valueMap[key]; - if (!_yValues.contains(value)) _yValues.add(value); + if (!_yValues.contains(value)) _yValues.add(value!); ///Sum all the values corresponding to each month and create a new data serie if (_currentBezierChartScale == BezierChartScale.HOURLY) { @@ -565,7 +564,7 @@ class BezierChartState extends State final date = DateTime(year, month, day, hour, 0); newDataPoints.add( DataPoint( - value: value, + value: value!, xAxis: date, ), ); @@ -579,7 +578,7 @@ class BezierChartState extends State final date = DateTime(year, month); newDataPoints.add( DataPoint( - value: value, + value: value!, xAxis: date, ), ); @@ -591,7 +590,7 @@ class BezierChartState extends State final date = DateTime(year, month, day, 0); newDataPoints.add( DataPoint( - value: value, + value: value!, xAxis: date, ), ); @@ -601,7 +600,7 @@ class BezierChartState extends State final date = DateTime(year); newDataPoints.add( DataPoint( - value: value, + value: value!, xAxis: date, ), ); @@ -711,7 +710,7 @@ class BezierChartState extends State void _notifyScaleChanged(BezierChartScale lastScale) { if (widget.onScaleChanged != null && lastScale != _currentBezierChartScale) { - widget.onScaleChanged(_currentBezierChartScale); + widget.onScaleChanged!(_currentBezierChartScale); } } @@ -780,7 +779,7 @@ class BezierChartState extends State ); _buildXDataPoints(); _computeSeries(); - WidgetsBinding.instance.addPostFrameCallback(_onLayoutDone); + WidgetsBinding.instance!.addPostFrameCallback(_onLayoutDone); super.initState(); } @@ -894,11 +893,11 @@ class BezierChartState extends State if (widget.onValueSelected != null) { if (_valueSelected == null) { _valueSelected = val; - widget.onValueSelected(_valueSelected); + widget.onValueSelected!(_valueSelected!); } else { if (_valueSelected != val) { _valueSelected = val; - widget.onValueSelected(_valueSelected); + widget.onValueSelected!(_valueSelected!); } } } @@ -907,11 +906,11 @@ class BezierChartState extends State if (widget.onDateTimeSelected != null) { if (_dateTimeSelected == null) { _dateTimeSelected = val; - widget.onDateTimeSelected(_dateTimeSelected); + widget.onDateTimeSelected!(_dateTimeSelected!); } else { if (_dateTimeSelected != val) { _dateTimeSelected = val; - widget.onDateTimeSelected(_dateTimeSelected); + widget.onDateTimeSelected!(_dateTimeSelected!); } } } @@ -947,10 +946,10 @@ class BezierChartState extends State ? _yValues.first : 0.0); final steps = widget.config.stepsYAxis != null && - widget.config.stepsYAxis > 0 + widget.config.stepsYAxis! > 0 ? widget.config.stepsYAxis : null; - _addYItem(double value, {Key key}) { + _addYItem(double value, {Key? key}) { items.add( Positioned( bottom: _getRealValue( @@ -1012,50 +1011,50 @@ _getRealValue(double value, double maxConstraint, double maxValue) => //BezierChart class _BezierChartPainter extends CustomPainter { final BezierChartConfig config; - final Offset verticalIndicatorPosition; + final Offset? verticalIndicatorPosition; final List series; final List xAxisDataPoints; double _maxValueY = 0.0; double _maxValueX = 0.0; List<_CustomValue> _currentCustomValues = []; - DataPoint _currentXDataPoint; + DataPoint? _currentXDataPoint; final double radiusDotIndicatorMain = 7; final double radiusDotIndicatorItems = 3.5; final bool showIndicator; final Animation animation; - final ValueChanged onDataPointSnap; + final ValueChanged? onDataPointSnap; final BezierChartScale bezierChartScale; final double maxWidth; final double scrollOffset; bool footerDrawed = false; - final FooterValueBuilder footerValueBuilder; - final FooterValueBuilder bubbleLabelValueBuilder; - final FooterDateTimeBuilder footerDateTimeBuilder; - final FooterDateTimeBuilder bubbleLabelDateTimeBuilder; + final FooterValueBuilder? footerValueBuilder; + final FooterValueBuilder? bubbleLabelValueBuilder; + final FooterDateTimeBuilder? footerDateTimeBuilder; + final FooterDateTimeBuilder? bubbleLabelDateTimeBuilder; final double maxYValue; final double minYValue; - final ValueChanged onValueSelected; - final ValueChanged onDateTimeSelected; + final ValueChanged? onValueSelected; + final ValueChanged? onDateTimeSelected; final bool shouldRepaintChart; _BezierChartPainter({ - this.shouldRepaintChart, - this.config, + required this.shouldRepaintChart, + required this.config, this.verticalIndicatorPosition, - this.series, - this.showIndicator, - this.xAxisDataPoints, - this.animation, - this.bezierChartScale, + required this.series, + required this.showIndicator, + required this.xAxisDataPoints, + required this.animation, + required this.bezierChartScale, this.onDataPointSnap, - this.maxWidth, + required this.maxWidth, this.footerValueBuilder, this.bubbleLabelValueBuilder, - this.scrollOffset, + required this.scrollOffset, this.footerDateTimeBuilder, this.bubbleLabelDateTimeBuilder, - this.maxYValue, - this.minYValue, + required this.maxYValue, + required this.minYValue, this.onDateTimeSelected, this.onValueSelected, }) : super(repaint: animation) { @@ -1104,16 +1103,16 @@ class _BezierChartPainter extends CustomPainter { double verticalX = 0.0; //fixing verticalIndicator outbounds if (verticalIndicatorPosition != null) { - verticalX = verticalIndicatorPosition.dx; - if (verticalIndicatorPosition.dx < 0) { + verticalX = verticalIndicatorPosition!.dx; + if (verticalIndicatorPosition!.dx < 0) { verticalX = 0.0; - } else if (verticalIndicatorPosition.dx > size.width) { + } else if (verticalIndicatorPosition!.dx > size.width) { verticalX = size.width; } } //variables for the last item on the list (this is required to display the indicator) - Offset p0, p1, p2, p3; + late Offset p0, p1, p2, p3; void _drawBezierLinePath(BezierLine line) { Path path = Path(); List dataPoints = []; @@ -1141,7 +1140,7 @@ class _BezierChartPainter extends CustomPainter { ..strokeWidth = 1.0 ..style = PaintingStyle.stroke; - _AxisValue lastPoint; + _AxisValue? lastPoint; //display each data point for (int i = 0; i < xAxisDataPoints.length; i++) { @@ -1165,7 +1164,7 @@ class _BezierChartPainter extends CustomPainter { value = line.data[i].value; } else { //search from axis - for (DataPoint dp in line.data) { + for (DataPoint dp in line.data) { final dateTime = (xAxisDataPoints[i].xAxis as DateTime); if (bezierChartScale == BezierChartScale.HOURLY) { @@ -1186,7 +1185,7 @@ class _BezierChartPainter extends CustomPainter { if (value == 0) { if (line.onMissingValue != null) { isMissingValue = true; - value = line.onMissingValue(xAxisDataPoints[i].xAxis as DateTime); + value = line.onMissingValue!(xAxisDataPoints[i].xAxis as DateTime); } } } @@ -1257,15 +1256,15 @@ class _BezierChartPainter extends CustomPainter { bool isDouble = (xAxisDataPoints[i].xAxis is double); if (isDouble) { if (onValueSelected != null) { - onValueSelected(xAxisDataPoints[i].xAxis); + onValueSelected!(xAxisDataPoints[i].xAxis); } } else { if (onDateTimeSelected != null) { - onDateTimeSelected(xAxisDataPoints[i].xAxis); + onDateTimeSelected!(xAxisDataPoints[i].xAxis); } } - onDataPointSnap(xAxisDataPoints[i].value); + onDataPointSnap!(xAxisDataPoints[i].value); _currentCustomValues.add( _CustomValue( value: '${formatAsIntOrDouble(axisY)}', @@ -1328,7 +1327,7 @@ class _BezierChartPainter extends CustomPainter { if (config.snap) { if (_currentXDataPoint != null) { verticalX = _getRealValue( - _currentXDataPoint.value, + _currentXDataPoint!.value, size.width, _maxValueX, ); @@ -1526,50 +1525,50 @@ class _BezierChartPainter extends CustomPainter { String _getInfoTitleText() { final scale = bezierChartScale; if (bubbleLabelValueBuilder != null && scale == BezierChartScale.CUSTOM) { - return bubbleLabelValueBuilder(_currentXDataPoint.value); + return bubbleLabelValueBuilder!(_currentXDataPoint!.value); } if (bubbleLabelDateTimeBuilder != null && scale != BezierChartScale.CUSTOM) { - return bubbleLabelDateTimeBuilder( - _currentXDataPoint.xAxis as DateTime, scale); + return bubbleLabelDateTimeBuilder!( + _currentXDataPoint!.xAxis as DateTime, scale); } if (scale == BezierChartScale.CUSTOM) { - return "${formatAsIntOrDouble(_currentXDataPoint.value)}\n"; + return "${formatAsIntOrDouble(_currentXDataPoint!.value)}\n"; } else if (scale == BezierChartScale.HOURLY) { final dateFormat = intl.DateFormat('dd/MM HH:mm'); - final date = _currentXDataPoint.xAxis as DateTime; + final date = _currentXDataPoint!.xAxis as DateTime; final now = DateTime.now(); if (areEqualDatesIncludingHour(date, now)) { return 'Now\n'; } else { - return '${dateFormat.format(_currentXDataPoint.xAxis)}\n'; + return '${dateFormat.format(_currentXDataPoint!.xAxis)}\n'; } } else if (scale == BezierChartScale.WEEKLY) { final dateFormat = intl.DateFormat('EEE d'); - final date = _currentXDataPoint.xAxis as DateTime; + final date = _currentXDataPoint!.xAxis as DateTime; final now = DateTime.now(); if (areEqualDates(date, now)) { return 'Current\n'; } else { - return '${dateFormat.format(_currentXDataPoint.xAxis)}\n'; + return '${dateFormat.format(_currentXDataPoint!.xAxis)}\n'; } } else if (scale == BezierChartScale.MONTHLY) { final dateFormat = intl.DateFormat('MMM y'); - final date = _currentXDataPoint.xAxis as DateTime; + final date = _currentXDataPoint!.xAxis as DateTime; final now = DateTime.now(); if (date.year == now.year && now.month == date.month) { return 'Current Month\n'; } else { - return '${dateFormat.format(_currentXDataPoint.xAxis)}\n'; + return '${dateFormat.format(_currentXDataPoint!.xAxis)}\n'; } } else if (scale == BezierChartScale.YEARLY) { final dateFormat = intl.DateFormat('y'); - final date = _currentXDataPoint.xAxis as DateTime; + final date = _currentXDataPoint!.xAxis as DateTime; final now = DateTime.now(); if (date.year == now.year) { return 'Current Year\n'; } else { - return '${dateFormat.format(_currentXDataPoint.xAxis)}\n'; + return '${dateFormat.format(_currentXDataPoint!.xAxis)}\n'; } } return ''; @@ -1578,10 +1577,10 @@ class _BezierChartPainter extends CustomPainter { String _getFooterText(DataPoint dataPoint) { final scale = bezierChartScale; if (footerValueBuilder != null && scale == BezierChartScale.CUSTOM) { - return footerValueBuilder(dataPoint.value); + return footerValueBuilder!(dataPoint.value); } if (footerDateTimeBuilder != null && scale != BezierChartScale.CUSTOM) { - return footerDateTimeBuilder(dataPoint.xAxis as DateTime, scale); + return footerDateTimeBuilder!(dataPoint.xAxis as DateTime, scale); } if (scale == BezierChartScale.CUSTOM) { return '${formatAsIntOrDouble(dataPoint.value)}\n'; @@ -1629,7 +1628,7 @@ class _BezierChartPainter extends CustomPainter { return y; } - Rect _fromCenter({Offset center, double width, double height}) => + Rect _fromCenter({required Offset center, required double width, required double height}) => Rect.fromLTRB( center.dx - width / 2, center.dy - height / 2, @@ -1644,15 +1643,15 @@ class _BezierChartPainter extends CustomPainter { // oldDelegate.scrollOffset != scrollOffset || // oldDelegate.showIndicator != showIndicator; // TODO(weilu): 修改处 - oldDelegate.series != series; + oldDelegate.series != series || oldDelegate.verticalIndicatorPosition != verticalIndicatorPosition; } class _AxisValue { final double x; final double y; const _AxisValue({ - this.x, - this.y, + required this.x, + required this.y, }); } @@ -1665,7 +1664,7 @@ bool _compareLengths(int currentValue, List val2) { return true; } -bool _isSorted(List list, [int Function(double, double) compare]) { +bool _isSorted(List list, [int Function(double, double)? compare]) { if (list.length < 2) return true; compare ??= (double a, double b) => a.compareTo(b); double prev = list.first; @@ -1711,9 +1710,9 @@ class _CustomValue { final Color color; _CustomValue({ - @required this.value, - @required this.label, - @required this.color, + required this.value, + required this.label, + required this.color, }); } diff --git a/lib/widgets/bezier_chart/bezier_line.dart b/lib/widgets/bezier_chart/bezier_line.dart index f64b0b4d0..87da27e32 100644 --- a/lib/widgets/bezier_chart/bezier_line.dart +++ b/lib/widgets/bezier_chart/bezier_line.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; typedef MissingValueBuilder = double Function(DateTime value); @@ -22,7 +21,7 @@ class BezierLine { ///This builder is only valid for `bezierChartScale` of date types ///It uses the double value returned by the function based on the current `DateTime` received as parameter - final MissingValueBuilder onMissingValue; + final MissingValueBuilder? onMissingValue; ///Label used in the bubble info indicator final String label; @@ -32,13 +31,13 @@ class BezierLine { this.lineStrokeWidth = 2.0, this.label = '', this.onMissingValue, - Color dataPointFillColor, - Color dataPointStrokeColor, - this.data, - }) : this.dataPointFillColor = dataPointFillColor ?? lineColor, - this.dataPointStrokeColor = dataPointStrokeColor ?? lineColor; + Color? dataPointFillColor, + Color? dataPointStrokeColor, + required this.data, + }) : dataPointFillColor = dataPointFillColor ?? lineColor, + dataPointStrokeColor = dataPointStrokeColor ?? lineColor; - factory BezierLine.copy({BezierLine bezierLine}) { + factory BezierLine.copy({required BezierLine bezierLine}) { return BezierLine( lineColor: bezierLine.lineColor, lineStrokeWidth: bezierLine.lineStrokeWidth, @@ -64,11 +63,11 @@ class BezierLine { @override int get hashCode => data - .map((val) => val.value?.toString() ?? '') + .map((val) => val.value.toString()) .reduce((val1, val2) => '$val1$val2') .hashCode; -} +} ///This class represent each value `Y` per `X` axis class DataPoint { ///The value `Y` @@ -78,8 +77,8 @@ class DataPoint { final T xAxis; const DataPoint({ - this.value, - this.xAxis, + required this.value, + required this.xAxis, }); @override diff --git a/lib/widgets/bezier_chart/my_single_child_scroll_view.dart b/lib/widgets/bezier_chart/my_single_child_scroll_view.dart index e20216175..cabb7e6e3 100644 --- a/lib/widgets/bezier_chart/my_single_child_scroll_view.dart +++ b/lib/widgets/bezier_chart/my_single_child_scroll_view.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'dart:math' as math; import 'package:flutter/widgets.dart'; @@ -9,14 +8,14 @@ import 'package:flutter/gestures.dart' show DragStartBehavior; class MySingleChildScrollView extends StatelessWidget { /// Creates a box in which a single widget can be scrolled. const MySingleChildScrollView({ - Key key, + Key? key, this.scrollDirection = Axis.vertical, this.reverse = false, this.padding, - bool primary, + bool? primary, this.physics, this.controller, - this.child, + required this.child, this.dragStartBehavior = DragStartBehavior.start, }) : assert(scrollDirection != null), assert(dragStartBehavior != null), @@ -48,7 +47,7 @@ class MySingleChildScrollView extends StatelessWidget { final bool reverse; /// The amount of space by which to inset the child. - final EdgeInsetsGeometry padding; + final EdgeInsetsGeometry? padding; /// An object that can be used to control the position to which this scroll /// view is scrolled. @@ -62,7 +61,7 @@ class MySingleChildScrollView extends StatelessWidget { /// [ScrollController.keepScrollOffset]). It can be used to read the current /// scroll position (see [ScrollController.offset]), or change it (see /// [ScrollController.animateTo]). - final ScrollController controller; + final ScrollController? controller; /// Whether this is the primary scroll view associated with the parent /// [PrimaryScrollController]. @@ -80,7 +79,7 @@ class MySingleChildScrollView extends StatelessWidget { /// user stops dragging the scroll view. /// /// Defaults to matching platform conventions. - final ScrollPhysics physics; + final ScrollPhysics? physics; /// The widget that scrolls. /// @@ -99,8 +98,8 @@ class MySingleChildScrollView extends StatelessWidget { Widget build(BuildContext context) { final AxisDirection axisDirection = _getDirection(context); Widget contents = child; - if (padding != null) contents = Padding(padding: padding, child: contents); - final ScrollController scrollController = + if (padding != null) contents = Padding(padding: padding!, child: contents); + final ScrollController? scrollController = primary ? PrimaryScrollController.of(context) : controller; final Scrollable scrollable = Scrollable( dragStartBehavior: dragStartBehavior, @@ -123,10 +122,10 @@ class MySingleChildScrollView extends StatelessWidget { class _SingleChildViewport extends SingleChildRenderObjectWidget { const _SingleChildViewport({ - Key key, + Key? key, this.axisDirection = AxisDirection.down, - this.offset, - Widget child, + required this.offset, + Widget? child, }) : assert(axisDirection != null), super(key: key, child: child); @@ -156,9 +155,9 @@ class _RenderSingleChildViewport extends RenderBox implements RenderAbstractViewport { _RenderSingleChildViewport({ AxisDirection axisDirection = AxisDirection.down, - @required ViewportOffset offset, + required ViewportOffset offset, double cacheExtent = RenderAbstractViewport.defaultCacheExtent, - RenderBox child, + RenderBox? child, }) : assert(axisDirection != null), assert(offset != null), assert(cacheExtent != null), @@ -235,7 +234,6 @@ class _RenderSingleChildViewport extends RenderBox case Axis.vertical: return size.height; } - return null; } double get _minScrollExtent { @@ -245,14 +243,14 @@ class _RenderSingleChildViewport extends RenderBox double get _maxScrollExtent { assert(hasSize); - if (child == null) return 0.0; + if (child == null) + return 0.0; switch (axis) { case Axis.horizontal: - return math.max(0.0, child.size.width - size.width); + return math.max(0.0, child!.size.width - size.width); case Axis.vertical: - return math.max(0.0, child.size.height - size.height); + return math.max(0.0, child!.size.height - size.height); } - return null; } BoxConstraints _getInnerConstraints(BoxConstraints constraints) { @@ -262,30 +260,33 @@ class _RenderSingleChildViewport extends RenderBox case Axis.vertical: return constraints.widthConstraints(); } - return null; } @override double computeMinIntrinsicWidth(double height) { - if (child != null) return child.getMinIntrinsicWidth(height); + if (child != null) + return child!.getMinIntrinsicWidth(height); return 0.0; } @override double computeMaxIntrinsicWidth(double height) { - if (child != null) return child.getMaxIntrinsicWidth(height); + if (child != null) + return child!.getMaxIntrinsicWidth(height); return 0.0; } @override double computeMinIntrinsicHeight(double width) { - if (child != null) return child.getMinIntrinsicHeight(width); + if (child != null) + return child!.getMinIntrinsicHeight(width); return 0.0; } @override double computeMaxIntrinsicHeight(double width) { - if (child != null) return child.getMaxIntrinsicHeight(width); + if (child != null) + return child!.getMaxIntrinsicHeight(width); return 0.0; } @@ -299,8 +300,8 @@ class _RenderSingleChildViewport extends RenderBox if (child == null) { size = constraints.smallest; } else { - child.layout(_getInnerConstraints(constraints), parentUsesSize: true); - size = constraints.constrain(child.size); + child!.layout(_getInnerConstraints(constraints), parentUsesSize: true); + size = constraints.constrain(child!.size); } offset.applyViewportDimension(_viewportExtent); @@ -313,21 +314,20 @@ class _RenderSingleChildViewport extends RenderBox assert(axisDirection != null); switch (axisDirection) { case AxisDirection.up: - return Offset(0.0, position - child.size.height + size.height); + return Offset(0.0, position - child!.size.height + size.height); case AxisDirection.down: return Offset(0.0, -position); case AxisDirection.left: - return Offset(position - child.size.width + size.width, 0.0); + return Offset(position - child!.size.width + size.width, 0.0); case AxisDirection.right: return Offset(-position, 0.0); } - return null; } bool _shouldClipAtPaintOffset(Offset paintOffset) { assert(child != null); return paintOffset < Offset.zero || - !(Offset.zero & size).contains((paintOffset & child.size).bottomRight); + !(Offset.zero & size).contains((paintOffset & child!.size).bottomRight); } @override @@ -336,7 +336,7 @@ class _RenderSingleChildViewport extends RenderBox final Offset paintOffset = _paintOffset; void paintContents(PaintingContext context, Offset offset) { - context.paintChild(child, offset + paintOffset); + context.paintChild(child!, offset + paintOffset); } if (_shouldClipAtPaintOffset(paintOffset)) { @@ -356,24 +356,24 @@ class _RenderSingleChildViewport extends RenderBox } @override - Rect describeApproximatePaintClip(RenderObject child) { + Rect? describeApproximatePaintClip(RenderObject child) { if (child != null && _shouldClipAtPaintOffset(_paintOffset)) return Offset.zero & size; return null; } @override - bool hitTestChildren(HitTestResult result, {Offset position}) { + bool hitTestChildren(BoxHitTestResult result, {required Offset position}) { if (child != null) { final Offset transformed = position + -_paintOffset; - return child.hitTest(result, position: transformed); + return child!.hitTest(result, position: transformed); } return false; } @override RevealedOffset getOffsetToReveal(RenderObject target, double alignment, - {Rect rect}) { + {Rect? rect}) { rect ??= target.paintBounds; if (target is! RenderBox) return RevealedOffset(offset: offset.pixels, rect: rect); @@ -381,7 +381,7 @@ class _RenderSingleChildViewport extends RenderBox final RenderBox targetBox = target as RenderBox; final Matrix4 transform = targetBox.getTransformTo(this); final Rect bounds = MatrixUtils.transformRect(transform, rect); - final Size contentSize = child.size; + final Size contentSize = child!.size; double leadingScrollOffset; double targetMainAxisExtent; @@ -419,8 +419,8 @@ class _RenderSingleChildViewport extends RenderBox @override void showOnScreen({ - RenderObject descendant, - Rect rect, + RenderObject? descendant, + Rect? rect, Duration duration = Duration.zero, Curve curve = Curves.ease, }) { @@ -433,7 +433,7 @@ class _RenderSingleChildViewport extends RenderBox ); } - final Rect newRect = RenderViewportBase.showInViewport( + final Rect? newRect = RenderViewportBase.showInViewport( descendant: descendant, viewport: this, offset: offset, @@ -467,6 +467,5 @@ class _RenderSingleChildViewport extends RenderBox semanticBounds.bottom, ); } - return null; } } diff --git a/lib/widgets/click_item.dart b/lib/widgets/click_item.dart index 38be61e15..5b931a3eb 100644 --- a/lib/widgets/click_item.dart +++ b/lib/widgets/click_item.dart @@ -34,7 +34,7 @@ class ClickItem extends StatelessWidget { maxLines: maxLines, textAlign: maxLines == 1 ? TextAlign.right : textAlign, overflow: TextOverflow.ellipsis, - style: Theme.of(context).textTheme.subtitle2!.copyWith(fontSize: Dimens.font_sp14), + style: Theme.of(context).textTheme.subtitle2?.copyWith(fontSize: Dimens.font_sp14), ), ), Gaps.hGap8, diff --git a/lib/widgets/state_layout.dart b/lib/widgets/state_layout.dart index f5f172110..a50dc131a 100644 --- a/lib/widgets/state_layout.dart +++ b/lib/widgets/state_layout.dart @@ -36,7 +36,7 @@ class StateLayout extends StatelessWidget { const SizedBox(width: double.infinity, height: Dimens.gap_dp16,), Text( hintText ?? type.hintText, - style: Theme.of(context).textTheme.subtitle2!.copyWith(fontSize: Dimens.font_sp14), + style: Theme.of(context).textTheme.subtitle2?.copyWith(fontSize: Dimens.font_sp14), ), Gaps.vGap50, ], From 0ed2baba72192791fd99486126c3c5ffb25cccec Mon Sep 17 00:00:00 2001 From: weilu Date: Sun, 25 Apr 2021 09:49:58 +0800 Subject: [PATCH 014/206] =?UTF-8?q?goods=E3=80=81order=E3=80=81home?= =?UTF-8?q?=E3=80=81login=E8=BF=81=E7=A7=BB=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/demo/demo_page.dart | 11 ++++++ .../json/base/json_convert_content.dart | 10 ++++++ .../json/goods_sort_entity_helper.dart | 18 ++++++++++ lib/goods/goods_router.dart | 3 +- lib/goods/models/goods_sort_entity.dart | 6 ++++ lib/goods/page/goods_edit_page.dart | 13 ++++--- lib/goods/page/goods_list_page.dart | 12 +++---- lib/goods/page/goods_page.dart | 17 +++++---- lib/goods/page/goods_search_page.dart | 3 +- lib/goods/page/goods_size_edit_page.dart | 5 ++- lib/goods/page/goods_size_page.dart | 11 +++--- lib/goods/page/qr_code_scanner_page.dart | 15 ++++---- lib/goods/provider/goods_sort_provider.dart | 19 +++++----- lib/goods/widgets/goods_add_menu.dart | 18 +++++----- .../widgets/goods_delete_bottom_sheet.dart | 5 ++- lib/goods/widgets/goods_item.dart | 35 +++++++++---------- lib/goods/widgets/goods_size_dialog.dart | 7 ++-- .../widgets/goods_sort_bottom_sheet.dart | 32 ++++++++--------- lib/goods/widgets/goods_sort_menu.dart | 13 ++++--- lib/goods/widgets/menu_reveal.dart | 7 ++-- lib/home/home_page.dart | 13 ++++--- lib/home/splash_page.dart | 11 +++--- lib/home/webview_page.dart | 11 +++--- lib/login/login_router.dart | 1 - lib/login/page/login_page.dart | 25 +++++++------ lib/login/page/register_page.dart | 23 ++++++------ lib/login/page/reset_password_page.dart | 21 ++++++----- lib/login/page/sms_login_page.dart | 23 ++++++------ lib/login/page/update_password_page.dart | 9 +++-- lib/login/widgets/my_text_field.dart | 29 ++++++++------- lib/main.dart | 18 +++++----- lib/net/intercept.dart | 27 +++++++------- lib/order/iview/order_search_iview.dart | 1 - lib/order/order_router.dart | 2 -- lib/order/page/order_info_page.dart | 9 +++-- lib/order/page/order_list_page.dart | 9 +++-- lib/order/page/order_page.dart | 13 ++++--- lib/order/page/order_search_page.dart | 17 +++++---- lib/order/page/order_track_page.dart | 4 +-- .../presenter/order_search_presenter.dart | 11 +++--- lib/order/widgets/order_item.dart | 21 ++++++----- lib/order/widgets/order_tag_item.dart | 7 ++-- lib/order/widgets/pay_type_dialog.dart | 7 ++-- lib/util/change_notifier_manage.dart | 6 ++-- 44 files changed, 292 insertions(+), 286 deletions(-) create mode 100644 lib/generated/json/goods_sort_entity_helper.dart create mode 100644 lib/goods/models/goods_sort_entity.dart diff --git a/lib/demo/demo_page.dart b/lib/demo/demo_page.dart index a582b4c11..a41b25326 100644 --- a/lib/demo/demo_page.dart +++ b/lib/demo/demo_page.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:flutter_deer/demo/focus/focus_demo_page.dart'; import 'package:flutter_deer/demo/lottie/lottie_demo.dart'; import 'package:flutter_deer/demo/navigator/books_main.dart'; @@ -20,6 +21,16 @@ class DemoPage extends StatefulWidget { } class _DemoPageState extends State { + + @override + void initState() { + super.initState(); + WidgetsBinding.instance!.addPostFrameCallback((_) { + /// 显示状态栏和导航栏(使用QuickActions进入demo页) + SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.top, SystemUiOverlay.bottom]); + }); + } + @override Widget build(BuildContext context) { return Scaffold( diff --git a/lib/generated/json/base/json_convert_content.dart b/lib/generated/json/base/json_convert_content.dart index 253805a80..da968a93b 100644 --- a/lib/generated/json/base/json_convert_content.dart +++ b/lib/generated/json/base/json_convert_content.dart @@ -9,6 +9,8 @@ import 'package:flutter_deer/shop/models/user_entity.dart'; import 'package:flutter_deer/generated/json/user_entity_helper.dart'; import 'package:flutter_deer/account/models/city_entity.dart'; import 'package:flutter_deer/generated/json/city_entity_helper.dart'; +import 'package:flutter_deer/goods/models/goods_sort_entity.dart'; +import 'package:flutter_deer/generated/json/goods_sort_entity_helper.dart'; import 'package:flutter_deer/order/models/search_entity.dart'; import 'package:flutter_deer/generated/json/search_entity_helper.dart'; @@ -29,6 +31,8 @@ class JsonConvert { return userEntityFromJson(data as UserEntity, json) as T; case CityEntity: return cityEntityFromJson(data as CityEntity, json) as T; + case GoodsSortEntity: + return goodsSortEntityFromJson(data as GoodsSortEntity, json) as T; case SearchEntity: return searchEntityFromJson(data as SearchEntity, json) as T; case SearchItems: @@ -48,6 +52,8 @@ class JsonConvert { return userEntityToJson(data as UserEntity); case CityEntity: return cityEntityToJson(data as CityEntity); + case GoodsSortEntity: + return goodsSortEntityToJson(data as GoodsSortEntity); case SearchEntity: return searchEntityToJson(data as SearchEntity); case SearchItems: @@ -68,6 +74,8 @@ class JsonConvert { return UserEntity().fromJson(json); } else if(type == (CityEntity).toString()){ return CityEntity().fromJson(json); + } else if(type == (GoodsSortEntity).toString()){ + return GoodsSortEntity().fromJson(json); } else if(type == (SearchEntity).toString()){ return SearchEntity().fromJson(json); } else if(type == (SearchItems).toString()){ @@ -88,6 +96,8 @@ class JsonConvert { return data.map((e) => UserEntity().fromJson(e)).toList() as M; } else if([] is M){ return data.map((e) => CityEntity().fromJson(e)).toList() as M; + } else if([] is M){ + return data.map((e) => GoodsSortEntity().fromJson(e)).toList() as M; } else if([] is M){ return data.map((e) => SearchEntity().fromJson(e)).toList() as M; } else if([] is M){ diff --git a/lib/generated/json/goods_sort_entity_helper.dart b/lib/generated/json/goods_sort_entity_helper.dart new file mode 100644 index 000000000..3e93d623b --- /dev/null +++ b/lib/generated/json/goods_sort_entity_helper.dart @@ -0,0 +1,18 @@ +import 'package:flutter_deer/goods/models/goods_sort_entity.dart'; + +goodsSortEntityFromJson(GoodsSortEntity data, Map json) { + if (json['id'] != null) { + data.id = json['id'].toString(); + } + if (json['name'] != null) { + data.name = json['name'].toString(); + } + return data; +} + +Map goodsSortEntityToJson(GoodsSortEntity entity) { + final Map data = new Map(); + data['id'] = entity.id; + data['name'] = entity.name; + return data; +} \ No newline at end of file diff --git a/lib/goods/goods_router.dart b/lib/goods/goods_router.dart index e88c87161..fdc387bbc 100644 --- a/lib/goods/goods_router.dart +++ b/lib/goods/goods_router.dart @@ -1,4 +1,4 @@ -// @dart=2.9 + import 'package:common_utils/common_utils.dart'; import 'package:fluro/fluro.dart'; import 'package:flutter_deer/goods/page/qr_code_scanner_page.dart'; @@ -10,7 +10,6 @@ import 'page/goods_search_page.dart'; import 'page/goods_size_edit_page.dart'; import 'page/goods_size_page.dart'; - class GoodsRouter implements IRouterProvider{ static String goodsPage = '/goods'; diff --git a/lib/goods/models/goods_sort_entity.dart b/lib/goods/models/goods_sort_entity.dart new file mode 100644 index 000000000..f8ba8c787 --- /dev/null +++ b/lib/goods/models/goods_sort_entity.dart @@ -0,0 +1,6 @@ +import 'package:flutter_deer/generated/json/base/json_convert_content.dart'; + +class GoodsSortEntity with JsonConvert { + late String id; + late String name; +} diff --git a/lib/goods/page/goods_edit_page.dart b/lib/goods/page/goods_edit_page.dart index c701e5388..d792d9dac 100644 --- a/lib/goods/page/goods_edit_page.dart +++ b/lib/goods/page/goods_edit_page.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/goods/provider/goods_sort_provider.dart'; import 'package:flutter_deer/goods/widgets/goods_sort_bottom_sheet.dart'; @@ -21,7 +20,7 @@ import '../goods_router.dart'; class GoodsEditPage extends StatefulWidget { const GoodsEditPage({ - Key key, + Key? key, this.isAdd = true, this.isScan = false, this.heroTag, @@ -30,8 +29,8 @@ class GoodsEditPage extends StatefulWidget { final bool isAdd; final bool isScan; - final String heroTag; - final String goodsImageUrl; + final String? heroTag; + final String? goodsImageUrl; @override _GoodsEditPageState createState() => _GoodsEditPageState(); @@ -39,13 +38,13 @@ class GoodsEditPage extends StatefulWidget { class _GoodsEditPageState extends State { - String _goodsSortName; + String? _goodsSortName; final TextEditingController _codeController = TextEditingController(); @override void initState() { super.initState(); - WidgetsBinding.instance.addPostFrameCallback((_) { + WidgetsBinding.instance!.addPostFrameCallback((_) { if (widget.isScan) { _scan(); } @@ -92,7 +91,7 @@ class _GoodsEditPageState extends State { Center( child: Text( '点击添加商品图片', - style: Theme.of(context).textTheme.subtitle2.copyWith(fontSize: Dimens.font_sp14), + style: Theme.of(context).textTheme.subtitle2?.copyWith(fontSize: Dimens.font_sp14), ), ), Gaps.vGap16, diff --git a/lib/goods/page/goods_list_page.dart b/lib/goods/page/goods_list_page.dart index 4fc357166..52a8cc762 100644 --- a/lib/goods/page/goods_list_page.dart +++ b/lib/goods/page/goods_list_page.dart @@ -1,5 +1,3 @@ -// @dart=2.9 - import 'package:common_utils/common_utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_deer/goods/models/goods_item_entity.dart'; @@ -17,8 +15,8 @@ import '../widgets/goods_item.dart'; class GoodsListPage extends StatefulWidget { const GoodsListPage({ - Key key, - @required this.index + Key? key, + required this.index }): super(key: key); final int index; @@ -30,8 +28,8 @@ class GoodsListPage extends StatefulWidget { class _GoodsListPageState extends State with AutomaticKeepAliveClientMixin, SingleTickerProviderStateMixin { int _selectIndex = -1; - Animation _animation; - AnimationController _controller; + late Animation _animation; + late AnimationController _controller; List _list = []; AnimationStatus _animationStatus = AnimationStatus.dismissed; @@ -96,7 +94,7 @@ class _GoodsListPageState extends State with AutomaticKeepAliveCl } int _page = 1; - int _maxPage; + late int _maxPage; StateType _stateType = StateType.loading; @override diff --git a/lib/goods/page/goods_page.dart b/lib/goods/page/goods_page.dart index 0da1ce803..220862468 100644 --- a/lib/goods/page/goods_page.dart +++ b/lib/goods/page/goods_page.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/goods/goods_router.dart'; import 'package:flutter_deer/goods/page/goods_list_page.dart'; @@ -17,7 +16,7 @@ import 'package:provider/provider.dart'; /// design/4商品/index.html class GoodsPage extends StatefulWidget { - const GoodsPage({Key key}) : super(key: key); + const GoodsPage({Key? key}) : super(key: key); @override _GoodsPageState createState() => _GoodsPageState(); @@ -26,7 +25,7 @@ class GoodsPage extends StatefulWidget { class _GoodsPageState extends State with SingleTickerProviderStateMixin, AutomaticKeepAliveClientMixin { final List _sortList = ['全部商品', '个人护理', '饮料', '沐浴洗护', '厨房用具', '休闲食品', '生鲜水果', '酒水', '家庭清洁']; - TabController _tabController; + TabController? _tabController; final PageController _pageController = PageController(initialPage: 0); final GlobalKey _addKey = GlobalKey(); @@ -43,14 +42,14 @@ class _GoodsPageState extends State with SingleTickerProviderStateMix @override void dispose() { - _tabController.dispose(); + _tabController?.dispose(); super.dispose(); } @override Widget build(BuildContext context) { super.build(context); - final Color _iconColor = ThemeUtils.getIconColor(context); + final Color? _iconColor = ThemeUtils.getIconColor(context); return ChangeNotifierProvider( create: (_) => provider, child: Scaffold( @@ -158,15 +157,15 @@ class _GoodsPageState extends State with SingleTickerProviderStateMix } void _onPageChange(int index) { - _tabController.animateTo(index); + _tabController?.animateTo(index); provider.setIndex(index); } /// design/4商品/index.html#artboard3 void _showSortMenu() { // 获取点击控件的坐标 - final RenderBox button = _buttonKey.currentContext.findRenderObject() as RenderBox; - final RenderBox body = _bodyKey.currentContext.findRenderObject() as RenderBox; + final RenderBox button = _buttonKey.currentContext!.findRenderObject()! as RenderBox; + final RenderBox body = _bodyKey.currentContext!.findRenderObject()! as RenderBox; showPopupWindow( context: context, @@ -187,7 +186,7 @@ class _GoodsPageState extends State with SingleTickerProviderStateMix /// design/4商品/index.html#artboard4 void _showAddMenu() { - final RenderBox button = _addKey.currentContext.findRenderObject() as RenderBox; + final RenderBox button = _addKey.currentContext!.findRenderObject()! as RenderBox; showPopupWindow( context: context, diff --git a/lib/goods/page/goods_search_page.dart b/lib/goods/page/goods_search_page.dart index 9da98077d..a1d99c315 100644 --- a/lib/goods/page/goods_search_page.dart +++ b/lib/goods/page/goods_search_page.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/util/toast_utils.dart'; @@ -6,7 +5,7 @@ import 'package:flutter_deer/widgets/search_bar.dart'; class GoodsSearchPage extends StatefulWidget { - const GoodsSearchPage({Key key}) : super(key: key); + const GoodsSearchPage({Key? key}) : super(key: key); @override _GoodsSearchPageState createState() => _GoodsSearchPageState(); diff --git a/lib/goods/page/goods_size_edit_page.dart b/lib/goods/page/goods_size_edit_page.dart index 2f17f7dd8..28eddb858 100644 --- a/lib/goods/page/goods_size_edit_page.dart +++ b/lib/goods/page/goods_size_edit_page.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; import 'package:flutter_deer/widgets/my_button.dart'; @@ -11,7 +10,7 @@ import 'package:flutter_deer/widgets/my_app_bar.dart'; /// design/4商品/index.html#artboard14 class GoodsSizeEditPage extends StatefulWidget { - const GoodsSizeEditPage({Key key}) : super(key: key); + const GoodsSizeEditPage({Key? key}) : super(key: key); @override _GoodsSizeEditPageState createState() => _GoodsSizeEditPageState(); @@ -43,7 +42,7 @@ class _GoodsSizeEditPageState extends State { Center( child: Text( '点击添加分类图片', - style: Theme.of(context).textTheme.subtitle2.copyWith(fontSize: Dimens.font_sp14), + style: Theme.of(context).textTheme.subtitle2?.copyWith(fontSize: Dimens.font_sp14), ), ), Gaps.vGap16, diff --git a/lib/goods/page/goods_size_page.dart b/lib/goods/page/goods_size_page.dart index b09a84dbb..ab8708b93 100644 --- a/lib/goods/page/goods_size_page.dart +++ b/lib/goods/page/goods_size_page.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/goods/models/goods_size_model.dart'; import 'package:flutter_deer/goods/widgets/goods_size_dialog.dart'; @@ -19,7 +18,7 @@ import '../goods_router.dart'; /// design/4商品/index.html#artboard9 class GoodsSizePage extends StatefulWidget { - const GoodsSizePage({Key key}) : super(key: key); + const GoodsSizePage({Key? key}) : super(key: key); @override _GoodsSizePageState createState() => _GoodsSizePageState(); @@ -48,14 +47,14 @@ class _GoodsSizePageState extends State { _goodsSizeList.add(GoodsSizeModel('goods/goods_size_1', '黑色3', 10, '50.0', 2, '2', '2.5', '')); // 获取Build完成状态监听 - WidgetsBinding.instance.addPostFrameCallback((_) { + WidgetsBinding.instance!.addPostFrameCallback((_) { _showHint(); }); } /// design/4商品/index.html#artboard18 void _showHint() { - final RenderBox hint = _hintKey.currentContext.findRenderObject() as RenderBox; + final RenderBox hint = _hintKey.currentContext!.findRenderObject()! as RenderBox; showPopupWindow( context: context, isShowBg: true, @@ -125,7 +124,7 @@ class _GoodsSizePageState extends State { key: const Key('name_edit'), text: TextSpan( text: '先对名称进行', - style: Theme.of(context).textTheme.subtitle2.copyWith(fontSize: Dimens.font_sp14), + style: Theme.of(context).textTheme.subtitle2?.copyWith(fontSize: Dimens.font_sp14), children: [ TextSpan(text: '编辑', style: TextStyle(color: Theme.of(context).primaryColor)), ], @@ -226,7 +225,7 @@ class _GoodsSizePageState extends State { onTap: () { /// 如果侧滑菜单打开,关闭侧滑菜单。否则跳转 if (_slidableController.activeState != null) { - _slidableController.activeState.close(); + _slidableController.activeState!.close(); } else { NavigatorUtils.push(context, GoodsRouter.goodsSizeEditPage); } diff --git a/lib/goods/page/qr_code_scanner_page.dart b/lib/goods/page/qr_code_scanner_page.dart index 24f8376d3..510828bdc 100644 --- a/lib/goods/page/qr_code_scanner_page.dart +++ b/lib/goods/page/qr_code_scanner_page.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'dart:io'; @@ -9,7 +8,7 @@ import 'package:qr_code_scanner/qr_code_scanner.dart'; class QrCodeScannerPage extends StatefulWidget { - const QrCodeScannerPage({Key key}) : super(key: key); + const QrCodeScannerPage({Key? key}) : super(key: key); @override _QrCodeScannerPageState createState() => _QrCodeScannerPageState(); @@ -17,7 +16,7 @@ class QrCodeScannerPage extends StatefulWidget { class _QrCodeScannerPageState extends State { final GlobalKey qrKey = GlobalKey(debugLabel: 'QR'); - QRViewController controller; + QRViewController? controller; /// In order to get hot reload to work we need to pause the camera if the platform /// is android, or resume the camera if the platform is iOS. @@ -25,9 +24,9 @@ class _QrCodeScannerPageState extends State { void reassemble() { super.reassemble(); if (Platform.isAndroid) { - controller.pauseCamera(); + controller?.pauseCamera(); } else if (Platform.isIOS) { - controller.resumeCamera(); + controller?.resumeCamera(); } } @@ -61,9 +60,7 @@ class _QrCodeScannerPageState extends State { child: IconButton( icon: const Icon(Icons.highlight_outlined, size: 32, color: Colors.white,), onPressed: () { - if (controller != null) { - controller.toggleFlash(); - } + controller?.toggleFlash(); }, ), ), @@ -86,7 +83,7 @@ class _QrCodeScannerPageState extends State { this.controller = controller; controller.scannedDataStream.listen((scanData) { /// 避免扫描结果多次回调 - controller?.dispose(); + controller.dispose(); NavigatorUtils.goBackWithParams(context, scanData.code); }); } diff --git a/lib/goods/provider/goods_sort_provider.dart b/lib/goods/provider/goods_sort_provider.dart index 891a3e0f5..644c4d096 100644 --- a/lib/goods/provider/goods_sort_provider.dart +++ b/lib/goods/provider/goods_sort_provider.dart @@ -1,8 +1,9 @@ -// @dart=2.9 import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:flutter_deer/goods/models/goods_sort_entity.dart'; +import 'package:flutter_deer/generated/json/base/json_convert_content.dart'; class GoodsSortProvider extends ChangeNotifier { @@ -13,13 +14,13 @@ class GoodsSortProvider extends ChangeNotifier { final List _myTabs = [const Tab(text: '请选择'), const Tab(text: ''), const Tab(text: '')]; List get myTabs => _myTabs; - List _mGoodsSort = []; - List _mGoodsSort1 = []; - List _mGoodsSort2 = []; + List _mGoodsSort = []; + List _mGoodsSort1 = []; + List _mGoodsSort2 = []; /// 当前列表数据 - List _mList = []; - List get mList => _mList; + List _mList = []; + List get mList => _mList; /// 三级联动选择的position final List _positions = [0, 0, 0]; @@ -75,15 +76,15 @@ class GoodsSortProvider extends ChangeNotifier { // 模拟数据,数据为固定的三个列表 rootBundle.loadString('assets/data/sort_0.json').then((String value) { - _mGoodsSort = json.decode(value) as List; + _mGoodsSort = JsonConvert.fromJsonAsT>(json.decode(value)); _mList = _mGoodsSort; notifyListeners(); }); rootBundle.loadString('assets/data/sort_1.json').then((String value) { - _mGoodsSort1 = json.decode(value) as List; + _mGoodsSort1 = JsonConvert.fromJsonAsT>(json.decode(value)); }); rootBundle.loadString('assets/data/sort_2.json').then((String value) { - _mGoodsSort2 = json.decode(value) as List; + _mGoodsSort2 = JsonConvert.fromJsonAsT>(json.decode(value)); }); } } \ No newline at end of file diff --git a/lib/goods/widgets/goods_add_menu.dart b/lib/goods/widgets/goods_add_menu.dart index 82249343e..cfcbab155 100644 --- a/lib/goods/widgets/goods_add_menu.dart +++ b/lib/goods/widgets/goods_add_menu.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter_deer/routers/fluro_navigator.dart'; import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; @@ -9,7 +8,7 @@ import 'package:flutter_deer/goods/goods_router.dart'; class GoodsAddMenu extends StatefulWidget { const GoodsAddMenu({ - Key key, + Key? key, }): super(key: key); @override @@ -18,8 +17,9 @@ class GoodsAddMenu extends StatefulWidget { class _GoodsAddMenuState extends State with SingleTickerProviderStateMixin { - AnimationController _controller; - Animation _scaleAnimation; + late AnimationController _controller; + late Animation _scaleAnimation; + @override void initState() { super.initState(); @@ -41,7 +41,7 @@ class _GoodsAddMenuState extends State with SingleTickerProviderSt @override Widget build(BuildContext context) { final Color backgroundColor = context.backgroundColor; - final Color iconColor = ThemeUtils.getIconColor(context); + final Color? iconColor = ThemeUtils.getIconColor(context); final Widget body = Column( crossAxisAlignment: CrossAxisAlignment.end, @@ -62,8 +62,8 @@ class _GoodsAddMenuState extends State with SingleTickerProviderSt icon: LoadAssetImage('goods/scanning', width: 16.0, height: 16.0, color: iconColor,), label: const Text('扫码添加'), style: TextButton.styleFrom( - primary: Theme.of(context).textTheme.bodyText2.color, - onSurface: Theme.of(context).textTheme.bodyText2.color.withOpacity(0.12), + primary: Theme.of(context).textTheme.bodyText2?.color, + onSurface: Theme.of(context).textTheme.bodyText2?.color?.withOpacity(0.12), backgroundColor: backgroundColor, shape: const RoundedRectangleBorder( borderRadius: BorderRadius.only(topLeft: Radius.circular(8.0), topRight: Radius.circular(8.0)), @@ -82,8 +82,8 @@ class _GoodsAddMenuState extends State with SingleTickerProviderSt icon: LoadAssetImage('goods/add2', width: 16.0, height: 16.0, color: iconColor,), label: const Text('添加商品'), style: TextButton.styleFrom( - primary: Theme.of(context).textTheme.bodyText2.color, - onSurface: Theme.of(context).textTheme.bodyText2.color.withOpacity(0.12), + primary: Theme.of(context).textTheme.bodyText2?.color, + onSurface: Theme.of(context).textTheme.bodyText2?.color?.withOpacity(0.12), backgroundColor: backgroundColor, shape: const RoundedRectangleBorder( borderRadius: BorderRadius.only(bottomLeft: Radius.circular(8.0), bottomRight: Radius.circular(8.0)), diff --git a/lib/goods/widgets/goods_delete_bottom_sheet.dart b/lib/goods/widgets/goods_delete_bottom_sheet.dart index 68ad801f7..cc5427b09 100644 --- a/lib/goods/widgets/goods_delete_bottom_sheet.dart +++ b/lib/goods/widgets/goods_delete_bottom_sheet.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; @@ -8,8 +7,8 @@ import 'package:flutter_deer/widgets/my_button.dart'; class GoodsDeleteBottomSheet extends StatelessWidget { const GoodsDeleteBottomSheet({ - Key key, - @required this.onTapDelete, + Key? key, + required this.onTapDelete, }): super(key: key); final Function onTapDelete; diff --git a/lib/goods/widgets/goods_item.dart b/lib/goods/widgets/goods_item.dart index 0c2ee79bc..e7ea132d7 100644 --- a/lib/goods/widgets/goods_item.dart +++ b/lib/goods/widgets/goods_item.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:common_utils/common_utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_deer/goods/models/goods_item_entity.dart'; @@ -15,17 +14,17 @@ import 'menu_reveal.dart'; class GoodsItem extends StatelessWidget { const GoodsItem({ - Key key, - @required this.item, - @required this.index, - @required this.selectIndex, - @required this.onTapMenu, - @required this.onTapEdit, - @required this.onTapOperation, - @required this.onTapDelete, - @required this.onTapMenuClose, - @required this.animation, - @required this.heroTag, + Key? key, + required this.item, + required this.index, + required this.selectIndex, + required this.onTapMenu, + required this.onTapEdit, + required this.onTapOperation, + required this.onTapDelete, + required this.onTapMenuClose, + required this.animation, + required this.heroTag, }): super(key: key); final GoodsItemEntity item; @@ -144,10 +143,10 @@ class GoodsItem extends StatelessWidget { child: AnimatedBuilder( animation: animation, child: _buildGoodsMenuContent(context), - builder:(_, Widget child) { + builder: (_, Widget? child) { return MenuReveal( revealPercent: animation.value, - child: child + child: child! ); } ), @@ -213,12 +212,12 @@ class GoodsItem extends StatelessWidget { class _GoodsItemTag extends StatelessWidget { const _GoodsItemTag({ - Key key, - this.color, - this.text, + Key? key, + required this.color, + required this.text, }): super(key: key); - final Color color; + final Color? color; final String text; @override diff --git a/lib/goods/widgets/goods_size_dialog.dart b/lib/goods/widgets/goods_size_dialog.dart index d0c665f42..9c8f54b22 100644 --- a/lib/goods/widgets/goods_size_dialog.dart +++ b/lib/goods/widgets/goods_size_dialog.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; import 'package:flutter_deer/util/theme_utils.dart'; @@ -8,11 +7,11 @@ import 'package:flutter_deer/widgets/base_dialog.dart'; class GoodsSizeDialog extends StatefulWidget { const GoodsSizeDialog({ - Key key, + Key? key, this.onPressed, }) : super(key : key); - final Function(String) onPressed; + final Function(String)? onPressed; @override _GoodsSizeDialog createState() => _GoodsSizeDialog(); @@ -56,7 +55,7 @@ class _GoodsSizeDialog extends State { ), onPressed: () { NavigatorUtils.goBack(context); - widget.onPressed(_controller.text); + widget.onPressed?.call(_controller.text); }, ); } diff --git a/lib/goods/widgets/goods_sort_bottom_sheet.dart b/lib/goods/widgets/goods_sort_bottom_sheet.dart index 963fa1811..a6f332a75 100644 --- a/lib/goods/widgets/goods_sort_bottom_sheet.dart +++ b/lib/goods/widgets/goods_sort_bottom_sheet.dart @@ -1,10 +1,10 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/goods/provider/goods_sort_provider.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; import 'package:flutter_deer/util/screen_utils.dart'; import 'package:flutter_deer/util/theme_utils.dart'; +import 'package:flutter_deer/util/other_utils.dart'; import 'package:flutter_deer/widgets/load_image.dart'; import 'package:provider/provider.dart'; @@ -13,9 +13,9 @@ import 'package:provider/provider.dart'; class GoodsSortBottomSheet extends StatefulWidget { const GoodsSortBottomSheet({ - Key key, - @required this.provider, - @required this.onSelected, + Key? key, + required this.provider, + required this.onSelected, }): super(key: key); final Function(String, String) onSelected; @@ -28,22 +28,22 @@ class GoodsSortBottomSheet extends StatefulWidget { class GoodsSortBottomSheetState extends State with SingleTickerProviderStateMixin { - TabController _tabController; + TabController? _tabController; final ScrollController _controller = ScrollController(); @override void initState() { super.initState(); _tabController = TabController(vsync: this, length: 3); - WidgetsBinding.instance.addPostFrameCallback((_) { + WidgetsBinding.instance!.addPostFrameCallback((_) { widget.provider.initData(); - _tabController.animateTo(widget.provider.index, duration: const Duration(microseconds: 0)); + _tabController?.animateTo(widget.provider.index, duration: const Duration(microseconds: 0)); }); } @override void dispose() { - _tabController.dispose(); + _tabController?.dispose(); _controller.dispose(); super.dispose(); } @@ -61,7 +61,7 @@ class GoodsSortBottomSheetState extends State with SingleT return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - child, + child!, Gaps.line, Container( // 隐藏点击效果 @@ -70,9 +70,9 @@ class GoodsSortBottomSheetState extends State with SingleT controller: _tabController, isScrollable: true, onTap: (index) { - if (provider.myTabs[index].text.isEmpty) { + if (provider.myTabs[index].text.nullSafe.isEmpty) { // 拦截点击事件 - _tabController.animateTo(provider.index); + _tabController?.animateTo(provider.index); return; } provider.setList(index); @@ -136,7 +136,7 @@ class GoodsSortBottomSheetState extends State with SingleT } Widget _buildItem(GoodsSortProvider provider, int index) { - final bool flag = provider.mList[index]['name'] == provider.myTabs[provider.index].text; + final bool flag = provider.mList[index].name == provider.myTabs[provider.index].text; return InkWell( child: Container( padding: const EdgeInsets.symmetric(horizontal: 16.0), @@ -144,7 +144,7 @@ class GoodsSortBottomSheetState extends State with SingleT child: Row( children: [ Text( - provider.mList[index]['name'] as String, + provider.mList[index].name, style: flag ? TextStyle( fontSize: Dimens.font_sp14, color: Theme.of(context).primaryColor, @@ -158,18 +158,18 @@ class GoodsSortBottomSheetState extends State with SingleT ), ), onTap: () { - provider.myTabs[provider.index] = Tab(text: provider.mList[index]['name'] as String); + provider.myTabs[provider.index] = Tab(text: provider.mList[index].name); provider.positions[provider.index] = index; provider.indexIncrement(); provider.setListAndChangeTab(); if (provider.index > 2) { provider.setIndex(2); - widget.onSelected(provider.mList[index]['id'] as String, provider.mList[index]['name'] as String); + widget.onSelected(provider.mList[index].id, provider.mList[index].name); NavigatorUtils.goBack(context); } _controller.animateTo(0.0, duration: const Duration(milliseconds: 100), curve: Curves.ease); - _tabController.animateTo(provider.index); + _tabController?.animateTo(provider.index); }, ); } diff --git a/lib/goods/widgets/goods_sort_menu.dart b/lib/goods/widgets/goods_sort_menu.dart index 8a3a896a7..22b592063 100644 --- a/lib/goods/widgets/goods_sort_menu.dart +++ b/lib/goods/widgets/goods_sort_menu.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; @@ -7,11 +6,11 @@ import 'package:flutter_deer/util/theme_utils.dart'; class GoodsSortMenu extends StatefulWidget { const GoodsSortMenu({ - Key key, - @required this.data, - @required this.sortIndex, - @required this.height, - @required this.onSelected, + Key? key, + required this.data, + required this.sortIndex, + required this.height, + required this.onSelected, }): super(key: key); final List data; @@ -25,7 +24,7 @@ class GoodsSortMenu extends StatefulWidget { class _GoodsSortMenuState extends State with SingleTickerProviderStateMixin { - AnimationController _controller; + late AnimationController _controller; @override void initState() { diff --git a/lib/goods/widgets/menu_reveal.dart b/lib/goods/widgets/menu_reveal.dart index 2338a8b72..1b3e97626 100644 --- a/lib/goods/widgets/menu_reveal.dart +++ b/lib/goods/widgets/menu_reveal.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'dart:math'; import 'package:flutter/material.dart'; @@ -8,9 +7,9 @@ import 'package:flutter/material.dart'; class MenuReveal extends StatelessWidget { const MenuReveal({ - Key key, - this.revealPercent, - this.child + Key? key, + required this.revealPercent, + required this.child }): super(key: key); final double revealPercent; diff --git a/lib/home/home_page.dart b/lib/home/home_page.dart index c9d2dc73d..d5bc65c1e 100644 --- a/lib/home/home_page.dart +++ b/lib/home/home_page.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/goods/page/goods_page.dart'; import 'package:flutter_deer/home/provider/home_provider.dart'; @@ -13,7 +12,7 @@ import 'package:provider/provider.dart'; class Home extends StatefulWidget { - const Home({Key key}) : super(key: key); + const Home({Key? key}) : super(key: key); @override _HomeState createState() => _HomeState(); @@ -23,14 +22,14 @@ class _HomeState extends State { static const double _imageSize = 25.0; - List _pageList; + late List _pageList; final List _appBarTitles = ['订单', '商品', '统计', '店铺']; final PageController _pageController = PageController(); HomeProvider provider = HomeProvider(); - List _list; - List _listDark; + List? _list; + List? _listDark; @override void initState() { @@ -81,7 +80,7 @@ class _HomeState extends State { ); }); } - return _list; + return _list!; } List _buildDarkBottomNavigationBarItem() { @@ -113,7 +112,7 @@ class _HomeState extends State { ); }); } - return _listDark; + return _listDark!; } @override diff --git a/lib/home/splash_page.dart b/lib/home/splash_page.dart index 0e98554b5..a5e5992a7 100644 --- a/lib/home/splash_page.dart +++ b/lib/home/splash_page.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'dart:async'; import 'package:flutter/material.dart'; @@ -19,7 +18,7 @@ import 'package:sp_util/sp_util.dart'; class SplashPage extends StatefulWidget { - const SplashPage({Key key}) : super(key: key); + const SplashPage({Key? key}) : super(key: key); @override _SplashPageState createState() => _SplashPageState(); @@ -29,17 +28,17 @@ class _SplashPageState extends State { int _status = 0; final List _guideList = ['app_start_1', 'app_start_2', 'app_start_3']; - StreamSubscription _subscription; + StreamSubscription? _subscription; @override void initState() { super.initState(); - WidgetsBinding.instance.addPostFrameCallback((_) async { + WidgetsBinding.instance!.addPostFrameCallback((_) async { /// 两种初始化方案,另一种见 main.dart /// 两种方法各有优劣 await SpUtil.getInstance(); await Device.initDeviceInfo(); - if (SpUtil.getBool(Constant.keyGuide, defValue: true)) { + if (SpUtil.getBool(Constant.keyGuide, defValue: true)!) { /// 预先缓存图片,避免直接使用时因为首次加载造成闪动 _guideList.forEach((image) { precacheImage(ImageUtils.getAssetImage(image, format: ImageFormat.webp), context); @@ -73,7 +72,7 @@ class _SplashPageState extends State { void _initSplash() { _subscription = Stream.value(1).delay(const Duration(milliseconds: 1500)).listen((_) { - if (SpUtil.getBool(Constant.keyGuide, defValue: true) || Constant.isDriverTest) { + if (SpUtil.getBool(Constant.keyGuide, defValue: true)! || Constant.isDriverTest) { SpUtil.putBool(Constant.keyGuide, false); _initGuide(); } else { diff --git a/lib/home/webview_page.dart b/lib/home/webview_page.dart index 6f5e7ea20..f8c44a17f 100644 --- a/lib/home/webview_page.dart +++ b/lib/home/webview_page.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'dart:async'; import 'package:flutter/material.dart'; @@ -10,9 +9,9 @@ import 'package:webview_flutter/webview_flutter.dart'; class WebViewPage extends StatefulWidget { const WebViewPage({ - Key key, - @required this.title, - @required this.url, + Key? key, + required this.title, + required this.url, }) : super(key: key); final String title; @@ -44,10 +43,10 @@ class _WebViewPageState extends State { return WillPopScope( onWillPop: () async { if (snapshot.hasData) { - final bool canGoBack = await snapshot.data.canGoBack(); + final bool canGoBack = await snapshot.data!.canGoBack(); if (canGoBack) { // 网页可以返回时,优先返回上一页 - await snapshot.data.goBack(); + await snapshot.data!.goBack(); return Future.value(false); } } diff --git a/lib/login/login_router.dart b/lib/login/login_router.dart index 31f8ac12f..0754e4989 100644 --- a/lib/login/login_router.dart +++ b/lib/login/login_router.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:fluro/fluro.dart'; import 'package:flutter_deer/routers/i_router.dart'; diff --git a/lib/login/page/login_page.dart b/lib/login/page/login_page.dart index a4a085370..1e4e4519c 100644 --- a/lib/login/page/login_page.dart +++ b/lib/login/page/login_page.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; @@ -20,7 +19,7 @@ import '../login_router.dart'; /// design/1注册登录/index.html class LoginPage extends StatefulWidget { - const LoginPage({Key key}) : super(key: key); + const LoginPage({Key? key}) : super(key: key); @override _LoginPageState createState() => _LoginPageState(); @@ -35,9 +34,9 @@ class _LoginPageState extends State with ChangeNotifierMixin> changeNotifier() { + Map?>? changeNotifier() { final List callbacks = [_verify]; - return >{ + return ?>{ _nameController: callbacks, _passwordController: callbacks, _nodeText1: null, @@ -48,11 +47,11 @@ class _LoginPageState extends State with ChangeNotifierMixin with ChangeNotifierMixin with ChangeNotifierMixin get _buildBody => [ Text( - DeerLocalizations.of(context).passwordLogin, + DeerLocalizations.of(context)!.passwordLogin, style: TextStyles.textBold26, ), Gaps.vGap16, @@ -109,7 +108,7 @@ class _LoginPageState extends State with ChangeNotifierMixin with ChangeNotifierMixin with ChangeNotifierMixin _RegisterPageState(); @@ -32,9 +31,9 @@ class _RegisterPageState extends State with ChangeNotifierMixin> changeNotifier() { + Map?>? changeNotifier() { final List callbacks = [_verify]; - return >{ + return ?>{ _nameController: callbacks, _vCodeController: callbacks, _passwordController: callbacks, @@ -73,7 +72,7 @@ class _RegisterPageState extends State with ChangeNotifierMixin[_nodeText1, _nodeText2, _nodeText3]), @@ -87,7 +86,7 @@ class _RegisterPageState extends State with ChangeNotifierMixin _buildBody() { return [ Text( - DeerLocalizations.of(context).openYourAccount, + DeerLocalizations.of(context)!.openYourAccount, style: TextStyles.textBold26, ), Gaps.vGap16, @@ -97,7 +96,7 @@ class _RegisterPageState extends State with ChangeNotifierMixin with ChangeNotifierMixin with ChangeNotifierMixin _ResetPasswordPageState(); @@ -32,9 +31,9 @@ class _ResetPasswordPageState extends State with ChangeNotifi bool _clickable = false; @override - Map> changeNotifier() { + Map?>? changeNotifier() { final List callbacks = [_verify]; - return >{ + return ?>{ _nameController: callbacks, _vCodeController: callbacks, _passwordController: callbacks, @@ -66,14 +65,14 @@ class _ResetPasswordPageState extends State with ChangeNotifi } void _reset() { - Toast.show(DeerLocalizations.of(context).confirm); + Toast.show(DeerLocalizations.of(context)!.confirm); } @override Widget build(BuildContext context) { return Scaffold( appBar: MyAppBar( - title: DeerLocalizations.of(context).forgotPasswordLink, + title: DeerLocalizations.of(context)!.forgotPasswordLink, ), body: MyScrollView( keyboardConfig: Utils.getKeyboardActionsConfig(context, [_nodeText1, _nodeText2, _nodeText3]), @@ -87,7 +86,7 @@ class _ResetPasswordPageState extends State with ChangeNotifi List _buildBody() { return [ Text( - DeerLocalizations.of(context).resetLoginPassword, + DeerLocalizations.of(context)!.resetLoginPassword, style: TextStyles.textBold26, ), Gaps.vGap16, @@ -96,7 +95,7 @@ class _ResetPasswordPageState extends State with ChangeNotifi controller: _nameController, maxLength: 11, keyboardType: TextInputType.phone, - hintText: DeerLocalizations.of(context).inputPhoneHint, + hintText: DeerLocalizations.of(context)!.inputPhoneHint, ), Gaps.vGap8, MyTextField( @@ -107,7 +106,7 @@ class _ResetPasswordPageState extends State with ChangeNotifi return Future.value(true); }, maxLength: 6, - hintText: DeerLocalizations.of(context).inputVerificationCodeHint, + hintText: DeerLocalizations.of(context)!.inputVerificationCodeHint, ), Gaps.vGap8, MyTextField( @@ -116,12 +115,12 @@ class _ResetPasswordPageState extends State with ChangeNotifi controller: _passwordController, maxLength: 16, keyboardType: TextInputType.visiblePassword, - hintText: DeerLocalizations.of(context).inputPasswordHint, + hintText: DeerLocalizations.of(context)!.inputPasswordHint, ), Gaps.vGap24, MyButton( onPressed: _clickable ? _reset : null, - text: DeerLocalizations.of(context).confirm, + text: DeerLocalizations.of(context)!.confirm, ) ]; } diff --git a/lib/login/page/sms_login_page.dart b/lib/login/page/sms_login_page.dart index 3fe63a6e6..e7d0f192a 100644 --- a/lib/login/page/sms_login_page.dart +++ b/lib/login/page/sms_login_page.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'dart:ui'; import 'package:flutter/material.dart'; @@ -18,7 +17,7 @@ import '../login_router.dart'; /// design/1注册登录/index.html#artboard4 class SMSLoginPage extends StatefulWidget { - const SMSLoginPage({Key key}) : super(key: key); + const SMSLoginPage({Key? key}) : super(key: key); @override _SMSLoginPageState createState() => _SMSLoginPageState(); @@ -33,9 +32,9 @@ class _SMSLoginPageState extends State with ChangeNotifierMixin> changeNotifier() { + Map?>? changeNotifier() { final List callbacks = [_verify]; - return >{ + return ?>{ _phoneController: callbacks, _vCodeController: callbacks, _nodeText1: null, @@ -79,7 +78,7 @@ class _SMSLoginPageState extends State with ChangeNotifierMixin _buildBody() { return [ Text( - DeerLocalizations.of(context).verificationCodeLogin, + DeerLocalizations.of(context)!.verificationCodeLogin, style: TextStyles.textBold26, ), Gaps.vGap16, @@ -88,7 +87,7 @@ class _SMSLoginPageState extends State with ChangeNotifierMixin with ChangeNotifierMixin.value(true); @@ -108,10 +107,10 @@ class _SMSLoginPageState extends State with ChangeNotifierMixin[ - TextSpan(text: DeerLocalizations.of(context).register, style: TextStyle(color: Theme.of(context).errorColor)), + TextSpan(text: DeerLocalizations.of(context)!.register, style: TextStyle(color: Theme.of(context).errorColor)), TextSpan(text: Utils.getCurrLocale() == 'zh' ? '。' : '.'), ], ), @@ -122,14 +121,14 @@ class _SMSLoginPageState extends State with ChangeNotifierMixin NavigatorUtils.push(context, LoginRouter.resetPasswordPage), diff --git a/lib/login/page/update_password_page.dart b/lib/login/page/update_password_page.dart index d3da5fd4d..54da90edb 100644 --- a/lib/login/page/update_password_page.dart +++ b/lib/login/page/update_password_page.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/util/change_notifier_manage.dart'; import 'package:flutter_deer/res/resources.dart'; @@ -14,7 +13,7 @@ import 'package:flutter_deer/login/widgets/my_text_field.dart'; /// design/1注册登录/index.html#artboard13 class UpdatePasswordPage extends StatefulWidget { - const UpdatePasswordPage({Key key}) : super(key: key); + const UpdatePasswordPage({Key? key}) : super(key: key); @override _UpdatePasswordPageState createState() => _UpdatePasswordPageState(); @@ -29,9 +28,9 @@ class _UpdatePasswordPageState extends State with ChangeNoti bool _clickable = false; @override - Map> changeNotifier() { + Map?>? changeNotifier() { final List callbacks = [_verify]; - return >{ + return ?>{ _oldPwdController: callbacks, _newPwdController: callbacks, _nodeText1: null, @@ -79,7 +78,7 @@ class _UpdatePasswordPageState extends State with ChangeNoti Gaps.vGap8, Text( '设置账号 15000000000', - style: Theme.of(context).textTheme.subtitle2.copyWith(fontSize: Dimens.font_sp12), + style: Theme.of(context).textTheme.subtitle2?.copyWith(fontSize: Dimens.font_sp12), ), Gaps.vGap32, MyTextField( diff --git a/lib/login/widgets/my_text_field.dart b/lib/login/widgets/my_text_field.dart index 0c92bff94..7f5e6c412 100644 --- a/lib/login/widgets/my_text_field.dart +++ b/lib/login/widgets/my_text_field.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'dart:async'; import 'package:flutter/foundation.dart'; @@ -15,8 +14,8 @@ import 'package:flutter_deer/widgets/my_button.dart'; class MyTextField extends StatefulWidget { const MyTextField({ - Key key, - @required this.controller, + Key? key, + required this.controller, this.maxLength = 16, this.autoFocus = false, this.keyboardType = TextInputType.text, @@ -32,11 +31,11 @@ class MyTextField extends StatefulWidget { final bool autoFocus; final TextInputType keyboardType; final String hintText; - final FocusNode focusNode; + final FocusNode? focusNode; final bool isInputPwd; - final Future Function() getVCode; + final Future Function()? getVCode; /// 用于集成测试寻找widget - final String keyName; + final String? keyName; @override _MyTextFieldState createState() => _MyTextFieldState(); @@ -49,8 +48,8 @@ class _MyTextFieldState extends State { /// 倒计时秒数 final int _second = 30; /// 当前秒数 - int _currentSecond; - StreamSubscription _subscription; + late int _currentSecond; + StreamSubscription? _subscription; @override void initState() { @@ -74,12 +73,12 @@ class _MyTextFieldState extends State { @override void dispose() { _subscription?.cancel(); - widget.controller?.removeListener(isEmpty); + widget.controller.removeListener(isEmpty); super.dispose(); } Future _getVCode() async { - final bool isSuccess = await widget.getVCode(); + final bool isSuccess = await widget.getVCode!(); if (isSuccess != null && isSuccess) { setState(() { _currentSecond = _second; @@ -122,7 +121,7 @@ class _MyTextFieldState extends State { ), enabledBorder: UnderlineInputBorder( borderSide: BorderSide( - color: Theme.of(context).dividerTheme.color, + color: Theme.of(context).dividerTheme.color!, width: 0.8, ), ), @@ -137,7 +136,7 @@ class _MyTextFieldState extends State { ); } - Widget clearButton; + late Widget clearButton; if (_isShowDelete) { clearButton = Semantics( @@ -154,7 +153,7 @@ class _MyTextFieldState extends State { ); } - Widget pwdVisible; + late Widget pwdVisible; if (widget.isInputPwd) { pwdVisible = Semantics( label: '密码可见开关', @@ -175,13 +174,13 @@ class _MyTextFieldState extends State { ); } - Widget getVCodeButton; + late Widget getVCodeButton; if (widget.getVCode != null) { getVCodeButton = MyButton( key: const Key('getVerificationCode'), onPressed: _clickable ? _getVCode : null, fontSize: Dimens.font_sp12, - text: _clickable ? DeerLocalizations.of(context).getVerificationCode : '($_currentSecond s)', + text: _clickable ? DeerLocalizations.of(context)!.getVerificationCode : '($_currentSecond s)', textColor: themeData.primaryColor, disabledTextColor: isDark ? Colours.dark_text : Colors.white, backgroundColor: Colors.transparent, diff --git a/lib/main.dart b/lib/main.dart index 127314d4e..b6f99a5df 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:dio/dio.dart'; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; @@ -29,9 +28,10 @@ Future main() async { // debugProfilePaintsEnabled = true; // debugRepaintRainbowEnabled = true; - // 确保初始化完成 + /// 确保初始化完成 WidgetsFlutterBinding.ensureInitialized(); - // 去除URL中的“#”(hash),仅针对Web。默认为setHashUrlStrategy + /// 去除URL中的“#”(hash),仅针对Web。默认为setHashUrlStrategy + /// 注意本地部署和远程部署时`web/index.html`中的base标签,https://github.com/flutter/flutter/issues/69760 setPathUrlStrategy(); /// sp初始化 await SpUtil.getInstance(); @@ -45,15 +45,15 @@ Future main() async { class MyApp extends StatelessWidget { - MyApp({Key key, this.home, this.theme}): super(key: key) { + MyApp({Key? key, this.home, this.theme}): super(key: key) { Log.init(); initDio(); Routes.initRoutes(); initQuickActions(); } - final Widget home; - final ThemeData theme; + final Widget? home; + final ThemeData? theme; static GlobalKey navigatorKey = GlobalKey(); void initDio() { @@ -83,7 +83,7 @@ class MyApp extends StatelessWidget { // 总体来说使用不方便,这种动态的方式在安卓中局限性高。这里仅做练习使用。 quickActions.initialize((String shortcutType) async { if (shortcutType == 'demo') { - navigatorKey.currentState.push(MaterialPageRoute( + navigatorKey.currentState?.push(MaterialPageRoute( builder: (BuildContext context) => const DemoPage(), )); } @@ -141,7 +141,7 @@ class MyApp extends StatelessWidget { supportedLocales: DeerLocalizations.supportedLocales, locale: localeProvider.locale, navigatorKey: navigatorKey, - builder: (BuildContext context, Widget child) { + builder: (BuildContext context, Widget? child) { /// 仅针对安卓 if (Device.isAndroid) { /// 切换深色模式会触发此方法,这里设置导航栏颜色 @@ -150,7 +150,7 @@ class MyApp extends StatelessWidget { /// 保证文字大小不受手机系统设置影响 https://www.kikt.top/posts/flutter/layout/dynamic-text/ return MediaQuery( data: MediaQuery.of(context).copyWith(textScaleFactor: 1.0), - child: child, + child: child!, ); }, /// 因为使用了fluro,这里设置主要针对Web diff --git a/lib/net/intercept.dart b/lib/net/intercept.dart index d6aafe60b..d9d76241e 100644 --- a/lib/net/intercept.dart +++ b/lib/net/intercept.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'dart:convert'; @@ -8,14 +7,14 @@ import 'package:sp_util/sp_util.dart'; import 'package:flutter_deer/common/common.dart'; import 'package:flutter_deer/util/log_utils.dart'; import 'package:sprintf/sprintf.dart'; - +import 'package:flutter_deer/util/other_utils.dart'; import 'dio_utils.dart'; import 'error_handle.dart'; class AuthInterceptor extends Interceptor { @override void onRequest(RequestOptions options, RequestInterceptorHandler handler) { - final String accessToken = SpUtil.getString(Constant.accessToken); + final String accessToken = SpUtil.getString(Constant.accessToken).nullSafe; if (accessToken.isNotEmpty) { options.headers['Authorization'] = 'token $accessToken'; } @@ -29,16 +28,16 @@ class AuthInterceptor extends Interceptor { class TokenInterceptor extends Interceptor { - Dio _tokenDio; + Dio? _tokenDio; - Future getToken() async { + Future getToken() async { final Map params = {}; - params['refresh_token'] = SpUtil.getString(Constant.refreshToken); + params['refresh_token'] = SpUtil.getString(Constant.refreshToken).nullSafe; try { _tokenDio ??= Dio(); - _tokenDio.options = DioUtils.instance.dio.options; - final Response response = await _tokenDio.post('lgn/refreshToken', data: params); + _tokenDio!.options = DioUtils.instance.dio.options; + final Response response = await _tokenDio!.post('lgn/refreshToken', data: params); if (response.statusCode == ExceptionHandle.success) { return json.decode(response.data.toString())['access_token'] as String; } @@ -55,9 +54,9 @@ class TokenInterceptor extends Interceptor { Log.d('-----------自动刷新Token------------'); final Dio dio = DioUtils.instance.dio; dio.lock(); - final String accessToken = await getToken(); // 获取新的accessToken + final String? accessToken = await getToken(); // 获取新的accessToken Log.e('-----------NewToken: $accessToken ------------'); - SpUtil.putString(Constant.accessToken, accessToken); + SpUtil.putString(Constant.accessToken, accessToken.nullSafe); dio.unlock(); if (accessToken != null) { @@ -73,7 +72,7 @@ class TokenInterceptor extends Interceptor { try { Log.e('----------- 重新请求接口 ------------'); /// 避免重复执行拦截器,使用tokenDio - final Response response = await _tokenDio.request(request.path, + final Response response = await _tokenDio!.request(request.path, data: request.data, queryParameters: request.queryParameters, cancelToken: request.cancelToken, @@ -92,8 +91,8 @@ class TokenInterceptor extends Interceptor { class LoggingInterceptor extends Interceptor{ - DateTime _startTime; - DateTime _endTime; + late DateTime _startTime; + late DateTime _endTime; @override void onRequest(RequestOptions options, RequestInterceptorHandler handler) { @@ -154,7 +153,7 @@ class AdapterInterceptor extends Interceptor{ @override void onError(DioError err, ErrorInterceptorHandler handler) { if (err.response != null) { - adapterData(err.response); + adapterData(err.response!); } super.onError(err, handler); } diff --git a/lib/order/iview/order_search_iview.dart b/lib/order/iview/order_search_iview.dart index a6b790ed6..cb629bf11 100644 --- a/lib/order/iview/order_search_iview.dart +++ b/lib/order/iview/order_search_iview.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter_deer/mvp/mvps.dart'; import 'package:flutter_deer/order/models/search_entity.dart'; import 'package:flutter_deer/provider/base_list_provider.dart'; diff --git a/lib/order/order_router.dart b/lib/order/order_router.dart index cc381eda3..db1512a23 100644 --- a/lib/order/order_router.dart +++ b/lib/order/order_router.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:fluro/fluro.dart'; import 'package:flutter_deer/routers/i_router.dart'; @@ -7,7 +6,6 @@ import 'page/order_page.dart'; import 'page/order_search_page.dart'; import 'page/order_track_page.dart'; - class OrderRouter implements IRouterProvider{ static String orderPage = '/order'; diff --git a/lib/order/page/order_info_page.dart b/lib/order/page/order_info_page.dart index 56638b57f..ee27414dc 100644 --- a/lib/order/page/order_info_page.dart +++ b/lib/order/page/order_info_page.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; @@ -16,7 +15,7 @@ import '../order_router.dart'; /// design/3订单/index.html#artboard10 class OrderInfoPage extends StatefulWidget { - const OrderInfoPage({Key key}) : super(key: key); + const OrderInfoPage({Key? key}) : super(key: key); @override _OrderInfoPageState createState() => _OrderInfoPageState(); @@ -178,7 +177,7 @@ class _OrderInfoPageState extends State { padding: const EdgeInsets.symmetric(vertical: 4.0), child: Row( children: [ - Text(title, style: Theme.of(context).textTheme.subtitle2.copyWith(fontSize: Dimens.font_sp14)), + Text(title, style: Theme.of(context).textTheme.subtitle2?.copyWith(fontSize: Dimens.font_sp14)), Gaps.hGap8, Text(content) ], @@ -257,7 +256,7 @@ class _OrderInfoPageState extends State { ); } - Widget _buildGoodsInfoItem(String title, String content, {Color contentTextColor}) { + Widget _buildGoodsInfoItem(String title, String content, {Color? contentTextColor}) { return MergeSemantics( child: Container( padding: const EdgeInsets.symmetric(vertical: 8.0), @@ -266,7 +265,7 @@ class _OrderInfoPageState extends State { children: [ Text(title), Text(content, style: TextStyle( - color: contentTextColor ?? Theme.of(context).textTheme.bodyText2.color, + color: contentTextColor ?? Theme.of(context).textTheme.bodyText2?.color, fontWeight: FontWeight.bold )) ], diff --git a/lib/order/page/order_list_page.dart b/lib/order/page/order_list_page.dart index 0d686da2a..26ee5c42c 100644 --- a/lib/order/page/order_list_page.dart +++ b/lib/order/page/order_list_page.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/order/provider/order_page_provider.dart'; import 'package:flutter_deer/order/widgets/order_item.dart'; @@ -11,8 +10,8 @@ import 'package:provider/provider.dart'; class OrderListPage extends StatefulWidget { const OrderListPage({ - Key key, - @required this.index, + Key? key, + required this.index, }): super(key: key); final int index; @@ -40,7 +39,7 @@ class _OrderListPageState extends State with AutomaticKeepAliveCl } @override - Map> changeNotifier() { + Map?>? changeNotifier() { return {_controller: null}; } @@ -69,7 +68,7 @@ class _OrderListPageState extends State with AutomaticKeepAliveCl ///SliverAppBar的expandedHeight高度,避免重叠 handle: NestedScrollView.sliverOverlapAbsorberHandleFor(context), ), - child, + child!, ], ); }, diff --git a/lib/order/page/order_page.dart b/lib/order/page/order_page.dart index ed2b9d62b..08fd929da 100644 --- a/lib/order/page/order_page.dart +++ b/lib/order/page/order_page.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/order/page/order_list_page.dart'; @@ -19,7 +18,7 @@ import '../order_router.dart'; /// design/3订单/index.html class OrderPage extends StatefulWidget { - const OrderPage({Key key}) : super(key: key); + const OrderPage({Key? key}) : super(key: key); @override _OrderPageState createState() => _OrderPageState(); @@ -30,7 +29,7 @@ class _OrderPageState extends State with AutomaticKeepAliveClientMixi @override bool get wantKeepAlive => true; - TabController _tabController; + TabController? _tabController; OrderPageProvider provider = OrderPageProvider(); int _lastReportedPage = 0; @@ -39,7 +38,7 @@ class _OrderPageState extends State with AutomaticKeepAliveClientMixi void initState() { super.initState(); _tabController = TabController(vsync: this, length: 5); - WidgetsBinding.instance.addPostFrameCallback((_) { + WidgetsBinding.instance!.addPostFrameCallback((_) { /// 预先缓存剩余切换图片 _preCacheImage(); }); @@ -55,7 +54,7 @@ class _OrderPageState extends State with AutomaticKeepAliveClientMixi @override void dispose() { - _tabController.dispose(); + _tabController?.dispose(); super.dispose(); } @@ -91,7 +90,7 @@ class _OrderPageState extends State with AutomaticKeepAliveClientMixi /// PageView的onPageChanged是监听ScrollUpdateNotification,会造成滑动中卡顿。这里修改为监听滚动结束再更新、 if (notification.depth == 0 && notification is ScrollEndNotification) { final PageMetrics metrics = notification.metrics as PageMetrics; - final int currentPage = metrics.page.round(); + final int currentPage = (metrics.page ?? 0).round(); if (currentPage != _lastReportedPage) { _lastReportedPage = currentPage; _onPageChange(currentPage); @@ -206,7 +205,7 @@ class _OrderPageState extends State with AutomaticKeepAliveClientMixi Future _onPageChange(int index) async { provider.setIndex(index); /// 这里没有指示器,所以缩短过渡动画时间,减少不必要的刷新 - _tabController.animateTo(index, duration: const Duration(milliseconds: 0)); + _tabController?.animateTo(index, duration: const Duration(milliseconds: 0)); } } diff --git a/lib/order/page/order_search_page.dart b/lib/order/page/order_search_page.dart index f434757d2..809b4a6bc 100644 --- a/lib/order/page/order_search_page.dart +++ b/lib/order/page/order_search_page.dart @@ -1,5 +1,3 @@ -// @dart=2.9 - import 'package:flutter/material.dart'; import 'package:flutter_deer/mvp/base_page.dart'; import 'package:flutter_deer/mvp/power_presenter.dart'; @@ -12,13 +10,14 @@ import 'package:flutter_deer/shop/iview/shop_iview.dart'; import 'package:flutter_deer/shop/presenter/shop_presenter.dart'; import 'package:flutter_deer/widgets/my_refresh_list.dart'; import 'package:flutter_deer/widgets/search_bar.dart'; +import 'package:flutter_deer/util/other_utils.dart'; import 'package:flutter_deer/widgets/state_layout.dart'; import 'package:provider/provider.dart'; /// design/3订单/index.html#artboard8 class OrderSearchPage extends StatefulWidget { - const OrderSearchPage({Key key}) : super(key: key); + const OrderSearchPage({Key? key}) : super(key: key); @override _OrderSearchPageState createState() => _OrderSearchPageState(); @@ -29,7 +28,7 @@ class _OrderSearchPageState extends State with BasePageMixin provider = BaseListProvider(); - String _keyword; + late String _keyword; int _page = 1; @override @@ -71,7 +70,7 @@ class _OrderSearchPageState extends State with BasePageMixin with BasePageMixin with BasePageMixin false; @override - void setUser(UserEntity user) { - showToast(user.name); + void setUser(UserEntity? user) { + showToast(user?.name ?? ''); } } diff --git a/lib/order/page/order_track_page.dart b/lib/order/page/order_track_page.dart index 11dfba7bc..b8bebf59f 100644 --- a/lib/order/page/order_track_page.dart +++ b/lib/order/page/order_track_page.dart @@ -1,5 +1,3 @@ -// @dart=2.9 - import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/widgets/my_app_bar.dart'; @@ -9,7 +7,7 @@ import 'package:flutter_deer/widgets/my_scroll_view.dart'; /// design/3订单/index.html#artboard10 class OrderTrackPage extends StatefulWidget { - const OrderTrackPage({Key key}) : super(key: key); + const OrderTrackPage({Key? key}) : super(key: key); @override _OrderTrackPageState createState() => _OrderTrackPageState(); diff --git a/lib/order/presenter/order_search_presenter.dart b/lib/order/presenter/order_search_presenter.dart index 888577278..732749b88 100644 --- a/lib/order/presenter/order_search_presenter.dart +++ b/lib/order/presenter/order_search_presenter.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter_deer/mvp/base_page_presenter.dart'; import 'package:flutter_deer/net/net.dart'; import 'package:flutter_deer/order/models/search_entity.dart'; @@ -19,20 +18,20 @@ class OrderSearchPresenter extends BasePagePresenter { queryParameters: params, isShow: isShowDialog, onSuccess: (data) { - if (data != null) { + if (data != null && data.items != null) { /// 一页30条数据,等于30条认为有下一页 /// 具体的处理逻辑根据具体的接口情况处理,这部分可以抽离出来 - view.provider.setHasMore(data.items.length == 30); + view.provider.setHasMore(data.items!.length == 30); if (page == 1) { /// 刷新 view.provider.list.clear(); - if (data.items.isEmpty) { + if (data.items!.isEmpty) { view.provider.setStateType(StateType.order); } else { - view.provider.addAll(data.items); + view.provider.addAll(data.items!); } } else { - view.provider.addAll(data.items); + view.provider.addAll(data.items!); } } else { /// 加载失败 diff --git a/lib/order/widgets/order_item.dart b/lib/order/widgets/order_item.dart index 349d342b5..39bcb8625 100644 --- a/lib/order/widgets/order_item.dart +++ b/lib/order/widgets/order_item.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:common_utils/common_utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_deer/order/widgets/pay_type_dialog.dart'; @@ -17,9 +16,9 @@ const List orderRightButtonText = ['接单', '开始配送', '完成', ' class OrderItem extends StatelessWidget { const OrderItem({ - Key key, - @required this.tabIndex, - @required this.index, + Key? key, + required this.tabIndex, + required this.index, }) : super(key: key); final int tabIndex; @@ -43,7 +42,7 @@ class OrderItem extends StatelessWidget { } Widget _buildContent(BuildContext context) { - final TextStyle textTextStyle = Theme.of(context).textTheme.bodyText2.copyWith(fontSize: Dimens.font_sp12); + final TextStyle? textTextStyle = Theme.of(context).textTheme.bodyText2?.copyWith(fontSize: Dimens.font_sp12); final bool isDark = context.isDark; return Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -98,7 +97,7 @@ class OrderItem extends StatelessWidget { style: textTextStyle, children: [ TextSpan(text: Utils.formatPrice('20.00', format: MoneyFormat.NORMAL)), - TextSpan(text: ' 共3件商品', style: Theme.of(context).textTheme.subtitle2.copyWith(fontSize: Dimens.font_sp10)), + TextSpan(text: ' 共3件商品', style: Theme.of(context).textTheme.subtitle2?.copyWith(fontSize: Dimens.font_sp10)), ], ), ), @@ -203,16 +202,16 @@ class OrderItem extends StatelessWidget { class OrderItemButton extends StatelessWidget { const OrderItemButton({ - Key key, + Key? key, this.bgColor, this.textColor, - this.text, + required this.text, this.onTap }): super(key: key); - final Color bgColor; - final Color textColor; - final GestureTapCallback onTap; + final Color? bgColor; + final Color? textColor; + final GestureTapCallback? onTap; final String text; @override diff --git a/lib/order/widgets/order_tag_item.dart b/lib/order/widgets/order_tag_item.dart index 1e7a336c5..02bf9480b 100644 --- a/lib/order/widgets/order_tag_item.dart +++ b/lib/order/widgets/order_tag_item.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/util/theme_utils.dart'; @@ -8,9 +7,9 @@ import 'package:flutter_deer/widgets/my_card.dart'; class OrderTagItem extends StatelessWidget { const OrderTagItem({ - Key key, - @required this.date, - @required this.orderTotal, + Key? key, + required this.date, + required this.orderTotal, }) : super(key: key); final String date; diff --git a/lib/order/widgets/pay_type_dialog.dart b/lib/order/widgets/pay_type_dialog.dart index 74b55e214..cf5aa491b 100644 --- a/lib/order/widgets/pay_type_dialog.dart +++ b/lib/order/widgets/pay_type_dialog.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; @@ -9,11 +8,11 @@ import 'package:flutter_deer/widgets/load_image.dart'; class PayTypeDialog extends StatefulWidget { const PayTypeDialog({ - Key key, + Key? key, this.onPressed, }) : super(key : key); - final Function(int, String) onPressed; + final Function(int, String)? onPressed; @override _PayTypeDialog createState() => _PayTypeDialog(); @@ -72,7 +71,7 @@ class _PayTypeDialog extends State { ), onPressed: () { NavigatorUtils.goBack(context); - widget.onPressed(_value, _list[_value]); + widget.onPressed?.call(_value, _list[_value]); }, ); } diff --git a/lib/util/change_notifier_manage.dart b/lib/util/change_notifier_manage.dart index f73040791..5083b4c0a 100644 --- a/lib/util/change_notifier_manage.dart +++ b/lib/util/change_notifier_manage.dart @@ -32,7 +32,7 @@ import 'package:flutter/widgets.dart'; /// final FocusNode _nodeText = FocusNode(); /// /// @override -/// Map> changeNotifier() { +/// Map?>? changeNotifier() { /// return { /// _controller: [callback], /// _nodeText: null, @@ -42,9 +42,9 @@ import 'package:flutter/widgets.dart'; /// ``` mixin ChangeNotifierMixin on State { - Map>? _map; + Map?>? _map; - Map> changeNotifier(); + Map?>? changeNotifier(); @override void initState() { From 8227e4c16c4171f204a504d46be952d47bc3c8f2 Mon Sep 17 00:00:00 2001 From: weilu Date: Mon, 26 Apr 2021 08:28:20 +0800 Subject: [PATCH 015/206] =?UTF-8?q?=E8=BF=81=E7=A7=BB=E8=87=B3=E7=A9=BA?= =?UTF-8?q?=E5=AE=89=E5=85=A8=E5=AE=8C=E6=88=90=20#161?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README-EN.md | 4 +++- README.md | 8 +++++--- docs/CHANGELOG.md | 5 +++++ ...51\227\256\351\242\230\346\261\207\346\200\273.md" | 11 +++++++---- lib/login/page/sms_login_page.dart | 2 +- lib/shop/page/select_address_page.dart | 5 +++++ lib/util/other_utils.dart | 8 +------- lib/widgets/selected_image.dart | 7 ++++++- pubspec.yaml | 8 ++++---- test/accessibility_test.dart | 1 - test/account/account_accessibility_test.dart | 1 - test/goods/goods_accessibility_test.dart | 1 - test/login/login_accessibility_test.dart | 1 - test/net/dio_test.dart | 3 +-- test/order/order_accessibility_test.dart | 1 - test/setting/setting_accessibility_test.dart | 1 - test/shop/shop_accessibility_test.dart | 1 - test/statistics/statistic_accessibility_test.dart | 1 - test/store/store_accessibility_test.dart | 1 - test/widget_test.dart | 1 - 20 files changed, 38 insertions(+), 33 deletions(-) diff --git a/README-EN.md b/README-EN.md index da7a31433..b86d56076 100644 --- a/README-EN.md +++ b/README-EN.md @@ -146,7 +146,9 @@ For details, please refer to the [pubspec.yaml](https://github.com/simplezhli/fl * [x] Web support. -* [ ] Migrate to null-safety. +* [x] Migrate to null-safety. + +* [ ] Migrate to Navigator 2.0. ## Thanks For diff --git a/README.md b/README.md index 9addff154..f04e96997 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ **觉得还可以的话,来个Star、Fork支持一波!本项目持续维护中,有问题欢迎提Issue。** -## 实现内容 +## 实现内容(已迁移到空安全) * mvp模式 * 使用`provider` (5.x 版本)做状态管理 @@ -54,7 +54,7 @@ 具体可以下载体验: -Android版安装包:[点击下载](https://www.pgyer.com/gYXj),安装密码:`111111`。 +Android版安装包:[点击下载](https://www.pgyer.com/gYXj),下载密码:`111111`。 iOS需要自行下载代码运行。 @@ -171,7 +171,9 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ * [x] Web端支持。 -* [ ] 迁移到空安全。 +* [x] 迁移到空安全。(安装包减少135KB,10.3M -> 10.1M) + +* [ ] 迁移至Navigator 2.0。 ## 已知存在问题: diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 754921270..f0d3e1c38 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,5 +1,10 @@ # Change Log: +## 1.2.0 + +* 迁移到空安全。 +* 修复曲线图长按滑动不展示提示框问题。 + ## 1.1.7 * 深色模式适配导航栏,优化启动效果。 diff --git "a/docs/Web\351\227\256\351\242\230\346\261\207\346\200\273.md" "b/docs/Web\351\227\256\351\242\230\346\261\207\346\200\273.md" index a11a2c3dd..f1d0671c8 100644 --- "a/docs/Web\351\227\256\351\242\230\346\261\207\346\200\273.md" +++ "b/docs/Web\351\227\256\351\242\230\346\261\207\346\200\273.md" @@ -1,4 +1,10 @@ -# Web 问题汇总(flutter 2.0.3) +# Web 问题汇总(flutter 2.0.5) + +## 使用`Locale`报空安全错误 + +master分支已修复,详情见[[Web]: App throws null safety errors on Locale using latest stable, but works on Master](https://github.com/flutter/flutter/issues/79351) + +由于本项目已迁移至空安全,因此运行Web端时,需要使用master分支或将`other_utils`文件下的`window.locale.languageCode;` 修改为 `window.locale?.languageCode;`。 ## CanvasKit渲染(默认PC浏览器) @@ -57,9 +63,6 @@ flutter run -d chrome --release --web-renderer canvaskit > 总结:HTML渲染相较于CanvasKit渲染,UI还原度差一些,但综合性能相对较好。 -## 历史问题 - -- 2.0.0已知问题(~~#79351~~)。 diff --git a/lib/login/page/sms_login_page.dart b/lib/login/page/sms_login_page.dart index e7d0f192a..883d60075 100644 --- a/lib/login/page/sms_login_page.dart +++ b/lib/login/page/sms_login_page.dart @@ -97,7 +97,7 @@ class _SMSLoginPageState extends State with ChangeNotifierMixin.value(true); }, ), diff --git a/lib/shop/page/select_address_page.dart b/lib/shop/page/select_address_page.dart index ba30d93d0..7e9d6d1f8 100644 --- a/lib/shop/page/select_address_page.dart +++ b/lib/shop/page/select_address_page.dart @@ -2,6 +2,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_2d_amap/flutter_2d_amap.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; +import 'package:flutter_deer/util/toast_utils.dart'; import 'package:flutter_deer/widgets/my_button.dart'; import 'package:flutter_deer/util/other_utils.dart'; import 'package:flutter_deer/widgets/search_bar.dart'; @@ -96,6 +97,10 @@ class _AddressSelectPageState extends State { ), MyButton( onPressed: () { + if (_list.isEmpty) { + Toast.show('未选择地址!'); + return; + } NavigatorUtils.goBackWithParams(context, _list[_index]); }, text: '确认选择地址', diff --git a/lib/util/other_utils.dart b/lib/util/other_utils.dart index 6c3563e6a..405bda748 100644 --- a/lib/util/other_utils.dart +++ b/lib/util/other_utils.dart @@ -3,7 +3,6 @@ import 'dart:ui'; import 'package:common_utils/common_utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_deer/common/common.dart'; -import 'package:flutter_deer/util/device_utils.dart'; import 'package:flutter_deer/util/theme_utils.dart'; import 'package:flutter_deer/util/toast_utils.dart'; import 'package:keyboard_actions/keyboard_actions_item.dart'; @@ -60,18 +59,13 @@ class Utils { static String? getCurrLocale() { final String locale = SpUtil.getString(Constant.locale)!; if (locale == '') { - if (Device.isWeb) { - return window.locale?.languageCode; // 2.0.0 web问题:https://github.com/flutter/flutter/issues/79351 - } else { - return window.locale.languageCode; - } + return window.locale.languageCode; } return locale; } } - Future showElasticDialog({ required BuildContext context, bool barrierDismissible = true, diff --git a/lib/widgets/selected_image.dart b/lib/widgets/selected_image.dart index 8e9354d04..d34f9ff9a 100644 --- a/lib/widgets/selected_image.dart +++ b/lib/widgets/selected_image.dart @@ -2,6 +2,7 @@ import 'dart:io'; import 'package:common_utils/common_utils.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/util/device_utils.dart'; import 'package:flutter_deer/util/image_utils.dart'; @@ -50,7 +51,11 @@ class SelectedImageState extends State { }); } catch (e) { - Toast.show('没有权限,无法打开相册!'); + if (e is MissingPluginException) { + Toast.show('当前平台暂不支持!'); + } else { + Toast.show('没有权限,无法打开相册!'); + } } } diff --git a/pubspec.yaml b/pubspec.yaml index 5bc1a26a6..17fae699e 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,7 +1,7 @@ name: flutter_deer description: Flutter Deer -version: 1.1.7+17 +version: 1.2.0+18 author: 唯鹿 homepage: https://weilu.blog.csdn.net/ @@ -75,10 +75,10 @@ dependencies: # 动画效果 https://github.com/xvrh/lottie-flutter lottie: ^1.0.1 -# flutter_driver与common_utils、lottie等个别库依赖冲突,用依赖版本覆盖处理 +# flutter_driver与common_utils、lottie等个别库依赖冲突,用依赖版本覆盖处理。 dependency_overrides: - archive: ^3.0.0 - crypto: ^3.0.0 + archive: ^3.1.2 + crypto: ^3.0.1 convert: ^3.0.0 dev_dependencies: diff --git a/test/accessibility_test.dart b/test/accessibility_test.dart index ce4f214e3..7a9bf7ace 100644 --- a/test/accessibility_test.dart +++ b/test/accessibility_test.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'account/account_accessibility_test.dart' as account_test; import 'goods/goods_accessibility_test.dart' as goods_test; import 'login/login_accessibility_test.dart' as login_test; diff --git a/test/account/account_accessibility_test.dart b/test/account/account_accessibility_test.dart index 47ea07502..a466be216 100644 --- a/test/account/account_accessibility_test.dart +++ b/test/account/account_accessibility_test.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/account/page/account_page.dart'; import 'package:flutter_deer/account/page/account_record_list_page.dart'; diff --git a/test/goods/goods_accessibility_test.dart b/test/goods/goods_accessibility_test.dart index c3a1b07c3..c34fc9eb6 100644 --- a/test/goods/goods_accessibility_test.dart +++ b/test/goods/goods_accessibility_test.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/goods/page/goods_edit_page.dart'; import 'package:flutter_deer/goods/page/goods_page.dart'; diff --git a/test/login/login_accessibility_test.dart b/test/login/login_accessibility_test.dart index e465f37b9..372ec5934 100644 --- a/test/login/login_accessibility_test.dart +++ b/test/login/login_accessibility_test.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/login/page/login_page.dart'; import 'package:flutter_deer/login/page/register_page.dart'; diff --git a/test/net/dio_test.dart b/test/net/dio_test.dart index ded06056f..492a0303d 100644 --- a/test/net/dio_test.dart +++ b/test/net/dio_test.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:dio/dio.dart'; import 'package:flutter_deer/net/net.dart'; import 'package:flutter_deer/shop/models/user_entity.dart'; @@ -17,7 +16,7 @@ void main() { await DioUtils.instance.requestNetwork( Method.get, HttpApi.users, onSuccess: (data) { - expect(data.name, '唯鹿'); + expect(data?.name, '唯鹿'); }, onError: (_, __) { print('$_, $__'); diff --git a/test/order/order_accessibility_test.dart b/test/order/order_accessibility_test.dart index 35a039308..892691c07 100644 --- a/test/order/order_accessibility_test.dart +++ b/test/order/order_accessibility_test.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/order/page/order_info_page.dart'; import 'package:flutter_deer/order/page/order_page.dart'; diff --git a/test/setting/setting_accessibility_test.dart b/test/setting/setting_accessibility_test.dart index 290d4085d..a34377a76 100644 --- a/test/setting/setting_accessibility_test.dart +++ b/test/setting/setting_accessibility_test.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/provider/theme_provider.dart'; import 'package:flutter_deer/setting/page/about_page.dart'; diff --git a/test/shop/shop_accessibility_test.dart b/test/shop/shop_accessibility_test.dart index a9092a626..30665853a 100644 --- a/test/shop/shop_accessibility_test.dart +++ b/test/shop/shop_accessibility_test.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/shop/page/freight_config_page.dart'; import 'package:flutter_deer/shop/page/input_text_page.dart'; diff --git a/test/statistics/statistic_accessibility_test.dart b/test/statistics/statistic_accessibility_test.dart index 7dfa36542..d98cf7ea0 100644 --- a/test/statistics/statistic_accessibility_test.dart +++ b/test/statistics/statistic_accessibility_test.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/statistics/page/goods_statistics_page.dart'; import 'package:flutter_deer/statistics/page/order_statistics_page.dart'; diff --git a/test/store/store_accessibility_test.dart b/test/store/store_accessibility_test.dart index 0926a41e7..f9183dbc9 100644 --- a/test/store/store_accessibility_test.dart +++ b/test/store/store_accessibility_test.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/provider/theme_provider.dart'; import 'package:flutter_deer/store/page/store_audit_page.dart'; diff --git a/test/widget_test.dart b/test/widget_test.dart index 28196a08f..a9113e921 100644 --- a/test/widget_test.dart +++ b/test/widget_test.dart @@ -1,4 +1,3 @@ -// @dart=2.9 // This is a basic Flutter widget test. // // To perform an interaction with a widget in your test, use the WidgetTester From 1e049f507c181240d3912eff5bcf796e4dda4b86 Mon Sep 17 00:00:00 2001 From: weilu Date: Wed, 28 Apr 2021 08:47:32 +0800 Subject: [PATCH 016/206] =?UTF-8?q?=E7=9B=AE=E5=BD=95=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/account/page/city_select_page.dart | 2 +- lib/home/splash_page.dart | 2 +- lib/login/page/login_page.dart | 2 +- lib/login/widgets/my_text_field.dart | 3 ++- lib/main.dart | 6 +++--- lib/net/base_entity.dart | 2 +- lib/net/dio_utils.dart | 2 +- lib/net/intercept.dart | 2 +- lib/order/iview/order_search_iview.dart | 2 +- lib/order/page/order_search_page.dart | 2 +- lib/{ => order}/provider/base_list_provider.dart | 0 lib/{common/common.dart => res/constant.dart} | 0 lib/setting/page/locale_page.dart | 4 ++-- lib/setting/page/setting_page.dart | 2 +- lib/setting/page/theme_page.dart | 4 ++-- lib/{ => setting}/provider/locale_provider.dart | 2 +- lib/{ => setting}/provider/theme_provider.dart | 2 +- lib/util/handle_error_utils.dart | 2 +- lib/util/log_utils.dart | 2 +- lib/util/other_utils.dart | 2 +- lib/widgets/search_bar.dart | 11 ++++++++++- test/account/account_accessibility_test.dart | 2 +- test/login/login_accessibility_test.dart | 2 +- test/setting/setting_accessibility_test.dart | 2 +- test/store/store_accessibility_test.dart | 2 +- test_driver/account/account.dart | 2 +- test_driver/driver.dart | 2 +- test_driver/order/order.dart | 2 +- test_driver/shop/shop.dart | 2 +- 29 files changed, 41 insertions(+), 31 deletions(-) rename lib/{ => order}/provider/base_list_provider.dart (100%) rename lib/{common/common.dart => res/constant.dart} (100%) rename lib/{ => setting}/provider/locale_provider.dart (91%) rename lib/{ => setting}/provider/theme_provider.dart (98%) diff --git a/lib/account/page/city_select_page.dart b/lib/account/page/city_select_page.dart index d320e0091..295ce3212 100644 --- a/lib/account/page/city_select_page.dart +++ b/lib/account/page/city_select_page.dart @@ -3,7 +3,7 @@ import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_deer/account/models/city_entity.dart'; -import 'package:flutter_deer/common/common.dart'; +import 'package:flutter_deer/res/constant.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; import 'package:flutter_deer/util/theme_utils.dart'; diff --git a/lib/home/splash_page.dart b/lib/home/splash_page.dart index a5e5992a7..2855f000d 100644 --- a/lib/home/splash_page.dart +++ b/lib/home/splash_page.dart @@ -1,7 +1,7 @@ import 'dart:async'; import 'package:flutter/material.dart'; -import 'package:flutter_deer/common/common.dart'; +import 'package:flutter_deer/res/constant.dart'; import 'package:flutter_deer/demo/demo_page.dart'; import 'package:flutter_deer/login/login_router.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; diff --git a/lib/login/page/login_page.dart b/lib/login/page/login_page.dart index 1e4e4519c..05a2feb10 100644 --- a/lib/login/page/login_page.dart +++ b/lib/login/page/login_page.dart @@ -2,7 +2,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:sp_util/sp_util.dart'; -import 'package:flutter_deer/common/common.dart'; +import 'package:flutter_deer/res/constant.dart'; import 'package:flutter_gen/gen_l10n/deer_localizations.dart'; import 'package:flutter_deer/login/widgets/my_text_field.dart'; import 'package:flutter_deer/res/resources.dart'; diff --git a/lib/login/widgets/my_text_field.dart b/lib/login/widgets/my_text_field.dart index 7f5e6c412..73973f8c6 100644 --- a/lib/login/widgets/my_text_field.dart +++ b/lib/login/widgets/my_text_field.dart @@ -128,7 +128,8 @@ class _MyTextFieldState extends State { ), ); - /// 个别Android机型(华为、vivo)的密码安全键盘不弹出问题,临时修复方法:https://github.com/flutter/flutter/issues/68571 (issues/61446) + /// 个别Android机型(华为、vivo)的密码安全键盘不弹出问题(已知小米正常),临时修复方法:https://github.com/flutter/flutter/issues/68571 (issues/61446) + /// 怀疑是安全键盘与三方输入法之间的切换冲突问题。 if (Device.isAndroid) { textField = Listener( onPointerDown: (e) => FocusScope.of(context).requestFocus(widget.focusNode), diff --git a/lib/main.dart b/lib/main.dart index b6f99a5df..8f65e73da 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -2,11 +2,11 @@ import 'package:dio/dio.dart'; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; import 'package:flutter/services.dart'; -import 'package:flutter_deer/common/common.dart'; +import 'package:flutter_deer/res/constant.dart'; import 'package:flutter_deer/net/dio_utils.dart'; import 'package:flutter_deer/net/intercept.dart'; -import 'package:flutter_deer/provider/locale_provider.dart'; -import 'package:flutter_deer/provider/theme_provider.dart'; +import 'package:flutter_deer/setting/provider/locale_provider.dart'; +import 'package:flutter_deer/setting/provider/theme_provider.dart'; import 'package:flutter_deer/routers/not_found_page.dart'; import 'package:flutter_deer/routers/routers.dart'; import 'package:flutter_deer/util/device_utils.dart'; diff --git a/lib/net/base_entity.dart b/lib/net/base_entity.dart index e5b843345..3f9004a91 100644 --- a/lib/net/base_entity.dart +++ b/lib/net/base_entity.dart @@ -1,4 +1,4 @@ -import 'package:flutter_deer/common/common.dart'; +import 'package:flutter_deer/res/constant.dart'; import 'package:flutter_deer/generated/json/base/json_convert_content.dart'; class BaseEntity { diff --git a/lib/net/dio_utils.dart b/lib/net/dio_utils.dart index 064dc69d4..7ede93060 100644 --- a/lib/net/dio_utils.dart +++ b/lib/net/dio_utils.dart @@ -2,7 +2,7 @@ import 'dart:convert'; import 'package:dio/dio.dart'; import 'package:flutter/foundation.dart'; -import 'package:flutter_deer/common/common.dart'; +import 'package:flutter_deer/res/constant.dart'; import 'package:flutter_deer/util/log_utils.dart'; import 'base_entity.dart'; import 'error_handle.dart'; diff --git a/lib/net/intercept.dart b/lib/net/intercept.dart index d9d76241e..1427bc094 100644 --- a/lib/net/intercept.dart +++ b/lib/net/intercept.dart @@ -4,7 +4,7 @@ import 'dart:convert'; import 'package:dio/dio.dart'; import 'package:flutter_deer/util/device_utils.dart'; import 'package:sp_util/sp_util.dart'; -import 'package:flutter_deer/common/common.dart'; +import 'package:flutter_deer/res/constant.dart'; import 'package:flutter_deer/util/log_utils.dart'; import 'package:sprintf/sprintf.dart'; import 'package:flutter_deer/util/other_utils.dart'; diff --git a/lib/order/iview/order_search_iview.dart b/lib/order/iview/order_search_iview.dart index cb629bf11..5d3a4b545 100644 --- a/lib/order/iview/order_search_iview.dart +++ b/lib/order/iview/order_search_iview.dart @@ -1,6 +1,6 @@ import 'package:flutter_deer/mvp/mvps.dart'; import 'package:flutter_deer/order/models/search_entity.dart'; -import 'package:flutter_deer/provider/base_list_provider.dart'; +import 'package:flutter_deer/order/provider/base_list_provider.dart'; abstract class OrderSearchIMvpView implements IMvpView { diff --git a/lib/order/page/order_search_page.dart b/lib/order/page/order_search_page.dart index 809b4a6bc..7a57f4046 100644 --- a/lib/order/page/order_search_page.dart +++ b/lib/order/page/order_search_page.dart @@ -4,7 +4,7 @@ import 'package:flutter_deer/mvp/power_presenter.dart'; import 'package:flutter_deer/order/models/search_entity.dart'; import 'package:flutter_deer/order/iview/order_search_iview.dart'; import 'package:flutter_deer/order/presenter/order_search_presenter.dart'; -import 'package:flutter_deer/provider/base_list_provider.dart'; +import 'package:flutter_deer/order/provider/base_list_provider.dart'; import 'package:flutter_deer/shop/models/user_entity.dart'; import 'package:flutter_deer/shop/iview/shop_iview.dart'; import 'package:flutter_deer/shop/presenter/shop_presenter.dart'; diff --git a/lib/provider/base_list_provider.dart b/lib/order/provider/base_list_provider.dart similarity index 100% rename from lib/provider/base_list_provider.dart rename to lib/order/provider/base_list_provider.dart diff --git a/lib/common/common.dart b/lib/res/constant.dart similarity index 100% rename from lib/common/common.dart rename to lib/res/constant.dart diff --git a/lib/setting/page/locale_page.dart b/lib/setting/page/locale_page.dart index 084bd8a93..fd7a5329b 100644 --- a/lib/setting/page/locale_page.dart +++ b/lib/setting/page/locale_page.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -import 'package:flutter_deer/common/common.dart'; -import 'package:flutter_deer/provider/locale_provider.dart'; +import 'package:flutter_deer/res/constant.dart'; +import 'package:flutter_deer/setting/provider/locale_provider.dart'; import 'package:flutter_deer/util/toast_utils.dart'; import 'package:sp_util/sp_util.dart'; import 'package:flutter_deer/widgets/my_app_bar.dart'; diff --git a/lib/setting/page/setting_page.dart b/lib/setting/page/setting_page.dart index ee85d445a..891251f3e 100644 --- a/lib/setting/page/setting_page.dart +++ b/lib/setting/page/setting_page.dart @@ -2,7 +2,7 @@ import 'package:flutter_deer/demo/demo_page.dart'; import 'package:flutter_deer/util/device_utils.dart'; import 'package:sp_util/sp_util.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_deer/common/common.dart'; +import 'package:flutter_deer/res/constant.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; import 'package:flutter_deer/setting/widgets/exit_dialog.dart'; diff --git a/lib/setting/page/theme_page.dart b/lib/setting/page/theme_page.dart index 529d000d7..aedf4eb9f 100644 --- a/lib/setting/page/theme_page.dart +++ b/lib/setting/page/theme_page.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; -import 'package:flutter_deer/common/common.dart'; +import 'package:flutter_deer/res/constant.dart'; +import 'package:flutter_deer/setting/provider/theme_provider.dart'; import 'package:sp_util/sp_util.dart'; -import 'package:flutter_deer/provider/theme_provider.dart'; import 'package:flutter_deer/widgets/my_app_bar.dart'; import 'package:provider/provider.dart'; diff --git a/lib/provider/locale_provider.dart b/lib/setting/provider/locale_provider.dart similarity index 91% rename from lib/provider/locale_provider.dart rename to lib/setting/provider/locale_provider.dart index ba42a1955..2832e05ff 100644 --- a/lib/provider/locale_provider.dart +++ b/lib/setting/provider/locale_provider.dart @@ -3,7 +3,7 @@ import 'dart:ui'; import 'package:sp_util/sp_util.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_deer/common/common.dart'; +import 'package:flutter_deer/res/constant.dart'; class LocaleProvider extends ChangeNotifier { diff --git a/lib/provider/theme_provider.dart b/lib/setting/provider/theme_provider.dart similarity index 98% rename from lib/provider/theme_provider.dart rename to lib/setting/provider/theme_provider.dart index 0fefee124..e660f5153 100644 --- a/lib/provider/theme_provider.dart +++ b/lib/setting/provider/theme_provider.dart @@ -4,7 +4,7 @@ import 'package:flutter_deer/routers/web_page_transitions.dart'; import 'package:sp_util/sp_util.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_deer/common/common.dart'; +import 'package:flutter_deer/res/constant.dart'; import 'package:flutter_deer/res/resources.dart'; extension ThemeModeExtension on ThemeMode { diff --git a/lib/util/handle_error_utils.dart b/lib/util/handle_error_utils.dart index e2471d09f..935c24717 100644 --- a/lib/util/handle_error_utils.dart +++ b/lib/util/handle_error_utils.dart @@ -1,7 +1,7 @@ import 'dart:async'; import 'package:flutter/widgets.dart'; -import 'package:flutter_deer/common/common.dart'; +import 'package:flutter_deer/res/constant.dart'; /// 捕获全局异常,进行统一处理。 void handleError(void body) { diff --git a/lib/util/log_utils.dart b/lib/util/log_utils.dart index 47b2b9036..ff327701d 100644 --- a/lib/util/log_utils.dart +++ b/lib/util/log_utils.dart @@ -1,7 +1,7 @@ import 'dart:convert' as convert; import 'package:common_utils/common_utils.dart'; -import 'package:flutter_deer/common/common.dart'; +import 'package:flutter_deer/res/constant.dart'; /// 输出Log工具类 class Log { diff --git a/lib/util/other_utils.dart b/lib/util/other_utils.dart index 405bda748..cc65d9a8e 100644 --- a/lib/util/other_utils.dart +++ b/lib/util/other_utils.dart @@ -2,7 +2,7 @@ import 'dart:ui'; import 'package:common_utils/common_utils.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_deer/common/common.dart'; +import 'package:flutter_deer/res/constant.dart'; import 'package:flutter_deer/util/theme_utils.dart'; import 'package:flutter_deer/util/toast_utils.dart'; import 'package:keyboard_actions/keyboard_actions_item.dart'; diff --git a/lib/widgets/search_bar.dart b/lib/widgets/search_bar.dart index 6e70a02ce..7c4f94416 100644 --- a/lib/widgets/search_bar.dart +++ b/lib/widgets/search_bar.dart @@ -39,7 +39,16 @@ class _SearchBarState extends State { _controller.dispose(); super.dispose(); } - + + // @override + // void initState() { + // WidgetsBinding.instance!.addPostFrameCallback((_) async { + // SystemChannels.textInput.invokeMethod('TextInput.updateConfig', const TextInputConfiguration().toJson()); + // SystemChannels.textInput.invokeMethod('TextInput.hide'); + // }); + // super.initState(); + // } + @override Widget build(BuildContext context) { final bool isDark = context.isDark; diff --git a/test/account/account_accessibility_test.dart b/test/account/account_accessibility_test.dart index a466be216..658f7c7db 100644 --- a/test/account/account_accessibility_test.dart +++ b/test/account/account_accessibility_test.dart @@ -10,7 +10,7 @@ import 'package:flutter_deer/account/page/withdrawal_page.dart'; import 'package:flutter_deer/account/page/withdrawal_password_page.dart'; import 'package:flutter_deer/account/page/withdrawal_record_list_page.dart'; import 'package:flutter_deer/account/page/withdrawal_result_page.dart'; -import 'package:flutter_deer/provider/theme_provider.dart'; +import 'package:flutter_deer/setting/provider/theme_provider.dart'; import 'package:flutter_test/flutter_test.dart'; void main() { diff --git a/test/login/login_accessibility_test.dart b/test/login/login_accessibility_test.dart index 372ec5934..8fa312b4f 100644 --- a/test/login/login_accessibility_test.dart +++ b/test/login/login_accessibility_test.dart @@ -5,7 +5,7 @@ import 'package:flutter_deer/login/page/reset_password_page.dart'; import 'package:flutter_deer/login/page/sms_login_page.dart'; import 'package:flutter_deer/login/page/update_password_page.dart'; import 'package:flutter_deer/main.dart'; -import 'package:flutter_deer/provider/theme_provider.dart'; +import 'package:flutter_deer/setting/provider/theme_provider.dart'; import 'package:flutter_test/flutter_test.dart'; void main() { diff --git a/test/setting/setting_accessibility_test.dart b/test/setting/setting_accessibility_test.dart index a34377a76..e51f4f78f 100644 --- a/test/setting/setting_accessibility_test.dart +++ b/test/setting/setting_accessibility_test.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:flutter_deer/provider/theme_provider.dart'; +import 'package:flutter_deer/setting/provider/theme_provider.dart'; import 'package:flutter_deer/setting/page/about_page.dart'; import 'package:flutter_deer/setting/page/account_manager_page.dart'; import 'package:flutter_deer/setting/page/setting_page.dart'; diff --git a/test/store/store_accessibility_test.dart b/test/store/store_accessibility_test.dart index f9183dbc9..6e73afee4 100644 --- a/test/store/store_accessibility_test.dart +++ b/test/store/store_accessibility_test.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:flutter_deer/provider/theme_provider.dart'; +import 'package:flutter_deer/setting/provider/theme_provider.dart'; import 'package:flutter_deer/store/page/store_audit_page.dart'; import 'package:flutter_deer/store/page/store_audit_result_page.dart'; import 'package:flutter_test/flutter_test.dart'; diff --git a/test_driver/account/account.dart b/test_driver/account/account.dart index b0370c93d..4cfcd7b18 100644 --- a/test_driver/account/account.dart +++ b/test_driver/account/account.dart @@ -1,6 +1,6 @@ // @dart=2.9 import 'package:flutter/material.dart'; -import 'package:flutter_deer/common/common.dart'; +import 'package:flutter_deer/res/constant.dart'; import 'package:flutter_deer/home/home_page.dart'; import 'package:flutter_driver/driver_extension.dart'; import 'package:flutter_deer/main.dart'; diff --git a/test_driver/driver.dart b/test_driver/driver.dart index 54df4f0f1..d90cbc8a6 100644 --- a/test_driver/driver.dart +++ b/test_driver/driver.dart @@ -1,5 +1,5 @@ // @dart=2.9 -import 'package:flutter_deer/common/common.dart'; +import 'package:flutter_deer/res/constant.dart'; import 'package:flutter_driver/driver_extension.dart'; import 'package:flutter_deer/main.dart' as app; diff --git a/test_driver/order/order.dart b/test_driver/order/order.dart index 751d1ddf2..def9e4372 100644 --- a/test_driver/order/order.dart +++ b/test_driver/order/order.dart @@ -1,6 +1,6 @@ // @dart=2.9 import 'package:flutter/material.dart'; -import 'package:flutter_deer/common/common.dart'; +import 'package:flutter_deer/res/constant.dart'; import 'package:flutter_deer/home/home_page.dart'; import 'package:flutter_driver/driver_extension.dart'; import 'package:flutter_deer/main.dart'; diff --git a/test_driver/shop/shop.dart b/test_driver/shop/shop.dart index 2474a7a7e..bd6f94403 100644 --- a/test_driver/shop/shop.dart +++ b/test_driver/shop/shop.dart @@ -1,6 +1,6 @@ // @dart=2.9 import 'package:flutter/material.dart'; -import 'package:flutter_deer/common/common.dart'; +import 'package:flutter_deer/res/constant.dart'; import 'package:flutter_deer/home/home_page.dart'; import 'package:flutter_driver/driver_extension.dart'; import 'package:flutter_deer/main.dart'; From 70e358f4054f8f2e6b204fde2cd79c1aba6fccfe Mon Sep 17 00:00:00 2001 From: weilu Date: Thu, 29 Apr 2021 16:02:50 +0800 Subject: [PATCH 017/206] =?UTF-8?q?fluro=E6=B7=BB=E5=8A=A0=E7=B1=BB?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E7=94=A8=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/goods/page/goods_page.dart | 1 - lib/goods/widgets/goods_sort_menu.dart | 43 ++++++++++++++------------ lib/routers/fluro_navigator.dart | 22 ++++++++++--- lib/routers/routers.dart | 3 +- lib/shop/page/shop_setting_page.dart | 39 ++++++++++++++++------- lib/shop/shop_router.dart | 13 +++++++- 6 files changed, 82 insertions(+), 39 deletions(-) diff --git a/lib/goods/page/goods_page.dart b/lib/goods/page/goods_page.dart index 220862468..2018a694e 100644 --- a/lib/goods/page/goods_page.dart +++ b/lib/goods/page/goods_page.dart @@ -178,7 +178,6 @@ class _GoodsPageState extends State with SingleTickerProviderStateMix onSelected: (index, name) { provider.setSortIndex(index); Toast.show('选择分类: $name'); - NavigatorUtils.goBack(context); }, ), ); diff --git a/lib/goods/widgets/goods_sort_menu.dart b/lib/goods/widgets/goods_sort_menu.dart index 22b592063..012539de7 100644 --- a/lib/goods/widgets/goods_sort_menu.dart +++ b/lib/goods/widgets/goods_sort_menu.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; +import 'package:flutter_deer/routers/fluro_navigator.dart'; import 'package:flutter_deer/util/theme_utils.dart'; class GoodsSortMenu extends StatefulWidget { @@ -24,35 +25,41 @@ class GoodsSortMenu extends StatefulWidget { class _GoodsSortMenuState extends State with SingleTickerProviderStateMixin { - late AnimationController _controller; + late final AnimationController _controller = AnimationController( + duration: const Duration(milliseconds: 300), + vsync: this, + )..forward(); + + late final Animation _animation = CurvedAnimation( + parent: _controller, + curve: Curves.easeInCubic, + reverseCurve: Curves.easeOutCubic, + ); @override void initState() { super.initState(); - _controller = AnimationController( - duration: const Duration(milliseconds: 300), - vsync: this, - ); - _controller.forward(); + _animation.addStatusListener(_statusListener); + } + + void _statusListener(AnimationStatus status) { + if (status == AnimationStatus.dismissed) { + /// 菜单动画停止,关闭菜单。 + NavigatorUtils.goBack(context); + } } @override void dispose() { + _animation.removeStatusListener(_statusListener); _controller.dispose(); super.dispose(); } @override Widget build(BuildContext context) { - final Color backgroundColor = context.backgroundColor; - final Animation animation = CurvedAnimation( - parent: _controller, - curve: Curves.easeInCubic, - reverseCurve: Curves.easeOutCubic, - ); - final Widget listView = ListView.builder( physics: const ClampingScrollPhysics(), itemCount: widget.data.length + 1, @@ -65,15 +72,13 @@ class _GoodsSortMenuState extends State with SingleTickerProvider ); return FadeTransition( - opacity: animation, + opacity: _animation, child: Container( color: const Color(0x99000000), height: widget.height - 12.0, - child: SlideTransition( - position: Tween( - begin: const Offset(0.0, -1.0), - end: Offset.zero, - ).animate(animation), + child: ScaleTransition( + scale: _animation, + alignment: Alignment.topCenter, child: listView, ), ), diff --git a/lib/routers/fluro_navigator.dart b/lib/routers/fluro_navigator.dart index 5e4cb51e7..530bf5e77 100644 --- a/lib/routers/fluro_navigator.dart +++ b/lib/routers/fluro_navigator.dart @@ -7,15 +7,29 @@ import 'routers.dart'; class NavigatorUtils { static void push(BuildContext context, String path, - {bool replace = false, bool clearStack = false}) { + {bool replace = false, bool clearStack = false, Object? arguments}) { unfocus(); - Routes.router.navigateTo(context, path, replace: replace, clearStack: clearStack, transition: TransitionType.native); + Routes.router.navigateTo(context, path, + replace: replace, + clearStack: clearStack, + transition: TransitionType.native, + routeSettings: RouteSettings( + arguments: arguments, + ), + ); } static void pushResult(BuildContext context, String path, Function(Object) function, - {bool replace = false, bool clearStack = false}) { + {bool replace = false, bool clearStack = false, Object? arguments}) { unfocus(); - Routes.router.navigateTo(context, path, replace: replace, clearStack: clearStack, transition: TransitionType.native).then((Object? result) { + Routes.router.navigateTo(context, path, + replace: replace, + clearStack: clearStack, + transition: TransitionType.native, + routeSettings: RouteSettings( + arguments: arguments, + ), + ).then((Object? result) { // 页面返回result为null if (result == null) { return; diff --git a/lib/routers/routers.dart b/lib/routers/routers.dart index 6ef976e0b..4964ff0ff 100644 --- a/lib/routers/routers.dart +++ b/lib/routers/routers.dart @@ -14,7 +14,6 @@ import 'package:flutter_deer/shop/shop_router.dart'; import 'package:flutter_deer/statistics/statistics_router.dart'; import 'package:flutter_deer/store/store_router.dart'; -// ignore: avoid_classes_with_only_static_members class Routes { static String home = '/home'; @@ -40,7 +39,7 @@ class Routes { final String url = params['url']?.first ?? ''; return WebViewPage(title: title, url: url); })); - + _listRouter.clear(); /// 各自路由由各自模块管理,统一在此添加初始化 _listRouter.add(ShopRouter()); diff --git a/lib/shop/page/shop_setting_page.dart b/lib/shop/page/shop_setting_page.dart index 5a171c427..d0a3c78cc 100644 --- a/lib/shop/page/shop_setting_page.dart +++ b/lib/shop/page/shop_setting_page.dart @@ -2,12 +2,10 @@ import 'package:flutter/material.dart'; import 'package:flutter_2d_amap/flutter_2d_amap.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; -import 'package:flutter_deer/shop/page/input_text_page.dart'; import 'package:flutter_deer/shop/widgets/pay_type_dialog.dart'; import 'package:flutter_deer/shop/shop_router.dart'; import 'package:flutter_deer/shop/widgets/price_input_dialog.dart'; import 'package:flutter_deer/shop/widgets/send_type_dialog.dart'; -import 'package:flutter_deer/util/app_navigator.dart'; import 'package:flutter_deer/util/other_utils.dart'; import 'package:flutter_deer/widgets/my_app_bar.dart'; import 'package:flutter_deer/widgets/click_item.dart'; @@ -208,16 +206,17 @@ class _ShopSettingPageState extends State { } void _goInputTextPage(BuildContext context, String title, - String hintText, String content, Function(Object?) function, {TextInputType? keyboardType}) { - AppNavigator.pushResult( - context, - InputTextPage( - title: title, - hintText: hintText, - content: content, - keyboardType: keyboardType, - ), - function, + String hintText, String content, Function(Object?) function, + {TextInputType? keyboardType}) { + + NavigatorUtils.pushResult(context, + ShopRouter.inputTextPage, function, + arguments: InputTextPageArgumentsData( + title: title, + hintText: hintText, + content: content, + keyboardType: keyboardType, + ) ); } @@ -267,3 +266,19 @@ class _ShopSettingPageState extends State { ); } } + + +class InputTextPageArgumentsData { + + InputTextPageArgumentsData({ + required this.title, + this.content, + this.hintText, + this.keyboardType, +}); + + late String title; + late String? content; + late String? hintText; + late TextInputType? keyboardType; +} \ No newline at end of file diff --git a/lib/shop/shop_router.dart b/lib/shop/shop_router.dart index 08207a42d..79cae3aa7 100644 --- a/lib/shop/shop_router.dart +++ b/lib/shop/shop_router.dart @@ -2,6 +2,7 @@ import 'package:fluro/fluro.dart'; import 'package:flutter_deer/routers/i_router.dart'; import 'page/freight_config_page.dart'; +import 'page/input_text_page.dart'; import 'page/message_page.dart'; import 'page/select_address_page.dart'; import 'page/shop_page.dart'; @@ -14,6 +15,7 @@ class ShopRouter implements IRouterProvider{ static String messagePage = '/shop/message'; static String freightConfigPage = '/shop/freightConfig'; static String addressSelectPage = '/shop/addressSelect'; + static String inputTextPage = '/shop/inputText'; @override void initRouter(FluroRouter router) { @@ -22,6 +24,15 @@ class ShopRouter implements IRouterProvider{ router.define(messagePage, handler: Handler(handlerFunc: (_, __) => const MessagePage())); router.define(freightConfigPage, handler: Handler(handlerFunc: (_, __) => const FreightConfigPage())); router.define(addressSelectPage, handler: Handler(handlerFunc: (_, __) => const AddressSelectPage())); + router.define(inputTextPage, handler: Handler(handlerFunc: (context, params) { + /// 类参数 + final args = context!.settings!.arguments! as InputTextPageArgumentsData; + return InputTextPage( + title: args.title, + hintText: args.hintText, + content: args.content, + keyboardType: args.keyboardType, + ); + })); } - } \ No newline at end of file From 16d12aaac5d87432c866c688d26cfe8f376f219d Mon Sep 17 00:00:00 2001 From: weilu Date: Fri, 30 Apr 2021 08:08:50 +0800 Subject: [PATCH 018/206] =?UTF-8?q?=E8=A6=86=E7=9B=96`selectionHandleColor?= =?UTF-8?q?`=E6=97=A0=E6=95=88=E9=97=AE=E9=A2=98=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/flutter-web-deploy.yml | 6 +++--- README.md | 2 +- lib/demo/lottie/lottie_demo.dart | 7 ++++++- lib/generated/json/search_entity_helper.dart | 4 ---- lib/order/models/search_entity.dart | 2 -- lib/setting/provider/theme_provider.dart | 5 +++-- pubspec.yaml | 2 -- 7 files changed, 13 insertions(+), 15 deletions(-) diff --git a/.github/workflows/flutter-web-deploy.yml b/.github/workflows/flutter-web-deploy.yml index 4788c780c..152f7d1f2 100644 --- a/.github/workflows/flutter-web-deploy.yml +++ b/.github/workflows/flutter-web-deploy.yml @@ -5,7 +5,7 @@ name: flutter_deer web deploy on: push: paths: - - 'pubspec1.yaml' + - 'pubspec.yaml' jobs: web_build_and_deploy: @@ -14,8 +14,8 @@ jobs: - uses: actions/checkout@v2.3.1 - uses: subosito/flutter-action@v1 with: - flutter-version: '2.0.5' - channel: 'stable' + flutter-version: '2.3.0-0.1.pre' + channel: 'dev' - name: "Web Build 🔧" run: | flutter pub get diff --git a/README.md b/README.md index f04e96997..feb974b05 100644 --- a/README.md +++ b/README.md @@ -177,7 +177,7 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ ## 已知存在问题: -- 2.0.0 已知存在问题(#68571 #73351 #73388 #79773 #79931) +- 2.0.0 已知存在问题(#68571 #73351 #73388 #74890 #79773 #79931) - ListView在没有设置分割线的情况下,个别Item之间存在大约1像素的间隔([像素对齐问题](https://github.com/flutter/flutter/issues/14288))。 diff --git a/lib/demo/lottie/lottie_demo.dart b/lib/demo/lottie/lottie_demo.dart index 899c68c7e..6f62589fc 100644 --- a/lib/demo/lottie/lottie_demo.dart +++ b/lib/demo/lottie/lottie_demo.dart @@ -109,7 +109,7 @@ class _LottieDemoState extends State with TickerProviderStateMixin { accentColor: _primaryColor, textSelectionTheme: TextSelectionThemeData( selectionColor: _primaryColor.withAlpha(70), - selectionHandleColor: _primaryColor, + selectionHandleColor: _primaryColor, // 覆盖`selectionHandleColor`不起作用 https://github.com/flutter/flutter/issues/74890 cursorColor: _primaryColor, ), ), @@ -206,6 +206,11 @@ class _MyTextFieldState extends State<_MyTextField> { color: _textColor, ), ), + focusedBorder: const UnderlineInputBorder( + borderSide: BorderSide( + color: _primaryColor, + ), + ), suffixIcon: widget.obscureText ? IconButton( icon: Icon( Icons.remove_red_eye, diff --git a/lib/generated/json/search_entity_helper.dart b/lib/generated/json/search_entity_helper.dart index 6b3f1a0a9..70bf5242e 100644 --- a/lib/generated/json/search_entity_helper.dart +++ b/lib/generated/json/search_entity_helper.dart @@ -226,9 +226,6 @@ searchItemsFromJson(SearchItems data, Map json) { ? int.tryParse(json['forks_count']) : json['forks_count'].toInt(); } - if (json['mirror_url'] != null) { - data.mirrorUrl = json['mirror_url']; - } if (json['archived'] != null) { data.archived = json['archived']; } @@ -335,7 +332,6 @@ Map searchItemsToJson(SearchItems entity) { data['has_wiki'] = entity.hasWiki; data['has_pages'] = entity.hasPages; data['forks_count'] = entity.forksCount; - data['mirror_url'] = entity.mirrorUrl; data['archived'] = entity.archived; data['disabled'] = entity.disabled; data['open_issues_count'] = entity.openIssuesCount; diff --git a/lib/order/models/search_entity.dart b/lib/order/models/search_entity.dart index 2fb635881..8c01653ff 100644 --- a/lib/order/models/search_entity.dart +++ b/lib/order/models/search_entity.dart @@ -128,8 +128,6 @@ class SearchItems with JsonConvert { bool? hasPages; @JSONField(name: 'forks_count') int? forksCount; - @JSONField(name: 'mirror_url') - dynamic? mirrorUrl; bool? archived; bool? disabled; @JSONField(name: 'open_issues_count') diff --git a/lib/setting/provider/theme_provider.dart b/lib/setting/provider/theme_provider.dart index e660f5153..3a0f7180a 100644 --- a/lib/setting/provider/theme_provider.dart +++ b/lib/setting/provider/theme_provider.dart @@ -49,13 +49,14 @@ class ThemeProvider extends ChangeNotifier { scaffoldBackgroundColor: isDarkMode ? Colours.dark_bg_color : Colors.white, // 主要用于Material背景色 canvasColor: isDarkMode ? Colours.dark_material_bg : Colors.white, - // 文字选择色(输入框复制粘贴菜单) + // 文字选择色(输入框选择文字等) // textSelectionColor: Colours.app_main.withAlpha(70), // textSelectionHandleColor: Colours.app_main, - // 稳定发行版:1.23 变更(https://flutter.dev/docs/release/breaking-changes/text-selection-theme) + // 稳定版:1.23 变更(https://flutter.dev/docs/release/breaking-changes/text-selection-theme) textSelectionTheme: TextSelectionThemeData( selectionColor: Colours.app_main.withAlpha(70), selectionHandleColor: Colours.app_main, + cursorColor: Colours.app_main, ), textTheme: TextTheme( // TextField输入文字颜色 diff --git a/pubspec.yaml b/pubspec.yaml index 17fae699e..9654580f7 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -46,8 +46,6 @@ dependencies: sticky_headers: ^0.2.0 # 城市选择列表 https://github.com/flutterchina/azlistview azlistview: ^2.0.0-nullsafety.0 - # 手势识别 https://github.com/aleksanderwozniak/simple_gesture_detector - # simple_gesture_detector: ^0.1.4 # 路由框架 https://github.com/theyakka/fluro fluro: ^2.0.3 # 图片缓存 https://github.com/renefloor/flutter_cached_network_image From 9ed83a608e32af2906c7981d7608d925de908442 Mon Sep 17 00:00:00 2001 From: weilu Date: Mon, 3 May 2021 18:57:30 +0800 Subject: [PATCH 019/206] =?UTF-8?q?=E6=97=A5=E5=B8=B8=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/flutter-web-deploy.yml | 2 +- ios/Runner.xcodeproj/project.pbxproj | 2 ++ lib/demo/lottie/lottie_demo.dart | 2 +- lib/goods/page/goods_size_page.dart | 4 +++- lib/goods/widgets/goods_item.dart | 5 +++-- lib/order/page/order_info_page.dart | 3 ++- 6 files changed, 12 insertions(+), 6 deletions(-) diff --git a/.github/workflows/flutter-web-deploy.yml b/.github/workflows/flutter-web-deploy.yml index 152f7d1f2..d6922ac2c 100644 --- a/.github/workflows/flutter-web-deploy.yml +++ b/.github/workflows/flutter-web-deploy.yml @@ -5,7 +5,7 @@ name: flutter_deer web deploy on: push: paths: - - 'pubspec.yaml' + - 'pubspec1.yaml' jobs: web_build_and_deploy: diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index f99394215..328d74f92 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -239,6 +239,7 @@ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh", "${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework", "${BUILT_PRODUCTS_DIR}/MTBBarcodeScanner/MTBBarcodeScanner.framework", + "${BUILT_PRODUCTS_DIR}/device_info/device_info.framework", "${BUILT_PRODUCTS_DIR}/image_picker/image_picker.framework", "${BUILT_PRODUCTS_DIR}/integration_test/integration_test.framework", "${BUILT_PRODUCTS_DIR}/path_provider/path_provider.framework", @@ -254,6 +255,7 @@ outputPaths = ( "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FMDB.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MTBBarcodeScanner.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/device_info.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/image_picker.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/integration_test.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/path_provider.framework", diff --git a/lib/demo/lottie/lottie_demo.dart b/lib/demo/lottie/lottie_demo.dart index 6f62589fc..a42dea435 100644 --- a/lib/demo/lottie/lottie_demo.dart +++ b/lib/demo/lottie/lottie_demo.dart @@ -213,7 +213,7 @@ class _MyTextFieldState extends State<_MyTextField> { ), suffixIcon: widget.obscureText ? IconButton( icon: Icon( - Icons.remove_red_eye, + _isObscure ? Icons.visibility_off : Icons.visibility, color: _focusNode.hasFocus ? _primaryColor : _textColor, ), onPressed: () { diff --git a/lib/goods/page/goods_size_page.dart b/lib/goods/page/goods_size_page.dart index ab8708b93..00e60cbd2 100644 --- a/lib/goods/page/goods_size_page.dart +++ b/lib/goods/page/goods_size_page.dart @@ -3,6 +3,7 @@ import 'package:flutter_deer/goods/models/goods_size_model.dart'; import 'package:flutter_deer/goods/widgets/goods_size_dialog.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; +import 'package:flutter_deer/util/device_utils.dart'; import 'package:flutter_deer/util/image_utils.dart'; import 'package:flutter_deer/util/toast_utils.dart'; import 'package:flutter_deer/util/other_utils.dart'; @@ -91,6 +92,7 @@ class _GoodsSizePageState extends State { NavigatorUtils.goBack(context); }, ), + resizeToAvoidBottomInset: false, body: SafeArea( child: Column( crossAxisAlignment: CrossAxisAlignment.center, @@ -287,7 +289,7 @@ class _GoodsSizePageState extends State { alignment: Alignment.center, child: Text( text, - style: const TextStyle(color: Colors.white, fontSize: Dimens.font_sp10, height: 1.1,), + style: TextStyle(color: Colors.white, fontSize: Dimens.font_sp10, height: Device.isAndroid ? 1.1 : null,), ), ); } diff --git a/lib/goods/widgets/goods_item.dart b/lib/goods/widgets/goods_item.dart index e7ea132d7..25edc8a08 100644 --- a/lib/goods/widgets/goods_item.dart +++ b/lib/goods/widgets/goods_item.dart @@ -2,6 +2,7 @@ import 'package:common_utils/common_utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_deer/goods/models/goods_item_entity.dart'; import 'package:flutter_deer/res/resources.dart'; +import 'package:flutter_deer/util/device_utils.dart'; import 'package:flutter_deer/util/theme_utils.dart'; import 'package:flutter_deer/util/other_utils.dart'; import 'package:flutter_deer/widgets/load_image.dart'; @@ -233,10 +234,10 @@ class _GoodsItemTag extends StatelessWidget { alignment: Alignment.center, child: Text( text, - style: const TextStyle( + style: TextStyle( color: Colors.white, fontSize: Dimens.font_sp10, - height: 1.1, + height: Device.isAndroid ? 1.1 : null, ), ), ); diff --git a/lib/order/page/order_info_page.dart b/lib/order/page/order_info_page.dart index ee27414dc..c8d9e53e4 100644 --- a/lib/order/page/order_info_page.dart +++ b/lib/order/page/order_info_page.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; +import 'package:flutter_deer/util/device_utils.dart'; import 'package:flutter_deer/util/theme_utils.dart'; import 'package:flutter_deer/util/other_utils.dart'; import 'package:flutter_deer/widgets/my_app_bar.dart'; @@ -251,7 +252,7 @@ class _OrderInfoPageState extends State { alignment: Alignment.center, child: Text( text, - style: const TextStyle(color: Colors.white, fontSize: Dimens.font_sp10, height: 1.1,), + style: TextStyle(color: Colors.white, fontSize: Dimens.font_sp10, height: Device.isAndroid ? 1.1 : null,), ), ); } From 79b103b0cac5447cc6117482197f817a10094917 Mon Sep 17 00:00:00 2001 From: weilu Date: Thu, 6 May 2021 07:07:49 +0800 Subject: [PATCH 020/206] commit --- .github/workflows/flutter-drive.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index 7989fc4a3..1c04934c4 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -5,7 +5,7 @@ name: flutter_deer driver # Trigger the workflow on push or pull request. -on: [push, pull_request] +on: [pull_request] # A workflow run is made up of one or more jobs. jobs: From 8bc64409ad1319af87ca222c8b2d83a548543312 Mon Sep 17 00:00:00 2001 From: weilu Date: Sat, 8 May 2021 10:09:53 +0800 Subject: [PATCH 021/206] flutter 2.0.6 --- .github/ISSUE_TEMPLATE/deer-issue-template.md | 2 +- .github/workflows/flutter-drive.yml | 8 +-- README-EN.md | 2 +- README.md | 2 +- lib/account/page/withdrawal_page.dart | 6 +- .../page/withdrawal_record_list_page.dart | 60 ++++++++++--------- .../widgets/withdrawal_account_item.dart | 2 +- lib/order/page/order_page.dart | 2 +- lib/res/colors.dart | 4 ++ .../page/order_statistics_page.dart | 2 +- lib/statistics/widgets/selected_date.dart | 4 +- 11 files changed, 50 insertions(+), 44 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/deer-issue-template.md b/.github/ISSUE_TEMPLATE/deer-issue-template.md index 086a158e0..a80bd523c 100644 --- a/.github/ISSUE_TEMPLATE/deer-issue-template.md +++ b/.github/ISSUE_TEMPLATE/deer-issue-template.md @@ -12,7 +12,7 @@ assignees: '' - [x] 电脑系统:如:`Windows 10` - [x] 设备型号:如:`小米MIX 2s` - [x] 设备系统版本:如 `Android 10` -- [x] Flutter 版本:如 `2.0.5` +- [x] Flutter 版本:如 `2.0.6` ### 具体问题描述 ### diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index 1c04934c4..164f7637c 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -5,7 +5,7 @@ name: flutter_deer driver # Trigger the workflow on push or pull request. -on: [pull_request] +on: [push, pull_request] # A workflow run is made up of one or more jobs. jobs: @@ -46,7 +46,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v1 with: - flutter-version: '2.0.5' + flutter-version: '2.0.6' channel: 'stable' # or: 'dev' or 'beta' - name: "Run Flutter Driver tests" run: "flutter drive --target=test_driver/driver.dart" @@ -64,7 +64,7 @@ jobs: - uses: actions/checkout@v2 - uses: subosito/flutter-action@v1 with: - flutter-version: '2.0.5' + flutter-version: '2.0.6' channel: 'stable' # or: 'dev' or 'beta' - name: "Run Flutter Driver tests" # GitHub Action for installing, configuring and running Android Emulators (work only Mac OS) @@ -89,7 +89,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v1 with: - flutter-version: '2.0.5' + flutter-version: '2.0.6' channel: 'stable' - run: "flutter pub get" - name: "Run Flutter Accessibility Tests" diff --git a/README-EN.md b/README-EN.md index b86d56076..1f0aaa537 100644 --- a/README-EN.md +++ b/README-EN.md @@ -59,7 +59,7 @@ Web:https://simplezhli.github.io/flutter_deer/ [![Build Status](https://github.com/simplezhli/flutter_deer/workflows/flutter_deer%20driver/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions?query=workflow%3A%22flutter_deer+driver%22+branch%3Amaster) - 1. Flutter version 2.0.5 + 1. Flutter version 2.0.6 2. Dart version 2.12.3 diff --git a/README.md b/README.md index feb974b05..772d83b43 100644 --- a/README.md +++ b/README.md @@ -64,7 +64,7 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ [![Build Status](https://github.com/simplezhli/flutter_deer/workflows/flutter_deer%20driver/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions?query=workflow%3A%22flutter_deer+driver%22+branch%3Amaster) - 1. Flutter version 2.0.5 + 1. Flutter version 2.0.6 2. Dart version 2.12.3 diff --git a/lib/account/page/withdrawal_page.dart b/lib/account/page/withdrawal_page.dart index 126dab300..29ccea12e 100644 --- a/lib/account/page/withdrawal_page.dart +++ b/lib/account/page/withdrawal_page.dart @@ -106,7 +106,7 @@ class _WithdrawalPageState extends State { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: const [ Text('提现金额', style: TextStyles.textBold14), - Text('单笔2万,单日2万', style: TextStyle(fontSize: Dimens.font_sp12, color: Color(0xFFFF8547))) + Text('单笔2万,单日2万', style: TextStyle(fontSize: Dimens.font_sp12, color: Colours.orange)) ], ), Gaps.vGap8, @@ -221,14 +221,14 @@ class _WithdrawalPageState extends State { text: '手续费按', style: Theme.of(context).textTheme.bodyText2?.copyWith(fontSize: Dimens.font_sp12), children: const [ - TextSpan(text: '0.3%', style: TextStyle(color: Color(0xFFFF8547))), + TextSpan(text: '0.3%', style: TextStyle(color: Colours.orange)), TextSpan(text: '收取'), ], ) : TextSpan( text: '预计', style: Theme.of(context).textTheme.bodyText2?.copyWith(fontSize: Dimens.font_sp12), children: const [ - TextSpan(text: 'T+1天到账(免手续费,T为工作日)', style: TextStyle(color: Color(0xFFFF8547))), + TextSpan(text: 'T+1天到账(免手续费,T为工作日)', style: TextStyle(color: Colours.orange)), ], ), ) diff --git a/lib/account/page/withdrawal_record_list_page.dart b/lib/account/page/withdrawal_record_list_page.dart index da90066fa..786f0d499 100644 --- a/lib/account/page/withdrawal_record_list_page.dart +++ b/lib/account/page/withdrawal_record_list_page.dart @@ -45,6 +45,36 @@ class _WithdrawalRecordListPageState extends State { Widget _buildItem(int index) { final list = List.generate(index + 1, (i) { + final Widget content = Stack( + children: [ + Text(i.isEven ? '微信(唯鹿)' : '工商(尾号:4562 李一)'), + const Positioned( + top: 0.0, + right: 0.0, + child: Text('-10.00', style: TextStyles.textBold14), + ), + Positioned( + bottom: 0.0, + left: 0.0, + child: Text(i.isEven ? '12:40:20' : '12:50:20', style: Theme.of(context).textTheme.subtitle2), + ), + Positioned( + bottom: 0.0, + right: 0.0, + child: Text( + i.isEven ? '审核失败' : '待审核', + style: i.isEven ? TextStyle( + fontSize: Dimens.font_sp12, + color: Theme.of(context).errorColor, + ) : const TextStyle( + fontSize: Dimens.font_sp12, + color: Colours.orange, + ), + ), + ), + ], + ); + return Container( height: 72.0, width: double.infinity, @@ -55,35 +85,7 @@ class _WithdrawalRecordListPageState extends State { ), ), child: MergeSemantics( - child: Stack( - children: [ - Text(i.isEven ? '微信(唯鹿)' : '工商(尾号:4562 李一)'), - const Positioned( - top: 0.0, - right: 0.0, - child: Text('-10.00', style: TextStyles.textBold14), - ), - Positioned( - bottom: 0.0, - left: 0.0, - child: Text(i.isEven ? '12:40:20' : '12:50:20', style: Theme.of(context).textTheme.subtitle2), - ), - Positioned( - bottom: 0.0, - right: 0.0, - child: Text( - i.isEven ? '审核失败' : '待审核', - style: i.isEven ? TextStyle( - fontSize: Dimens.font_sp12, - color: Theme.of(context).errorColor - ) : const TextStyle( - fontSize: Dimens.font_sp12, - color: Color(0xFFFF8547) - ), - ), - ), - ], - ), + child: content, ), ); }); diff --git a/lib/account/widgets/withdrawal_account_item.dart b/lib/account/widgets/withdrawal_account_item.dart index de829abe2..f508b1d2b 100644 --- a/lib/account/widgets/withdrawal_account_item.dart +++ b/lib/account/widgets/withdrawal_account_item.dart @@ -163,7 +163,7 @@ class _AccountCardState extends State { borderRadius: BorderRadius.circular(8.0), boxShadow: context.isDark ? null : [ BoxShadow( - color: widget.type == 1 ? const Color(0x804EE07A) : const Color(0x805793FA), + color: widget.type == 1 ? const Color(0x804EE07A) : Colours.shadow_blue, offset: const Offset(0.0, 2.0), blurRadius: 8.0, spreadRadius: 0.0, diff --git a/lib/order/page/order_page.dart b/lib/order/page/order_page.dart index 08fd929da..6515238c2 100644 --- a/lib/order/page/order_page.dart +++ b/lib/order/page/order_page.dart @@ -76,7 +76,7 @@ class _OrderPageState extends State with AutomaticKeepAliveClientMixi width: double.infinity, child: isDark ? null : const DecoratedBox( decoration: BoxDecoration( - gradient: LinearGradient(colors: [Color(0xFF5793FA), Color(0xFF4647FA)]), + gradient: LinearGradient(colors: [Colours.gradient_blue, Color(0xFF4647FA)]), ), ), ), diff --git a/lib/res/colors.dart b/lib/res/colors.dart index 2b6bc3364..c7b35f87b 100644 --- a/lib/res/colors.dart +++ b/lib/res/colors.dart @@ -39,5 +39,9 @@ class Colours { static const Color bg_gray_ = Color(0xFFFAFAFA); static const Color dark_bg_gray_ = Color(0xFF242526); + + static const Color gradient_blue = Color(0xFF5793FA); + static const Color shadow_blue = Color(0x805793FA); + static const Color orange = Color(0xFFFF8547); } diff --git a/lib/statistics/page/order_statistics_page.dart b/lib/statistics/page/order_statistics_page.dart index 8ee9ca5ce..829970ba2 100644 --- a/lib/statistics/page/order_statistics_page.dart +++ b/lib/statistics/page/order_statistics_page.dart @@ -134,7 +134,7 @@ class _OrderStatisticsPageState extends State with TickerPr children: [ Text(widget.index == 1 ? '订单走势' : '交易额走势', style: TextStyles.textBold18), Gaps.vGap16, - _buildChart(Colours.app_main, const Color(0x805793FA), widget.index == 1 ? '全部订单' : '交易额(元)', '3000'), + _buildChart(Colours.app_main, Colours.shadow_blue, widget.index == 1 ? '全部订单' : '交易额(元)', '3000'), if (widget.index == 1) Column( children: [ Gaps.vGap16, diff --git a/lib/statistics/widgets/selected_date.dart b/lib/statistics/widgets/selected_date.dart index bebe5dab2..c22660a79 100644 --- a/lib/statistics/widgets/selected_date.dart +++ b/lib/statistics/widgets/selected_date.dart @@ -42,12 +42,12 @@ class SelectedDateButton extends StatelessWidget { borderRadius: BorderRadius.circular(20.0), // shape: BoxShape.circle, boxShadow: context.isDark ? null : const [ - BoxShadow(color: Color(0x805793FA), offset: Offset(0.0, 2.0), blurRadius: 8.0, spreadRadius: 0.0), + BoxShadow(color: Colours.shadow_blue, offset: Offset(0.0, 2.0), blurRadius: 8.0, spreadRadius: 0.0), ], gradient: const LinearGradient( begin: Alignment.topCenter, end: Alignment.bottomCenter, - colors: [Color(0xFF5758FA), Color(0xFF5793FA)], + colors: [Color(0xFF5758FA), Colours.gradient_blue], ), ) : null, child: Column( From 206027791231f087c0a695da87c2f45b974951ce Mon Sep 17 00:00:00 2001 From: weilu Date: Wed, 12 May 2021 11:28:32 +0800 Subject: [PATCH 022/206] =?UTF-8?q?=E4=BD=BF=E7=94=A8RestorableInt?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E9=A1=B5=E9=9D=A2=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/home/home_page.dart | 10 +++++++++- lib/home/provider/home_provider.dart | 2 +- lib/main.dart | 4 ++++ lib/store/page/store_audit_page.dart | 6 +++--- 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/lib/home/home_page.dart b/lib/home/home_page.dart index d5bc65c1e..1987fcbf8 100644 --- a/lib/home/home_page.dart +++ b/lib/home/home_page.dart @@ -18,7 +18,7 @@ class Home extends StatefulWidget { _HomeState createState() => _HomeState(); } -class _HomeState extends State { +class _HomeState extends State with RestorationMixin{ static const double _imageSize = 25.0; @@ -151,4 +151,12 @@ class _HomeState extends State { ); } + @override + String? get restorationId => 'home'; + + @override + void restoreState(RestorationBucket? oldBucket, bool initialRestore) { + registerForRestoration(provider, 'BottomNavigationBarCurrentIndex'); + } + } diff --git a/lib/home/provider/home_provider.dart b/lib/home/provider/home_provider.dart index eb891bde6..c197cd23b 100644 --- a/lib/home/provider/home_provider.dart +++ b/lib/home/provider/home_provider.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -class HomeProvider extends ValueNotifier { +class HomeProvider extends RestorableInt { HomeProvider() : super(0); } \ No newline at end of file diff --git a/lib/main.dart b/lib/main.dart index 8f65e73da..e03aee3f8 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,4 +1,5 @@ import 'package:dio/dio.dart'; +import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; import 'package:flutter/services.dart'; @@ -35,6 +36,8 @@ Future main() async { setPathUrlStrategy(); /// sp初始化 await SpUtil.getInstance(); + /// 1.22 预览功能: 在输入频率与显示刷新率不匹配情况下提供平滑的滚动效果 + // GestureBinding.instance?.resamplingEnabled = true; /// 异常处理 handleError(runApp(MyApp())); /// 隐藏状态栏。为启动页、引导页设置。完成后修改回显示状态栏。 @@ -159,6 +162,7 @@ class MyApp extends StatelessWidget { builder: (BuildContext context) => const NotFoundPage(), ); }, + restorationScopeId: 'app', ); } diff --git a/lib/store/page/store_audit_page.dart b/lib/store/page/store_audit_page.dart index 811aa7af5..98aaea04e 100644 --- a/lib/store/page/store_audit_page.dart +++ b/lib/store/page/store_audit_page.dart @@ -56,9 +56,9 @@ class _StoreAuditPageState extends State { (node) { return GestureDetector( onTap: () => node.unfocus(), - child: const Padding( - padding: EdgeInsets.only(right: 16.0), - child: Text('关闭'), + child: Padding( + padding: const EdgeInsets.only(right: 16.0), + child: Text(Utils.getCurrLocale() == 'zh' ? '关闭' : 'Close'), ), ); }, From d8fb9848107659756f505d44fea2b95bb057e109 Mon Sep 17 00:00:00 2001 From: weilu Date: Thu, 13 May 2021 14:04:09 +0800 Subject: [PATCH 023/206] =?UTF-8?q?=E6=B5=8B=E8=AF=95simulator-action?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/flutter-drive.yml | 35 +++++++++++++++++------------ lib/main.dart | 1 - pubspec.yaml | 6 ++--- 3 files changed, 24 insertions(+), 18 deletions(-) diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index 164f7637c..cf2f78ed1 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -17,28 +17,35 @@ jobs: # A set of different configurations of the virtual environment. matrix: device: - - "iPhone 8 (14.4)" - - "iPhone 11 Pro Max (14.4)" + - "iPhone 8" + - "iPhone 11 Pro Max" # When set to true, GitHub cancels all in-progress jobs if any matrix job # fails. fail-fast: false # The type of machine to run the job on. - runs-on: macOS-latest + runs-on: macos-latest # Contains a sequence of tasks. steps: # A name for your step to display on GitHub. - - name: "List all simulators" - run: "xcrun instruments -s" +# - name: "List all simulators" +# run: "xcrun instruments -s" +# - name: "Start Simulator" +# run: | +# UDID=$( +# xcrun instruments -s | +# awk \ +# -F ' *[][]' \ +# -v 'device=${{ matrix.device }}' \ +# '$1 == device { print $2 }' +# ) +# xcrun simctl boot "${UDID:?No Simulator with this name found}" - name: "Start Simulator" - run: | - UDID=$( - xcrun instruments -s | - awk \ - -F ' *[][]' \ - -v 'device=${{ matrix.device }}' \ - '$1 == device { print $2 }' - ) - xcrun simctl boot "${UDID:?No Simulator with this name found}" + # https://github.com/futureware-tech/simulator-action + uses: futureware-tech/simulator-action@v1 + with: + model: ${{ matrix.device }} + erase_before_boot: true + shutdown_after_job: true # The branch or tag ref that triggered the workflow will be checked out. # https://github.com/marketplace/actions/checkout - uses: actions/checkout@v2 diff --git a/lib/main.dart b/lib/main.dart index e03aee3f8..0199c5a61 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,5 +1,4 @@ import 'package:dio/dio.dart'; -import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; import 'package:flutter/services.dart'; diff --git a/pubspec.yaml b/pubspec.yaml index 9654580f7..8965e0d6c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -30,12 +30,12 @@ dependencies: common_utils: 2.0.2 # Flutter 常用工具类库 https://github.com/Sky24n/flustars flustars: ^2.0.1 - # Flutter 轮播图 https://github.com/best-flutter/flutter_swiper - flutter_swiper_null_safety: ^1.0.0 # flutter_swiper很久不维护,可以使用空安全版本:flutter_swiper_null_safety + # Flutter 轮播图 https://github.com/lianyagang/flutter_swiper_null_safety + flutter_swiper_null_safety: ^1.0.2 # flutter_swiper很久不维护,可以使用空安全版本:flutter_swiper_null_safety # 启动URL的插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/url_launcher url_launcher: 6.0.3 # 图片选择插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/image_picker - image_picker: 0.7.4 + image_picker: 0.7.5 # 侧滑删除 https://github.com/letsar/flutter_slidable flutter_slidable: ^0.6.0 # WebView插件 https://github.com/flutter/plugins/tree/master/packages/webview_flutter From 08cd171515ed0b594d3d9381a29f9ab9f470233d Mon Sep 17 00:00:00 2001 From: weilu Date: Wed, 19 May 2021 08:47:40 +0800 Subject: [PATCH 024/206] =?UTF-8?q?=E5=8E=BB=E9=99=A4multidex?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- android/app/build.gradle | 2 -- android/app/src/main/java/com/weilu/deer/MyApp.java | 8 -------- lib/widgets/my_app_bar.dart | 7 +++++-- 3 files changed, 5 insertions(+), 12 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 6eaa74fcd..f3f2fe44f 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -43,7 +43,6 @@ android { targetSdkVersion 29 versionCode flutterVersionCode.toInteger() versionName flutterVersionName - multiDexEnabled true } signingConfigs { @@ -80,5 +79,4 @@ flutter { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - implementation 'androidx.multidex:multidex:2.0.1' } diff --git a/android/app/src/main/java/com/weilu/deer/MyApp.java b/android/app/src/main/java/com/weilu/deer/MyApp.java index 89d5866cc..f67a8b5cb 100644 --- a/android/app/src/main/java/com/weilu/deer/MyApp.java +++ b/android/app/src/main/java/com/weilu/deer/MyApp.java @@ -2,8 +2,6 @@ import android.content.Context; -import androidx.multidex.MultiDex; - import io.flutter.app.FlutterApplication; /** @@ -13,12 +11,6 @@ */ public class MyApp extends FlutterApplication { - @Override - protected void attachBaseContext(Context base) { - super.attachBaseContext(base); - MultiDex.install(this); - } - @Override public void onCreate() { super.onCreate(); diff --git a/lib/widgets/my_app_bar.dart b/lib/widgets/my_app_bar.dart index 2d4b2e15f..a4d4d39ab 100644 --- a/lib/widgets/my_app_bar.dart +++ b/lib/widgets/my_app_bar.dart @@ -37,9 +37,12 @@ class MyAppBar extends StatelessWidget implements PreferredSizeWidget { ? SystemUiOverlayStyle.light : SystemUiOverlayStyle.dark; final Widget back = isBack ? IconButton( - onPressed: () { + onPressed: () async { FocusManager.instance.primaryFocus?.unfocus(); - Navigator.maybePop(context); + final isBack = await Navigator.maybePop(context); + if (!isBack) { + await SystemNavigator.pop(); + } }, tooltip: 'Back', padding: const EdgeInsets.all(12.0), From 2e19cfd68e450beef40c1e02ea4c1ca515d86e3a Mon Sep 17 00:00:00 2001 From: weilu Date: Thu, 20 May 2021 08:22:53 +0800 Subject: [PATCH 025/206] flutter 2.2.0 --- .github/ISSUE_TEMPLATE/deer-issue-template.md | 2 +- .github/workflows/flutter-drive.yml | 6 +-- README-EN.md | 4 +- README.md | 6 +-- ...56\351\242\230\346\261\207\346\200\273.md" | 49 ++++++++++--------- lib/goods/page/goods_list_page.dart | 2 +- lib/login/widgets/my_text_field.dart | 21 ++++---- lib/order/page/order_page.dart | 1 - lib/res/gaps.dart | 3 ++ lib/statistics/page/statistics_page.dart | 1 - lib/widgets/selected_image.dart | 1 - pubspec.yaml | 7 +-- 12 files changed, 54 insertions(+), 49 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/deer-issue-template.md b/.github/ISSUE_TEMPLATE/deer-issue-template.md index a80bd523c..ec384b66f 100644 --- a/.github/ISSUE_TEMPLATE/deer-issue-template.md +++ b/.github/ISSUE_TEMPLATE/deer-issue-template.md @@ -12,7 +12,7 @@ assignees: '' - [x] 电脑系统:如:`Windows 10` - [x] 设备型号:如:`小米MIX 2s` - [x] 设备系统版本:如 `Android 10` -- [x] Flutter 版本:如 `2.0.6` +- [x] Flutter 版本:如 `2.2.0` ### 具体问题描述 ### diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index cf2f78ed1..85ca05890 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -53,7 +53,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v1 with: - flutter-version: '2.0.6' + flutter-version: '2.2.0' channel: 'stable' # or: 'dev' or 'beta' - name: "Run Flutter Driver tests" run: "flutter drive --target=test_driver/driver.dart" @@ -71,7 +71,7 @@ jobs: - uses: actions/checkout@v2 - uses: subosito/flutter-action@v1 with: - flutter-version: '2.0.6' + flutter-version: '2.2.0' channel: 'stable' # or: 'dev' or 'beta' - name: "Run Flutter Driver tests" # GitHub Action for installing, configuring and running Android Emulators (work only Mac OS) @@ -96,7 +96,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v1 with: - flutter-version: '2.0.6' + flutter-version: '2.2.0' channel: 'stable' - run: "flutter pub get" - name: "Run Flutter Accessibility Tests" diff --git a/README-EN.md b/README-EN.md index 1f0aaa537..242a85a96 100644 --- a/README-EN.md +++ b/README-EN.md @@ -59,9 +59,9 @@ Web:https://simplezhli.github.io/flutter_deer/ [![Build Status](https://github.com/simplezhli/flutter_deer/workflows/flutter_deer%20driver/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions?query=workflow%3A%22flutter_deer+driver%22+branch%3Amaster) - 1. Flutter version 2.0.6 + 1. Flutter version 2.2.0 - 2. Dart version 2.12.3 + 2. Dart version 2.13.0 ## Precautions diff --git a/README.md b/README.md index 772d83b43..8b1cd8fc5 100644 --- a/README.md +++ b/README.md @@ -64,9 +64,9 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ [![Build Status](https://github.com/simplezhli/flutter_deer/workflows/flutter_deer%20driver/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions?query=workflow%3A%22flutter_deer+driver%22+branch%3Amaster) - 1. Flutter version 2.0.6 + 1. Flutter version 2.2.0 - 2. Dart version 2.12.3 + 2. Dart version 2.13.0 ## 注意事项 @@ -161,8 +161,6 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ * [x] 页面添加设计图路径注释,方便寻找对应的设计图。 -* [x] 项目中有使用这一套框架及组件,会同步修复及优化遇到的问题。 - * [x] 添加集成测试。 * [x] 深色模式支持。 diff --git "a/docs/Web\351\227\256\351\242\230\346\261\207\346\200\273.md" "b/docs/Web\351\227\256\351\242\230\346\261\207\346\200\273.md" index f1d0671c8..ad0abbc1e 100644 --- "a/docs/Web\351\227\256\351\242\230\346\261\207\346\200\273.md" +++ "b/docs/Web\351\227\256\351\242\230\346\261\207\346\200\273.md" @@ -1,21 +1,7 @@ -# Web 问题汇总(flutter 2.0.5) - -## 使用`Locale`报空安全错误 - -master分支已修复,详情见[[Web]: App throws null safety errors on Locale using latest stable, but works on Master](https://github.com/flutter/flutter/issues/79351) - -由于本项目已迁移至空安全,因此运行Web端时,需要使用master分支或将`other_utils`文件下的`window.locale.languageCode;` 修改为 `window.locale?.languageCode;`。 +# Web 问题汇总(flutter 2.2.0) ## CanvasKit渲染(默认PC浏览器) -### 使用`DecorationImage`的`colorFilter`属性。 - -`ColorFilter.mode`中的color为null时,Web报错NoSuchMethodError: invalid member on null: 'red' ,因此这里注意指定色值。 - -其他相关问题: - -- [[web] wrong image filter on web app built with HTML renderer](https://github.com/flutter/flutter/issues/76966) - ### 中文文字、表情等加载延迟导致乱码现象 主要原因是完整的字体表情包太大,不能是一次加载完成,按需加载过程导致此类现象。 @@ -40,28 +26,45 @@ master分支已修复,详情见[[Web]: App throws null safety errors on Locale - [[canvaskit] font renders missing glyph when text overflow is ellipsis](https://github.com/flutter/flutter/issues/76473) +## 指定渲染引擎 + +``` +flutter run -d chrome --release --web-renderer html +// 或 +flutter run -d chrome --release --web-renderer canvaskit +``` + +> 总结:HTML渲染相较于CanvasKit渲染,UI还原度差一些,但综合性能相对较好。 + + +## 已解决问题 + ### 使用`Transform`。 在变换Widget时,添加的`LinearGradient`没有渐变效果。。。(例子见lib/account/widgets/withdrawal_account_item.dart) 目前处理方法是添加`RepaintBoundary`。 -## 按钮的大小在移动端与Web端不同 +### 按钮的大小在移动端与Web端不同 可以`ThemeData`中全局指定`visualDensity`属性为`VisualDensity.standard`。 详情见[Buttons not respecting default dimensions](https://github.com/flutter/flutter/issues/77142) -## 指定渲染引擎 +## 已修复问题 -``` -flutter run -d chrome --release --web-renderer html -// 或 -flutter run -d chrome --release --web-renderer canvaskit -``` +### ~~使用`DecorationImage`的`colorFilter`属性。~~ -> 总结:HTML渲染相较于CanvasKit渲染,UI还原度差一些,但综合性能相对较好。 +`ColorFilter.mode`中的color为null时,Web报错NoSuchMethodError: invalid member on null: 'red' 。 +2.2.0上`ColorFilter.mode`中的color以不能设为null。 + +其他相关问题: + +[[web] wrong image filter on web app built with HTML renderer](https://github.com/flutter/flutter/issues/76966) + +### ~~使用`Locale`报空安全错误~~ +2.2.0已修复,详情见[[Web]: App throws null safety errors on Locale using latest stable, but works on Master](https://github.com/flutter/flutter/issues/79351) diff --git a/lib/goods/page/goods_list_page.dart b/lib/goods/page/goods_list_page.dart index 52a8cc762..ff9382c91 100644 --- a/lib/goods/page/goods_list_page.dart +++ b/lib/goods/page/goods_list_page.dart @@ -59,7 +59,7 @@ class _GoodsListPageState extends State with AutomaticKeepAliveCl final List _imgList = [ 'https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=3130502839,1206722360&fm=26&gp=0.jpg', 'https://xxx', // 故意使用一张无效链接,触发默认显示图片 - 'https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=1762976310,1236462418&fm=26&gp=0.jpg', + 'https://img0.baidu.com/it/u=4049693009,2577412121&fm=224&fmt=auto&gp=0.jpg', 'https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=3659255919,3211745976&fm=26&gp=0.jpg', 'https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=2085939314,235211629&fm=26&gp=0.jpg', 'https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=2441563887,1184810091&fm=26&gp=0.jpg' diff --git a/lib/login/widgets/my_text_field.dart b/lib/login/widgets/my_text_field.dart index 73973f8c6..38e1b3a44 100644 --- a/lib/login/widgets/my_text_field.dart +++ b/lib/login/widgets/my_text_field.dart @@ -12,7 +12,7 @@ import 'package:flutter_deer/widgets/my_button.dart'; /// 登录模块的输入框封装 class MyTextField extends StatefulWidget { - + const MyTextField({ Key? key, required this.controller, @@ -36,7 +36,7 @@ class MyTextField extends StatefulWidget { final Future Function()? getVCode; /// 用于集成测试寻找widget final String? keyName; - + @override _MyTextFieldState createState() => _MyTextFieldState(); } @@ -59,7 +59,7 @@ class _MyTextFieldState extends State { widget.controller.addListener(isEmpty); super.initState(); } - + void isEmpty() { final bool isNotEmpty = widget.controller.text.isNotEmpty; /// 状态不一样在刷新,避免重复不必要的setState @@ -69,7 +69,7 @@ class _MyTextFieldState extends State { }); } } - + @override void dispose() { _subscription?.cancel(); @@ -92,7 +92,7 @@ class _MyTextFieldState extends State { }); } } - + @override Widget build(BuildContext context) { final ThemeData themeData = Theme.of(context); @@ -107,7 +107,7 @@ class _MyTextFieldState extends State { textInputAction: TextInputAction.done, keyboardType: widget.keyboardType, // 数字、手机号限制格式为0到9, 密码限制不包含汉字 - inputFormatters: (widget.keyboardType == TextInputType.number || widget.keyboardType == TextInputType.phone) ? + inputFormatters: (widget.keyboardType == TextInputType.number || widget.keyboardType == TextInputType.phone) ? [FilteringTextInputFormatter.allow(RegExp('[0-9]'))] : [FilteringTextInputFormatter.deny(RegExp('[\u4e00-\u9fa5]'))], decoration: InputDecoration( contentPadding: const EdgeInsets.symmetric(vertical: 16.0), @@ -137,7 +137,7 @@ class _MyTextFieldState extends State { ); } - late Widget clearButton; + Widget? clearButton; if (_isShowDelete) { clearButton = Semantics( @@ -204,9 +204,12 @@ class _MyTextFieldState extends State { Row( mainAxisSize: MainAxisSize.min, children: [ - /// _isShowDelete参数动态变化,为了不破坏树结构,false时放一个空Widget。 + /// _isShowDelete参数动态变化,为了不破坏树结构使用Visibility,false时放一个空Widget。 /// 对于其他参数,为初始配置参数,基本可以确定树结构,就不做空Widget处理。 - if (_isShowDelete) clearButton else Gaps.empty, + Visibility( + visible: _isShowDelete, + child: clearButton ?? Gaps.empty, + ), if (widget.isInputPwd) Gaps.hGap15, if (widget.isInputPwd) pwdVisible, if (widget.getVCode != null) Gaps.hGap15, diff --git a/lib/order/page/order_page.dart b/lib/order/page/order_page.dart index 6515238c2..596d92839 100644 --- a/lib/order/page/order_page.dart +++ b/lib/order/page/order_page.dart @@ -117,7 +117,6 @@ class _OrderPageState extends State with AutomaticKeepAliveClientMixi SliverOverlapAbsorber( handle: NestedScrollView.sliverOverlapAbsorberHandleFor(context), sliver: SliverAppBar( - leading: Gaps.empty, brightness: Brightness.dark, actions: [ IconButton( diff --git a/lib/res/gaps.dart b/lib/res/gaps.dart index c80b46898..1aef0fc69 100644 --- a/lib/res/gaps.dart +++ b/lib/res/gaps.dart @@ -43,4 +43,7 @@ class Gaps { ); static const Widget empty = SizedBox.shrink(); + + /// 补充一种空Widget实现 https://github.com/letsar/nil + /// https://github.com/flutter/flutter/issues/78159 } diff --git a/lib/statistics/page/statistics_page.dart b/lib/statistics/page/statistics_page.dart index a8848a429..801194f4a 100644 --- a/lib/statistics/page/statistics_page.dart +++ b/lib/statistics/page/statistics_page.dart @@ -40,7 +40,6 @@ class _StatisticsPageState extends State { return [ SliverAppBar( brightness: Brightness.dark, - leading: Gaps.empty, backgroundColor: Colors.transparent, elevation: 0.0, centerTitle: true, diff --git a/lib/widgets/selected_image.dart b/lib/widgets/selected_image.dart index d34f9ff9a..0c287c524 100644 --- a/lib/widgets/selected_image.dart +++ b/lib/widgets/selected_image.dart @@ -61,7 +61,6 @@ class SelectedImageState extends State { @override Widget build(BuildContext context) { - // color为null时,Web报错NoSuchMethodError: invalid member on null: 'red' (2.0.3),因此这里指定色值。 final ColorFilter _colorFilter = ColorFilter.mode( ThemeUtils.isDark(context) ? Colours.dark_unselected_item_color : Colours.text_gray, BlendMode.srcIn diff --git a/pubspec.yaml b/pubspec.yaml index 8965e0d6c..6fda04fef 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -35,7 +35,7 @@ dependencies: # 启动URL的插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/url_launcher url_launcher: 6.0.3 # 图片选择插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/image_picker - image_picker: 0.7.5 + image_picker: 0.7.5+2 # 侧滑删除 https://github.com/letsar/flutter_slidable flutter_slidable: ^0.6.0 # WebView插件 https://github.com/flutter/plugins/tree/master/packages/webview_flutter @@ -69,11 +69,12 @@ dependencies: url: 'https://github.com/simplezhli/flutter_2d_amap.git' # demo 用到的库 # 刮刮卡 https://github.com/vintage/scratcher - scratcher: ^2.0.1 + scratcher: ^2.1.0 # 动画效果 https://github.com/xvrh/lottie-flutter lottie: ^1.0.1 -# flutter_driver与common_utils、lottie等个别库依赖冲突,用依赖版本覆盖处理。 +# flutter 2.0 中flutter_driver与common_utils、lottie等个别库依赖冲突,用依赖版本覆盖处理。 +# 使用flutter 2.2无需添加 dependency_overrides: archive: ^3.1.2 crypto: ^3.0.1 From 2882254176193851594f171be912bdd2ba39f040 Mon Sep 17 00:00:00 2001 From: weilu Date: Thu, 20 May 2021 08:24:11 +0800 Subject: [PATCH 026/206] fix #167 --- lib/net/base_entity.dart | 4 ++-- lib/net/dio_utils.dart | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/net/base_entity.dart b/lib/net/base_entity.dart index 3f9004a91..e51f2f335 100644 --- a/lib/net/base_entity.dart +++ b/lib/net/base_entity.dart @@ -6,14 +6,14 @@ class BaseEntity { BaseEntity(this.code, this.message, this.data); BaseEntity.fromJson(Map json) { - code = json[Constant.code] as int; + code = json[Constant.code] as int?; message = json[Constant.message] as String; if (json.containsKey(Constant.data)) { data = _generateOBJ(json[Constant.data] as Object); } } - late int code; + int? code; late String message; T? data; diff --git a/lib/net/dio_utils.dart b/lib/net/dio_utils.dart index 7ede93060..557bb40a7 100644 --- a/lib/net/dio_utils.dart +++ b/lib/net/dio_utils.dart @@ -175,7 +175,7 @@ class DioUtils { } } - void _onError(int code, String msg, NetErrorCallback? onError) { + void _onError(int? code, String msg, NetErrorCallback? onError) { if (code == null) { code = ExceptionHandle.unknown_error; msg = '未知异常'; From 7342308f72f2ba299834b0f082e6a2ab2820f63d Mon Sep 17 00:00:00 2001 From: weilu Date: Fri, 21 May 2021 08:23:32 +0800 Subject: [PATCH 027/206] =?UTF-8?q?=E9=9B=86=E6=88=90=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=BF=81=E7=A7=BB=E8=87=B3=E7=A9=BA=E5=AE=89?= =?UTF-8?q?=E5=85=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- integration_test/integration_test.dart | 1 - integration_test/login_test.dart | 1 - test_driver/account/account.dart | 2 +- test_driver/account/account_test.dart | 6 +++--- test_driver/driver.dart | 2 +- test_driver/driver_test.dart | 2 +- test_driver/goods/goods.dart | 2 +- test_driver/goods/goods_test.dart | 6 +++--- test_driver/home/splash_page.dart | 2 +- test_driver/home/splash_page_test.dart | 6 +++--- test_driver/login/login_page.dart | 2 +- test_driver/login/login_page_test.dart | 6 +++--- test_driver/order/order.dart | 2 +- test_driver/order/order_test.dart | 6 +++--- test_driver/setting/setting.dart | 2 +- test_driver/setting/setting_test.dart | 6 +++--- test_driver/shop/shop.dart | 2 +- test_driver/shop/shop_test.dart | 6 +++--- test_driver/statistic/statistic.dart | 2 +- test_driver/statistic/statistic_test.dart | 6 +++--- test_driver/store/store.dart | 2 +- test_driver/store/store_test.dart | 6 +++--- 22 files changed, 38 insertions(+), 40 deletions(-) diff --git a/integration_test/integration_test.dart b/integration_test/integration_test.dart index 9b6161d46..8f56e577a 100644 --- a/integration_test/integration_test.dart +++ b/integration_test/integration_test.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:integration_test/integration_test_driver.dart'; diff --git a/integration_test/login_test.dart b/integration_test/login_test.dart index 34e544dda..85c7e1307 100644 --- a/integration_test/login_test.dart +++ b/integration_test/login_test.dart @@ -1,4 +1,3 @@ -// @dart=2.9 import 'package:flutter/material.dart'; import 'package:flutter_deer/login/page/login_page.dart'; import 'package:flutter_deer/login/page/register_page.dart'; diff --git a/test_driver/account/account.dart b/test_driver/account/account.dart index 4cfcd7b18..18f65b90a 100644 --- a/test_driver/account/account.dart +++ b/test_driver/account/account.dart @@ -1,4 +1,4 @@ -// @dart=2.9 + import 'package:flutter/material.dart'; import 'package:flutter_deer/res/constant.dart'; import 'package:flutter_deer/home/home_page.dart'; diff --git a/test_driver/account/account_test.dart b/test_driver/account/account_test.dart index 3af01ffad..0330aaf05 100644 --- a/test_driver/account/account_test.dart +++ b/test_driver/account/account_test.dart @@ -1,4 +1,4 @@ -// @dart=2.9 + import 'package:flutter_driver/flutter_driver.dart'; import 'package:test/test.dart'; @@ -7,7 +7,7 @@ import '../tools/test_utils.dart'; void main() { group('账户部分:', () { - FlutterDriver driver; + late FlutterDriver driver; setUpAll(() async { driver = await FlutterDriver.connect(); @@ -19,7 +19,7 @@ void main() { }); tearDownAll(() async { - await driver?.close(); + await driver.close(); }); test('账户流水页测试',() async { diff --git a/test_driver/driver.dart b/test_driver/driver.dart index d90cbc8a6..51842fb5a 100644 --- a/test_driver/driver.dart +++ b/test_driver/driver.dart @@ -1,4 +1,4 @@ -// @dart=2.9 + import 'package:flutter_deer/res/constant.dart'; import 'package:flutter_driver/driver_extension.dart'; import 'package:flutter_deer/main.dart' as app; diff --git a/test_driver/driver_test.dart b/test_driver/driver_test.dart index 7ed51807d..9f5c4ea7c 100644 --- a/test_driver/driver_test.dart +++ b/test_driver/driver_test.dart @@ -1,4 +1,4 @@ -// @dart=2.9 + import 'account/account_test.dart' as account_test; import 'goods/goods_test.dart' as goods_test; import 'home/splash_page_test.dart' as splash_test; diff --git a/test_driver/goods/goods.dart b/test_driver/goods/goods.dart index 1560b9931..31846598c 100644 --- a/test_driver/goods/goods.dart +++ b/test_driver/goods/goods.dart @@ -1,4 +1,4 @@ -// @dart=2.9 + import 'package:flutter/material.dart'; import 'package:flutter_deer/home/home_page.dart'; import 'package:flutter_driver/driver_extension.dart'; diff --git a/test_driver/goods/goods_test.dart b/test_driver/goods/goods_test.dart index 53d82d66f..7b9064571 100644 --- a/test_driver/goods/goods_test.dart +++ b/test_driver/goods/goods_test.dart @@ -1,4 +1,4 @@ -// @dart=2.9 + import 'package:flutter_driver/flutter_driver.dart'; import 'package:test/test.dart'; @@ -7,7 +7,7 @@ import '../tools/test_utils.dart'; void main() { group('商品部分:', () { - FlutterDriver driver; + late FlutterDriver driver; setUpAll(() async { driver = await FlutterDriver.connect(); @@ -19,7 +19,7 @@ void main() { }); tearDownAll(() async { - await driver?.close(); + await driver.close(); }); test('商品页测试',() async { diff --git a/test_driver/home/splash_page.dart b/test_driver/home/splash_page.dart index 699ceb682..73ceda954 100644 --- a/test_driver/home/splash_page.dart +++ b/test_driver/home/splash_page.dart @@ -1,4 +1,4 @@ -// @dart=2.9 + import 'package:flutter_driver/driver_extension.dart'; import 'package:flutter_deer/main.dart' as app; diff --git a/test_driver/home/splash_page_test.dart b/test_driver/home/splash_page_test.dart index 3e42f9b43..8974016a2 100644 --- a/test_driver/home/splash_page_test.dart +++ b/test_driver/home/splash_page_test.dart @@ -1,4 +1,4 @@ -// @dart=2.9 + import 'package:flutter_driver/flutter_driver.dart'; import 'package:test/test.dart'; @@ -6,7 +6,7 @@ import '../tools/test_utils.dart'; void main([List args = const []]) { group('引导页:', () { - FlutterDriver driver; + late FlutterDriver driver; // 测试之前连接程序 setUpAll(() async { @@ -20,7 +20,7 @@ void main([List args = const []]) { // 在测试完成后,关闭程序的连接。 tearDownAll(() async { - await driver?.close(); + await driver.close(); }); test('测试引导页滑动',() async { diff --git a/test_driver/login/login_page.dart b/test_driver/login/login_page.dart index 04500c3ae..3806dcd59 100644 --- a/test_driver/login/login_page.dart +++ b/test_driver/login/login_page.dart @@ -1,4 +1,4 @@ -// @dart=2.9 + import 'package:flutter/material.dart'; import 'package:flutter_deer/login/page/login_page.dart'; import 'package:flutter_driver/driver_extension.dart'; diff --git a/test_driver/login/login_page_test.dart b/test_driver/login/login_page_test.dart index 9ed5578c1..c2f89e534 100644 --- a/test_driver/login/login_page_test.dart +++ b/test_driver/login/login_page_test.dart @@ -1,4 +1,4 @@ -// @dart=2.9 + import 'package:flutter_driver/flutter_driver.dart'; import 'package:test/test.dart'; @@ -7,7 +7,7 @@ import '../tools/test_utils.dart'; void main() { group('登录部分:', () { - FlutterDriver driver; + late FlutterDriver driver; setUpAll(() async { driver = await FlutterDriver.connect(); @@ -19,7 +19,7 @@ void main() { }); tearDownAll(() async { - await driver?.close(); + await driver.close(); }); test('登录页按钮点击',() async { diff --git a/test_driver/order/order.dart b/test_driver/order/order.dart index def9e4372..3edbac8d9 100644 --- a/test_driver/order/order.dart +++ b/test_driver/order/order.dart @@ -1,4 +1,4 @@ -// @dart=2.9 + import 'package:flutter/material.dart'; import 'package:flutter_deer/res/constant.dart'; import 'package:flutter_deer/home/home_page.dart'; diff --git a/test_driver/order/order_test.dart b/test_driver/order/order_test.dart index e522ba653..f98865e38 100644 --- a/test_driver/order/order_test.dart +++ b/test_driver/order/order_test.dart @@ -1,4 +1,4 @@ -// @dart=2.9 + import 'package:flutter_driver/flutter_driver.dart'; import 'package:test/test.dart'; @@ -7,7 +7,7 @@ import '../tools/test_utils.dart'; void main() { group('订单部分:', () { - FlutterDriver driver; + late FlutterDriver driver; setUpAll(() async { driver = await FlutterDriver.connect(); @@ -19,7 +19,7 @@ void main() { }); tearDownAll(() async { - await driver?.close(); + await driver.close(); }); test('滑动订单列表',() async { diff --git a/test_driver/setting/setting.dart b/test_driver/setting/setting.dart index 44d082569..c715cd591 100644 --- a/test_driver/setting/setting.dart +++ b/test_driver/setting/setting.dart @@ -1,4 +1,4 @@ -// @dart=2.9 + import 'package:sp_util/sp_util.dart'; import 'package:flutter/material.dart'; import 'package:flutter_deer/setting/page/setting_page.dart'; diff --git a/test_driver/setting/setting_test.dart b/test_driver/setting/setting_test.dart index 10437905c..c249646c5 100644 --- a/test_driver/setting/setting_test.dart +++ b/test_driver/setting/setting_test.dart @@ -1,4 +1,4 @@ -// @dart=2.9 + import 'package:flutter_driver/flutter_driver.dart'; import 'package:test/test.dart'; @@ -7,7 +7,7 @@ import '../tools/test_utils.dart'; void main([List args = const []]) { group('设置部分:', () { - FlutterDriver driver; + late FlutterDriver driver; setUpAll(() async { driver = await FlutterDriver.connect(); @@ -19,7 +19,7 @@ void main([List args = const []]) { }); tearDownAll(() async { - await driver?.close(); + await driver.close(); }); test('设置页测试',() async { diff --git a/test_driver/shop/shop.dart b/test_driver/shop/shop.dart index bd6f94403..32f4a5a63 100644 --- a/test_driver/shop/shop.dart +++ b/test_driver/shop/shop.dart @@ -1,4 +1,4 @@ -// @dart=2.9 + import 'package:flutter/material.dart'; import 'package:flutter_deer/res/constant.dart'; import 'package:flutter_deer/home/home_page.dart'; diff --git a/test_driver/shop/shop_test.dart b/test_driver/shop/shop_test.dart index 7a40669c7..972f9760d 100644 --- a/test_driver/shop/shop_test.dart +++ b/test_driver/shop/shop_test.dart @@ -1,4 +1,4 @@ -// @dart=2.9 + import 'package:flutter_driver/flutter_driver.dart'; import 'package:test/test.dart'; @@ -7,7 +7,7 @@ import '../tools/test_utils.dart'; void main() { group('店铺部分:', () { - FlutterDriver driver; + late FlutterDriver driver; setUpAll(() async { driver = await FlutterDriver.connect(); @@ -19,7 +19,7 @@ void main() { }); tearDownAll(() async { - await driver?.close(); + await driver.close(); }); test('店铺页测试',() async { diff --git a/test_driver/statistic/statistic.dart b/test_driver/statistic/statistic.dart index 4ac187586..ce933e427 100644 --- a/test_driver/statistic/statistic.dart +++ b/test_driver/statistic/statistic.dart @@ -1,4 +1,4 @@ -// @dart=2.9 + import 'package:flutter/material.dart'; import 'package:flutter_deer/home/home_page.dart'; import 'package:flutter_driver/driver_extension.dart'; diff --git a/test_driver/statistic/statistic_test.dart b/test_driver/statistic/statistic_test.dart index f05f4af0a..d3c70b029 100644 --- a/test_driver/statistic/statistic_test.dart +++ b/test_driver/statistic/statistic_test.dart @@ -1,4 +1,4 @@ -// @dart=2.9 + import 'package:flutter_driver/flutter_driver.dart'; import 'package:test/test.dart'; @@ -7,7 +7,7 @@ import '../tools/test_utils.dart'; void main() { group('统计部分:', () { - FlutterDriver driver; + late FlutterDriver driver; setUpAll(() async { driver = await FlutterDriver.connect(); @@ -19,7 +19,7 @@ void main() { }); tearDownAll(() async { - await driver?.close(); + await driver.close(); }); test('统计页测试',() async { diff --git a/test_driver/store/store.dart b/test_driver/store/store.dart index c7d21ae6c..4df9c3e12 100644 --- a/test_driver/store/store.dart +++ b/test_driver/store/store.dart @@ -1,4 +1,4 @@ -// @dart=2.9 + import 'package:flutter/material.dart'; import 'package:flutter_deer/main.dart'; import 'package:flutter_deer/store/page/store_audit_page.dart'; diff --git a/test_driver/store/store_test.dart b/test_driver/store/store_test.dart index 22a0cb05c..22025fedb 100644 --- a/test_driver/store/store_test.dart +++ b/test_driver/store/store_test.dart @@ -1,4 +1,4 @@ -// @dart=2.9 + import 'package:flutter_driver/flutter_driver.dart'; import 'package:test/test.dart'; @@ -7,7 +7,7 @@ import '../tools/test_utils.dart'; void main() { group('审核部分:', () { - FlutterDriver driver; + late FlutterDriver driver; setUpAll(() async { driver = await FlutterDriver.connect(); @@ -19,7 +19,7 @@ void main() { }); tearDownAll(() async { - await driver?.close(); + await driver.close(); }); test('店铺审核资料页测试',() async { From 698a5b0805c5765c264382de9931288f886f93eb Mon Sep 17 00:00:00 2001 From: weilu Date: Fri, 21 May 2021 08:27:23 +0800 Subject: [PATCH 028/206] =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=96=B0=E7=9A=84ser?= =?UTF-8?q?vice=20worker=E5=8A=A0=E8=BD=BD=E6=9C=BA=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/flutter-web-deploy.yml | 4 +- pubspec.yaml | 14 +++--- web/index.html | 60 +++++++++++++++++++++++- 3 files changed, 67 insertions(+), 11 deletions(-) diff --git a/.github/workflows/flutter-web-deploy.yml b/.github/workflows/flutter-web-deploy.yml index d6922ac2c..7f86cd572 100644 --- a/.github/workflows/flutter-web-deploy.yml +++ b/.github/workflows/flutter-web-deploy.yml @@ -5,7 +5,7 @@ name: flutter_deer web deploy on: push: paths: - - 'pubspec1.yaml' + - 'pubspec.yaml' jobs: web_build_and_deploy: @@ -14,7 +14,7 @@ jobs: - uses: actions/checkout@v2.3.1 - uses: subosito/flutter-action@v1 with: - flutter-version: '2.3.0-0.1.pre' + flutter-version: '2.3.0-12.1.pre' channel: 'dev' - name: "Web Build 🔧" run: | diff --git a/pubspec.yaml b/pubspec.yaml index 6fda04fef..653fd6d29 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -33,13 +33,13 @@ dependencies: # Flutter 轮播图 https://github.com/lianyagang/flutter_swiper_null_safety flutter_swiper_null_safety: ^1.0.2 # flutter_swiper很久不维护,可以使用空安全版本:flutter_swiper_null_safety # 启动URL的插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/url_launcher - url_launcher: 6.0.3 + url_launcher: 6.0.4 # 图片选择插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/image_picker image_picker: 0.7.5+2 # 侧滑删除 https://github.com/letsar/flutter_slidable flutter_slidable: ^0.6.0 # WebView插件 https://github.com/flutter/plugins/tree/master/packages/webview_flutter - webview_flutter: 2.0.4 + webview_flutter: 2.0.7 # 处理键盘事件 https://github.com/diegoveloper/flutter_keyboard_actions keyboard_actions: ^3.4.0 # 列表悬浮头 https://github.com/fluttercommunity/flutter_sticky_headers @@ -61,7 +61,7 @@ dependencies: # 振动(支持Web) https://github.com/benjamindean/flutter_vibration vibration: ^1.7.4-nullsafety.0 # 获取当前设备信息 https://github.com/flutter/plugins/tree/master/packages/device_info - device_info: 2.0.0 + device_info: 2.0.1 # 高德2D地图插件(支持Web) https://github.com/simplezhli/flutter_2d_amap flutter_2d_amap: git: @@ -75,10 +75,10 @@ dependencies: # flutter 2.0 中flutter_driver与common_utils、lottie等个别库依赖冲突,用依赖版本覆盖处理。 # 使用flutter 2.2无需添加 -dependency_overrides: - archive: ^3.1.2 - crypto: ^3.0.1 - convert: ^3.0.0 +#dependency_overrides: +# archive: ^3.1.2 +# crypto: ^3.0.1 +# convert: ^3.0.0 dev_dependencies: # Widget测试 diff --git a/web/index.html b/web/index.html index d11f08422..e45d526fa 100644 --- a/web/index.html +++ b/web/index.html @@ -31,14 +31,70 @@ application. For more information, see: https://developers.google.com/web/fundamentals/primers/service-workers --> - From 1455c1adfb54e867eea03a535b98459cab4cd87a Mon Sep 17 00:00:00 2001 From: weilu Date: Fri, 21 May 2021 09:56:08 +0800 Subject: [PATCH 029/206] =?UTF-8?q?web=E9=97=AE=E9=A2=98=E8=A1=A5=E5=85=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 + ...56\351\242\230\346\261\207\346\200\273.md" | 16 ++- ...56\351\242\230\346\261\207\346\200\273.md" | 4 + pubspec.yaml | 2 +- test_driver/goods/goods_test.dart | 2 +- test_driver/order/order_test.dart | 50 ++++---- web/index.html | 114 +++++------------- web/index1.html | 100 +++++++++++++++ 8 files changed, 177 insertions(+), 113 deletions(-) create mode 100644 web/index1.html diff --git a/README.md b/README.md index 8b1cd8fc5..0fd76808a 100644 --- a/README.md +++ b/README.md @@ -119,6 +119,8 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ - [【译】正确操作Dart中的字符串](https://weilu.blog.csdn.net/article/details/107857569) - [【译】学习Flutter中新的Navigator和Router系统](https://weilu.blog.csdn.net/article/details/108902282) + +- [【译】Flutter 2.2中的新功能](https://weilu.blog.csdn.net/article/details/117061293) ## 使用到的三方库 diff --git "a/docs/Android\351\227\256\351\242\230\346\261\207\346\200\273.md" "b/docs/Android\351\227\256\351\242\230\346\261\207\346\200\273.md" index 8b00f3101..059686620 100644 --- "a/docs/Android\351\227\256\351\242\230\346\261\207\346\200\273.md" +++ "b/docs/Android\351\227\256\351\242\230\346\261\207\346\200\273.md" @@ -26,9 +26,23 @@ maven { 参考:https://github.com/flutter/flutter/issues/39729 +## 关于打包 + +默认使用`flutter build apk`命令,包含32、64位。 + +添加`--target-platform`可指定平台,比如`android-arm`或`android-arm64`,来减小包体积。 + +还可以使用`--split-debug-info`标志省略调试信息,来减小包体积。(注意使用此方式无法获取可读的堆栈信息) + +完整举例子: + +``` +flutter build apk --target-platform android-arm64 --obfuscate --split-debug-info=/flutter_deer/ +``` + ## 历史问题 -- 1.22.0已知问题(~~#67262~~ ~~#67213~~) +- 1.22.0已知问题(~~#67262~~ ~~#67213~~)。 - 1.17.0已知问题(~~#25767~~ ~~#47191~~)。 diff --git "a/docs/Web\351\227\256\351\242\230\346\261\207\346\200\273.md" "b/docs/Web\351\227\256\351\242\230\346\261\207\346\200\273.md" index ad0abbc1e..6f4245b32 100644 --- "a/docs/Web\351\227\256\351\242\230\346\261\207\346\200\273.md" +++ "b/docs/Web\351\227\256\351\242\230\346\261\207\346\200\273.md" @@ -1,5 +1,9 @@ # Web 问题汇总(flutter 2.2.0) +## service worker + +flutter 2.2中新的`service worker`加载机制目前发现兼容不够,部分浏览器无法正常工作。(web/index1.html) + ## CanvasKit渲染(默认PC浏览器) ### 中文文字、表情等加载延迟导致乱码现象 diff --git a/pubspec.yaml b/pubspec.yaml index 653fd6d29..b2da9515c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -25,7 +25,7 @@ dependencies: # 网络库 https://github.com/flutterchina/dio dio: ^4.0.0 # https://github.com/ReactiveX/rxdart - rxdart: ^0.26.0 + rxdart: ^0.27.0 # Dart 常用工具类库 https://github.com/Sky24n/common_utils common_utils: 2.0.2 # Flutter 常用工具类库 https://github.com/Sky24n/flustars diff --git a/test_driver/goods/goods_test.dart b/test_driver/goods/goods_test.dart index 7b9064571..b10dbc2ea 100644 --- a/test_driver/goods/goods_test.dart +++ b/test_driver/goods/goods_test.dart @@ -77,7 +77,7 @@ void main() { test('商品规格页测试',() async { await driver.tap(find.text('商品规格')); - await delayed();await delayed(); + await delayed(); await driver.tap(find.byValueKey('hint')); await delayed(); await driver.tap(find.byValueKey('name_edit')); diff --git a/test_driver/order/order_test.dart b/test_driver/order/order_test.dart index f98865e38..06a1b3bc1 100644 --- a/test_driver/order/order_test.dart +++ b/test_driver/order/order_test.dart @@ -57,30 +57,30 @@ void main() { await driver.scroll(find.byValueKey('order_list'), 0.0, 500.0, scrollDuration); }); - // test('订单详情页',() async { - // final SerializableFinder orderItem = find.byValueKey('order_item_2'); - // await driver.tap(orderItem); - // await driver.tap(find.text('订单跟踪')); - // await delayed(); - // await driver.tap(find.byTooltip('Back')); - // await delayed(); - // await driver.scroll(find.byValueKey('order_info'), 0.0, -1000.0, scrollDuration); - // await delayed(); - // await driver.tap(find.byTooltip('Back')); - // await delayed(); - // }); - // - // test('订单搜索页测试',() async { - // await driver.tap(find.byTooltip('搜索')); - // await driver.tap(find.byValueKey('search_text_field'), timeout: const Duration(minutes: 1),); - // await driver.enterText('flutter'); - // await driver.tap(find.text('搜索')); - // final SerializableFinder orderList = find.byValueKey('order_search_list'); - // await driver.waitFor(orderList, timeout: const Duration(minutes: 1),); - // await driver.scroll(orderList, 0.0, -300.0, scrollDuration); - // await delayed(); - // await driver.tap(find.byValueKey('search_back')); - // await delayed(); - // }, timeout: const Timeout.factor(5)); + test('订单详情页',() async { + final SerializableFinder orderItem = find.byValueKey('order_item_2'); + await driver.tap(orderItem); + await driver.tap(find.text('订单跟踪')); + await delayed(); + await driver.tap(find.byTooltip('Back')); + await delayed(); + await driver.scroll(find.byValueKey('order_info'), 0.0, -1000.0, scrollDuration); + await delayed(); + await driver.tap(find.byTooltip('Back')); + await delayed(); + }); + + test('订单搜索页测试',() async { + await driver.tap(find.byTooltip('搜索')); + await driver.tap(find.byValueKey('search_text_field'), timeout: const Duration(minutes: 1),); + await driver.enterText('flutter'); + await driver.tap(find.text('搜索')); + final SerializableFinder orderList = find.byValueKey('order_search_list'); + await driver.waitFor(orderList, timeout: const Duration(minutes: 1),); + await driver.scroll(orderList, 0.0, -300.0, scrollDuration); + await delayed(); + await driver.tap(find.byValueKey('search_back')); + await delayed(); + }, timeout: const Timeout.factor(5)); }); } \ No newline at end of file diff --git a/web/index.html b/web/index.html index e45d526fa..35d20e34d 100644 --- a/web/index.html +++ b/web/index.html @@ -1,100 +1,44 @@ - - - - - + + + + + - - - - - + + + + + - - + + - flutter_deer - + flutter_deer + - - - - + + + diff --git a/web/index1.html b/web/index1.html new file mode 100644 index 000000000..e45d526fa --- /dev/null +++ b/web/index1.html @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + flutter_deer + + + + + + + + + From 28b40045b8c9e0ba6f5670ad5240173772c4cf49 Mon Sep 17 00:00:00 2001 From: weilu Date: Tue, 25 May 2021 14:44:38 +0800 Subject: [PATCH 030/206] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/flutter-web-deploy.yml | 2 +- lib/demo/overlay/page/test_page.dart | 21 ++++++++++++++++++- .../page/order_statistics_page.dart | 9 +++++--- lib/statistics/widgets/selected_date.dart | 14 ++++--------- .../bezier_chart/bezier_chart_widget.dart | 12 +++++------ 5 files changed, 37 insertions(+), 21 deletions(-) diff --git a/.github/workflows/flutter-web-deploy.yml b/.github/workflows/flutter-web-deploy.yml index 7f86cd572..8fd1f74ed 100644 --- a/.github/workflows/flutter-web-deploy.yml +++ b/.github/workflows/flutter-web-deploy.yml @@ -5,7 +5,7 @@ name: flutter_deer web deploy on: push: paths: - - 'pubspec.yaml' + - 'pubspec1.yaml' jobs: web_build_and_deploy: diff --git a/lib/demo/overlay/page/test_page.dart b/lib/demo/overlay/page/test_page.dart index 20e0c0d39..99e7b0977 100644 --- a/lib/demo/overlay/page/test_page.dart +++ b/lib/demo/overlay/page/test_page.dart @@ -21,7 +21,26 @@ class _TestPageState extends State { body: Center( child: NeumorphicContainer( child: GestureDetector( - child: const Text('点击跳转', style: TextStyle(fontSize: 18.0, color: Colors.white70),), + child: Text( + '点击跳转', + style: TextStyle( + fontSize: 18.0, + color: Colors.white, + fontWeight: FontWeight.bold, + shadows: [ + const Shadow( + offset: Offset(3, 3), + color: Colors.black38, + blurRadius: 10, + ), + Shadow( + offset: const Offset(-3, -3), + color: Colors.white.withOpacity(0.85), + blurRadius: 10, + ) + ], + ), + ), onTap: () { Navigator.push( context, diff --git a/lib/statistics/page/order_statistics_page.dart b/lib/statistics/page/order_statistics_page.dart index 829970ba2..c94d6c578 100644 --- a/lib/statistics/page/order_statistics_page.dart +++ b/lib/statistics/page/order_statistics_page.dart @@ -173,11 +173,14 @@ class _OrderStatisticsPageState extends State with TickerPr final Column body = Column( children: [ + Gaps.vGap16, Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ + Gaps.hGap16, Text(title, style: const TextStyle(color: Colors.white)), + const Spacer(), Text(count, style: const TextStyle(color: Colors.white)), + Gaps.hGap16, ], ), Gaps.vGap4, @@ -195,7 +198,7 @@ class _OrderStatisticsPageState extends State with TickerPr ), ], config: BezierChartConfig( - footerHeight: 0, + footerHeight: 16, showVerticalIndicator: false, verticalIndicatorFixedPosition: false, snap: true, @@ -212,7 +215,7 @@ class _OrderStatisticsPageState extends State with TickerPr color: color, shadowColor: shadowColor, child: Container( - padding: const EdgeInsets.all(16.0), + //padding: const EdgeInsets.symmetric(horizontal: 16.0), decoration: BoxDecoration( image: DecorationImage( image: ImageUtils.getAssetImage('statistic/chart_fg'), diff --git a/lib/statistics/widgets/selected_date.dart b/lib/statistics/widgets/selected_date.dart index c22660a79..9bdcd0dcb 100644 --- a/lib/statistics/widgets/selected_date.dart +++ b/lib/statistics/widgets/selected_date.dart @@ -32,7 +32,8 @@ class SelectedDateButton extends StatelessWidget { borderRadius: BorderRadius.circular(16.0), onTap: onTap, child: Container( - constraints: const BoxConstraints( + constraints: BoxConstraints( + maxWidth: fontSize > 14 ? double.infinity : 32.0, // 日历按钮32 * 32 minWidth: 32.0, maxHeight: 32.0, minHeight: 32.0, @@ -40,7 +41,6 @@ class SelectedDateButton extends StatelessWidget { padding: EdgeInsets.symmetric(horizontal: fontSize > 14 ? 10.0 : 0.0), decoration: selected ? BoxDecoration( borderRadius: BorderRadius.circular(20.0), -// shape: BoxShape.circle, boxShadow: context.isDark ? null : const [ BoxShadow(color: Colours.shadow_blue, offset: Offset(0.0, 2.0), blurRadius: 8.0, spreadRadius: 0.0), ], @@ -50,14 +50,8 @@ class SelectedDateButton extends StatelessWidget { colors: [Color(0xFF5758FA), Colours.gradient_blue], ), ) : null, - child: Column( - // 此处为了宽度适应,高度撑满。 - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - child - ], - ), + alignment: Alignment.center, + child: child, ), ); } diff --git a/lib/widgets/bezier_chart/bezier_chart_widget.dart b/lib/widgets/bezier_chart/bezier_chart_widget.dart index c17c8521f..35dc393aa 100644 --- a/lib/widgets/bezier_chart/bezier_chart_widget.dart +++ b/lib/widgets/bezier_chart/bezier_chart_widget.dart @@ -1349,8 +1349,9 @@ class _BezierChartPainter extends CustomPainter { double infoHeight = 30; //bubble indicator padding - final horizontalPadding = 28.0; - //todo 42 + // TODO 28 + final horizontalPadding = 18.0; + // TODO 42 double offsetInfo = 37 + ((_currentCustomValues.length - 1.0) * 10.0); final centerForCircle = Offset(verticalX, height - yValue); final center = config.verticalIndicatorFixedPosition @@ -1383,8 +1384,7 @@ class _BezierChartPainter extends CustomPainter { infoHeight = infoHeight + (_currentCustomValues.length - 1) * (infoHeight / 3); - for (_CustomValue customValue - in _currentCustomValues.reversed.toList()) { + for (_CustomValue customValue in _currentCustomValues.reversed.toList()) { textValues.add( TextSpan( text: '${customValue.value} ', @@ -1488,7 +1488,7 @@ class _BezierChartPainter extends CustomPainter { textPainter.paint( canvas, Offset( - center.dx - textPainter.width / 2, + center.dx - textPainter.width / 2 + 6, // TODO 0 center.dy - offsetInfo - infoHeight / 2.5, ), ); @@ -1501,7 +1501,7 @@ class _BezierChartPainter extends CustomPainter { centerIndicator.dx - infoWidth / 2 + radiusDotIndicatorItems + - 4, + 6, // TODO 4 centerIndicator.dy); canvas.drawCircle( fixedCenter, From 5bb5089a4fabe2fa2d3a8308f7cba0a6a1d47cf8 Mon Sep 17 00:00:00 2001 From: weilu Date: Thu, 27 May 2021 10:23:46 +0800 Subject: [PATCH 031/206] =?UTF-8?q?=E6=B7=BB=E5=8A=A0desktop=5Fwindow?= =?UTF-8?q?=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/main.dart | 5 +++++ pubspec.yaml | 6 ++++-- windows/flutter/generated_plugin_registrant.cc | 3 +++ windows/flutter/generated_plugins.cmake | 1 + 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 0199c5a61..c1f79b92a 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -14,6 +14,7 @@ import 'package:flutter_deer/util/handle_error_utils.dart'; import 'package:flutter_deer/util/log_utils.dart'; import 'package:flutter_deer/util/theme_utils.dart'; import 'package:flutter_gen/gen_l10n/deer_localizations.dart'; +import 'package:desktop_window/desktop_window.dart'; import 'package:oktoast/oktoast.dart'; import 'package:flutter_deer/home/splash_page.dart'; import 'package:provider/provider.dart'; @@ -43,6 +44,10 @@ Future main() async { SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.bottom]); // TODO(weilu): 启动体验不佳。状态栏、导航栏在冷启动开始的一瞬间为黑色,且无法通过隐藏、修改颜色等方式进行处理。。。 // 相关问题跟踪:https://github.com/flutter/flutter/issues/73351 + /// 设置桌面端窗口大小 + if (Device.isDesktop) { + await DesktopWindow.setWindowSize(const Size(400, 800)); + } } class MyApp extends StatelessWidget { diff --git a/pubspec.yaml b/pubspec.yaml index b2da9515c..afa63c451 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -35,7 +35,7 @@ dependencies: # 启动URL的插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/url_launcher url_launcher: 6.0.4 # 图片选择插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/image_picker - image_picker: 0.7.5+2 + image_picker: 0.7.5+3 # 侧滑删除 https://github.com/letsar/flutter_slidable flutter_slidable: ^0.6.0 # WebView插件 https://github.com/flutter/plugins/tree/master/packages/webview_flutter @@ -62,6 +62,8 @@ dependencies: vibration: ^1.7.4-nullsafety.0 # 获取当前设备信息 https://github.com/flutter/plugins/tree/master/packages/device_info device_info: 2.0.1 + # 改变桌面端窗口大小(MacOS/Linux/Windows) https://github.com/mix1009/desktop_window + desktop_window: 0.4.0 # 高德2D地图插件(支持Web) https://github.com/simplezhli/flutter_2d_amap flutter_2d_amap: git: @@ -93,7 +95,7 @@ dev_dependencies: # flutter_goldens: # sdk: flutter # 单元测试 - test: ^1.16.5 + test: ^1.16.8 # For information on the generic Dart part of this file, see the # following page: https:/w.dartlang.org/tools/pub/pubspec diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index ddfcf7c32..a76703f16 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -4,9 +4,12 @@ #include "generated_plugin_registrant.h" +#include #include void RegisterPlugins(flutter::PluginRegistry* registry) { + DesktopWindowPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("DesktopWindowPlugin")); UrlLauncherPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("UrlLauncherPlugin")); } diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index 411af46dd..431160e13 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -3,6 +3,7 @@ # list(APPEND FLUTTER_PLUGIN_LIST + desktop_window url_launcher_windows ) From 65c9a4629731628e52fe376a4d67021542db72df Mon Sep 17 00:00:00 2001 From: weilu Date: Thu, 27 May 2021 11:42:13 +0800 Subject: [PATCH 032/206] =?UTF-8?q?=E6=9B=BF=E6=8D=A2device=5Finfo?= =?UTF-8?q?=E4=B8=BAdevice=5Finfo=5Fplus?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README-EN.md | 1 + README.md | 1 + lib/home/splash_page.dart | 6 +++++- lib/main.dart | 5 ----- lib/util/device_utils.dart | 4 ++-- pubspec.yaml | 4 ++-- 6 files changed, 11 insertions(+), 10 deletions(-) diff --git a/README-EN.md b/README-EN.md index 242a85a96..550c79fb6 100644 --- a/README-EN.md +++ b/README-EN.md @@ -137,6 +137,7 @@ Web:https://simplezhli.github.io/flutter_deer/ | [sprintf](https://github.com/Naddiseo/dart-sprintf) | **Format String** | | [qr_code_scanner](https://github.com/juliuscanute/qr_code_scanner) | **Scan code** | | [intl](https://github.com/dart-lang/intl) | **Localization** | +| [device_info_plus](https://github.com/fluttercommunity/plus_plugins/tree/main/packages/device_info_plus) | **Device info** | | [vibration](https://github.com/benjamindean/flutter_vibration) | **Vibration** | | [lottie](https://github.com/xvrh/lottie-flutter) | **lottie** | diff --git a/README.md b/README.md index 0fd76808a..39433fb0b 100644 --- a/README.md +++ b/README.md @@ -148,6 +148,7 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ | [sprintf](https://github.com/Naddiseo/dart-sprintf) | **格式化String** | | [qr_code_scanner](https://github.com/juliuscanute/qr_code_scanner) | **扫码功能** | | [intl](https://github.com/dart-lang/intl) | **本地化** | +| [device_info_plus](https://github.com/fluttercommunity/plus_plugins/tree/main/packages/device_info_plus) | **获取设备信息** | | [vibration](https://github.com/benjamindean/flutter_vibration) | **振动** | | [lottie](https://github.com/xvrh/lottie-flutter) | **动画效果** | diff --git a/lib/home/splash_page.dart b/lib/home/splash_page.dart index 2855f000d..c7e8518b8 100644 --- a/lib/home/splash_page.dart +++ b/lib/home/splash_page.dart @@ -10,6 +10,7 @@ import 'package:flutter_deer/util/device_utils.dart'; import 'package:flutter_deer/util/image_utils.dart'; import 'package:flutter_deer/util/theme_utils.dart'; import 'package:flutter_deer/widgets/load_image.dart'; +import 'package:desktop_window/desktop_window.dart'; import 'package:flutter_slidable/flutter_slidable.dart'; import 'package:quick_actions/quick_actions.dart'; import 'package:rxdart/rxdart.dart'; @@ -46,7 +47,10 @@ class _SplashPageState extends State { } _initSplash(); }); - + /// 设置桌面端窗口大小 + if (Device.isDesktop) { + DesktopWindow.setWindowSize(const Size(400, 800)); + } if (Device.isAndroid) { final QuickActions quickActions = QuickActions(); quickActions.initialize((String shortcutType) async { diff --git a/lib/main.dart b/lib/main.dart index c1f79b92a..0199c5a61 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -14,7 +14,6 @@ import 'package:flutter_deer/util/handle_error_utils.dart'; import 'package:flutter_deer/util/log_utils.dart'; import 'package:flutter_deer/util/theme_utils.dart'; import 'package:flutter_gen/gen_l10n/deer_localizations.dart'; -import 'package:desktop_window/desktop_window.dart'; import 'package:oktoast/oktoast.dart'; import 'package:flutter_deer/home/splash_page.dart'; import 'package:provider/provider.dart'; @@ -44,10 +43,6 @@ Future main() async { SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.bottom]); // TODO(weilu): 启动体验不佳。状态栏、导航栏在冷启动开始的一瞬间为黑色,且无法通过隐藏、修改颜色等方式进行处理。。。 // 相关问题跟踪:https://github.com/flutter/flutter/issues/73351 - /// 设置桌面端窗口大小 - if (Device.isDesktop) { - await DesktopWindow.setWindowSize(const Size(400, 800)); - } } class MyApp extends StatelessWidget { diff --git a/lib/util/device_utils.dart b/lib/util/device_utils.dart index 2deaf01ec..af43915ae 100644 --- a/lib/util/device_utils.dart +++ b/lib/util/device_utils.dart @@ -1,5 +1,5 @@ import 'dart:io'; -import 'package:device_info/device_info.dart'; +import 'package:device_info_plus/device_info_plus.dart'; import 'package:flutter/foundation.dart'; /// https://medium.com/gskinner-team/flutter-simplify-platform-screen-size-detection-4cb6fc4f7ed1 @@ -27,7 +27,7 @@ class Device { /// 使用前记得初始化 static int getAndroidSdkInt() { if (isAndroid && _androidInfo != null) { - return _androidInfo.version.sdkInt; + return _androidInfo.version.sdkInt ?? -1; } else { return -1; } diff --git a/pubspec.yaml b/pubspec.yaml index afa63c451..175140f15 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -60,8 +60,8 @@ dependencies: quick_actions: 0.6.0+1 # 振动(支持Web) https://github.com/benjamindean/flutter_vibration vibration: ^1.7.4-nullsafety.0 - # 获取当前设备信息 https://github.com/flutter/plugins/tree/master/packages/device_info - device_info: 2.0.1 + # 获取当前设备信息 https://github.com/fluttercommunity/plus_plugins/tree/main/packages/device_info_plus + device_info_plus: 1.0.1 # 改变桌面端窗口大小(MacOS/Linux/Windows) https://github.com/mix1009/desktop_window desktop_window: 0.4.0 # 高德2D地图插件(支持Web) https://github.com/simplezhli/flutter_2d_amap From 5d97b9881ed8249e7b2b81f0cb3acc69f4a2c212 Mon Sep 17 00:00:00 2001 From: weilu Date: Fri, 28 May 2021 08:30:30 +0800 Subject: [PATCH 033/206] =?UTF-8?q?TextSpan=20=E9=BC=A0=E6=A0=87=E5=85=89?= =?UTF-8?q?=E6=A0=87=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/flutter-web-deploy.yml | 2 +- integration_test/goods_test.dart | 127 +++++++++++++++++++++++ lib/goods/page/goods_list_page.dart | 20 ++-- lib/goods/page/goods_size_page.dart | 85 ++++++++------- lib/home/splash_page.dart | 4 +- lib/login/page/sms_login_page.dart | 34 +++--- lib/main.dart | 20 ++-- lib/util/device_utils.dart | 4 + test_driver/goods/goods.dart | 2 + test_driver/goods/goods_test.dart | 10 +- test_driver/setting/setting.dart | 2 + 11 files changed, 233 insertions(+), 77 deletions(-) create mode 100644 integration_test/goods_test.dart diff --git a/.github/workflows/flutter-web-deploy.yml b/.github/workflows/flutter-web-deploy.yml index 8fd1f74ed..7f86cd572 100644 --- a/.github/workflows/flutter-web-deploy.yml +++ b/.github/workflows/flutter-web-deploy.yml @@ -5,7 +5,7 @@ name: flutter_deer web deploy on: push: paths: - - 'pubspec1.yaml' + - 'pubspec.yaml' jobs: web_build_and_deploy: diff --git a/integration_test/goods_test.dart b/integration_test/goods_test.dart new file mode 100644 index 000000000..b6850cdc5 --- /dev/null +++ b/integration_test/goods_test.dart @@ -0,0 +1,127 @@ +import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/rendering.dart'; +import 'package:flutter_deer/goods/page/goods_edit_page.dart'; +import 'package:flutter_deer/goods/page/goods_page.dart'; +import 'package:flutter_deer/goods/page/goods_size_page.dart'; +import 'package:flutter_deer/main.dart'; +import 'package:flutter_deer/res/constant.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:integration_test/integration_test.dart'; + + +/// flutter drive --driver integration_test/integration_test.dart --target integration_test/goods_test.dart +void main() { + + IntegrationTestWidgetsFlutterBinding.ensureInitialized(); + + group('商品部分:', () { + + Constant.isDriverTest = true; + + tearDown(() { + print('< Success'); + }); + + testWidgets('商品页测试',(WidgetTester tester) async { + runApp(MyApp(home: const GoodsPage())); + await tester.pumpAndSettle(); + + await tester.tap(find.text('待售')); + await tester.pumpAndSettle(); + + final Finder pageView = find.byKey(const Key('pageView')); + await tester.drag(pageView, const Offset(400, 0)); + await tester.pumpAndSettle(); + + await tester.tap(find.text('全部商品')); + await tester.pumpAndSettle(); + await tester.tap(find.text('休闲食品')); + await tester.pumpAndSettle(); + //进入搜索页 + await tester.tap(find.byKey(const Key('search'))); + await tester.pumpAndSettle(); + await tester.tap(find.byKey(const Key('search_back'))); + await tester.pumpAndSettle(); + //添加商品 + await tester.tap(find.byKey(const Key('add'))); + await tester.pumpAndSettle(); + await tester.tap(find.text('添加商品')); + await tester.pumpAndSettle(); + await tester.tap(find.byTooltip('Back')); + await tester.pumpAndSettle(); + // 商品菜单 + await tester.tap(find.byKey(const Key('goods_menu_item_2'))); + await tester.pumpAndSettle(); + await tester.tap(find.byKey(const Key('goods_operation_item_2'))); + await tester.pumpAndSettle(); + await tester.tap(find.byKey(const Key('goods_delete_item_2'))); + await tester.pumpAndSettle(); + await tester.tap(find.text('确认删除')); + await tester.pumpAndSettle(); + await tester.tap(find.byKey(const Key('goods_menu_item_1'))); + await tester.pumpAndSettle(); + await tester.tap(find.byKey(const Key('goods_edit_item_1'))); + await tester.pumpAndSettle(); + }); + + testWidgets('商品编辑页测试',(WidgetTester tester) async { + runApp(MyApp(home: const GoodsEditPage())); + await tester.pumpAndSettle(); + + await tester.drag(find.byKey(const Key('goods_edit_page')), const Offset(0, -500)); + await tester.pumpAndSettle(); + await tester.tap(find.text('商品类型')); + await tester.pumpAndSettle(); + await tester.tap(find.text('生鲜果蔬')); + await tester.pumpAndSettle(); + await tester.tap(find.text('厨房用具')); + await tester.pumpAndSettle(); + await tester.tap(find.text('碗碟')); + await tester.pumpAndSettle(); + }, timeout: const Timeout(Duration(seconds: 30))); + + testWidgets('商品规格页测试',(WidgetTester tester) async { + runApp(MyApp(home: const GoodsSizePage())); + + await tester.pumpAndSettle(); + await tester.tap(find.byKey(const Key('hint'))); + await tester.pumpAndSettle(); + + final richText = find.byKey(const Key('name_edit')).first; + fireOnTap(richText, '编辑'); + await tester.pumpAndSettle(); + await tester.tap(find.text('取消')); + await tester.pumpAndSettle(); + + await tester.tap(find.byKey(const Key('2'))); + await tester.pumpAndSettle(); + await tester.tap(find.byTooltip('Back')); + await tester.pumpAndSettle(); + // 侧滑删除 + await tester.drag(find.byKey(const Key('2')), const Offset(-100, 0)); + await tester.pumpAndSettle(); + await tester.tap(find.byKey(const Key('delete_2'))); + await tester.pumpAndSettle(); + await tester.tap(find.byTooltip('Back')); + await tester.pumpAndSettle(); + await tester.tap(find.byTooltip('Back')); + await tester.pumpAndSettle(); + }, timeout: const Timeout(Duration(seconds: 30))); + }); +} + +/// https://github.com/flutter/flutter/issues/56023 +/// Runs the onTap handler for the [TextSpan] which matches the search-string. +void fireOnTap(Finder finder, String text) { + final Element element = finder.evaluate().single; + final RenderParagraph paragraph = element.renderObject! as RenderParagraph; + // The children are the individual TextSpans which have GestureRecognizers + paragraph.text.visitChildren((dynamic span) { + if (span.text != text) + return true; // continue iterating. + + (span.recognizer as TapGestureRecognizer).onTap!(); + return false; // stop iterating, we found the one. + }); +} \ No newline at end of file diff --git a/lib/goods/page/goods_list_page.dart b/lib/goods/page/goods_list_page.dart index ff9382c91..12a01ae0b 100644 --- a/lib/goods/page/goods_list_page.dart +++ b/lib/goods/page/goods_list_page.dart @@ -2,6 +2,7 @@ import 'package:common_utils/common_utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_deer/goods/models/goods_item_entity.dart'; import 'package:flutter_deer/goods/provider/goods_page_provider.dart'; +import 'package:flutter_deer/res/constant.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; import 'package:flutter_deer/util/toast_utils.dart'; import 'package:flutter_deer/widgets/my_refresh_list.dart'; @@ -13,26 +14,26 @@ import '../widgets/goods_delete_bottom_sheet.dart'; import '../widgets/goods_item.dart'; class GoodsListPage extends StatefulWidget { - + const GoodsListPage({ Key? key, required this.index }): super(key: key); - + final int index; - + @override _GoodsListPageState createState() => _GoodsListPageState(); } class _GoodsListPageState extends State with AutomaticKeepAliveClientMixin, SingleTickerProviderStateMixin { - + int _selectIndex = -1; late Animation _animation; late AnimationController _controller; List _list = []; AnimationStatus _animationStatus = AnimationStatus.dismissed; - + @override void initState() { super.initState(); @@ -58,7 +59,10 @@ class _GoodsListPageState extends State with AutomaticKeepAliveCl final List _imgList = [ 'https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=3130502839,1206722360&fm=26&gp=0.jpg', - 'https://xxx', // 故意使用一张无效链接,触发默认显示图片 + if (Constant.isDriverTest) + 'https://img2.baidu.com/it/u=3994371075,170872697&fm=26&fmt=auto&gp=0.jpg' + else + 'https://xxx', // 可以使用一张无效链接,触发缺省、异常显示图片 'https://img0.baidu.com/it/u=4049693009,2577412121&fm=224&fmt=auto&gp=0.jpg', 'https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=3659255919,3211745976&fm=26&gp=0.jpg', 'https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=2085939314,235211629&fm=26&gp=0.jpg', @@ -86,7 +90,7 @@ class _GoodsListPageState extends State with AutomaticKeepAliveCl _setGoodsCount(_list.length); }); } - + void _setGoodsCount(int count) { // Provider.of(context, listen: false).setGoodsCount(count); /// 与上方等价,provider 4.1.0添加的拓展方法 @@ -96,7 +100,7 @@ class _GoodsListPageState extends State with AutomaticKeepAliveCl int _page = 1; late int _maxPage; StateType _stateType = StateType.loading; - + @override Widget build(BuildContext context) { super.build(context); diff --git a/lib/goods/page/goods_size_page.dart b/lib/goods/page/goods_size_page.dart index 00e60cbd2..392619cc1 100644 --- a/lib/goods/page/goods_size_page.dart +++ b/lib/goods/page/goods_size_page.dart @@ -1,3 +1,4 @@ +import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:flutter_deer/goods/models/goods_size_model.dart'; import 'package:flutter_deer/goods/widgets/goods_size_dialog.dart'; @@ -26,7 +27,7 @@ class GoodsSizePage extends StatefulWidget { } class _GoodsSizePageState extends State { - + bool _isEdit = false; String _sizeName = '商品规格名称'; final GlobalKey _hintKey = GlobalKey(); @@ -72,14 +73,14 @@ class _GoodsSizePageState extends State { decoration: BoxDecoration( image: DecorationImage( image: ImageUtils.getAssetImage('goods/ydss'), - fit: BoxFit.fitWidth - ) + fit: BoxFit.fitWidth, + ), ), ), - ) + ), ); } - + @override Widget build(BuildContext context) { return Scaffold( @@ -102,39 +103,26 @@ class _GoodsSizePageState extends State { _sizeName, style: TextStyles.textBold24, ), - InkWell( - onTap: () { - showDialog( - context: context, - barrierDismissible: false, - builder: (BuildContext context) { - return GoodsSizeDialog( - onPressed: (name) { - setState(() { - _sizeName = name; - _isEdit = true; - }); + Gaps.vGap8, + RichText( + key: const Key('name_edit'), + text: TextSpan( + text: '先对名称进行', + style: Theme.of(context).textTheme.subtitle2?.copyWith(fontSize: Dimens.font_sp14), + children: [ + TextSpan( + text: '编辑', + semanticsLabel: '编辑', + style: TextStyle(color: Theme.of(context).primaryColor), + recognizer: TapGestureRecognizer() + ..onTap = () { + _showGoodsSizeDialog(); }, - ); - } - ); - }, - child: Padding( - // 扩大点击范围 - padding: const EdgeInsets.all(8.0), - child: RichText( - key: const Key('name_edit'), - text: TextSpan( - text: '先对名称进行', - style: Theme.of(context).textTheme.subtitle2?.copyWith(fontSize: Dimens.font_sp14), - children: [ - TextSpan(text: '编辑', style: TextStyle(color: Theme.of(context).primaryColor)), - ], - ) - ), + ), + ], ), ), - Gaps.vGap24, + Gaps.vGap32, Expanded( child: _goodsSizeList.isEmpty ? const StateLayout( type: StateType.goods, @@ -159,7 +147,7 @@ class _GoodsSizePageState extends State { ), ); } - + /// design/4商品/index.html#artboard19 Widget _buildGoodsSizeItem(int index) { @@ -238,11 +226,11 @@ class _GoodsSizePageState extends State { decoration: BoxDecoration( border: Border( bottom: Divider.createBorderSide(context, width: 0.8), - ) + ), ), child: Padding( padding: const EdgeInsets.only(right: 16.0, bottom: 16.0), - child: widget + child: widget, ), ), ), @@ -253,7 +241,7 @@ class _GoodsSizePageState extends State { key: Key(index.toString()), controller: _slidableController, actionPane: const SlidableDrawerActionPane(), - actionExtentRatio: 0.20, + actionExtentRatio: 0.20, ///右侧的action secondaryActions: [ SlideAction( @@ -273,7 +261,7 @@ class _GoodsSizePageState extends State { }, ), ], - child: widget + child: widget, ); } @@ -293,4 +281,21 @@ class _GoodsSizePageState extends State { ), ); } + + void _showGoodsSizeDialog() { + showDialog( + context: context, + barrierDismissible: false, + builder: (BuildContext context) { + return GoodsSizeDialog( + onPressed: (name) { + setState(() { + _sizeName = name; + _isEdit = true; + }); + }, + ); + }, + ); + } } diff --git a/lib/home/splash_page.dart b/lib/home/splash_page.dart index c7e8518b8..5dac48913 100644 --- a/lib/home/splash_page.dart +++ b/lib/home/splash_page.dart @@ -18,7 +18,6 @@ import 'package:flutter_swiper_null_safety/flutter_swiper_null_safety.dart'; import 'package:sp_util/sp_util.dart'; class SplashPage extends StatefulWidget { - const SplashPage({Key? key}) : super(key: key); @override @@ -26,7 +25,6 @@ class SplashPage extends StatefulWidget { } class _SplashPageState extends State { - int _status = 0; final List _guideList = ['app_start_1', 'app_start_2', 'app_start_3']; StreamSubscription? _subscription; @@ -93,7 +91,7 @@ class _SplashPageState extends State { Widget build(BuildContext context) { return Material( color: context.backgroundColor, - child: _status == 0 ? + child: _status == 0 ? const FractionallyAlignedSizedBox( heightFactor: 0.3, widthFactor: 0.33, diff --git a/lib/login/page/sms_login_page.dart b/lib/login/page/sms_login_page.dart index 883d60075..d677e4207 100644 --- a/lib/login/page/sms_login_page.dart +++ b/lib/login/page/sms_login_page.dart @@ -1,5 +1,6 @@ import 'dart:ui'; +import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/deer_localizations.dart'; import 'package:flutter_deer/util/change_notifier_manage.dart'; @@ -16,7 +17,6 @@ import '../login_router.dart'; /// design/1注册登录/index.html#artboard4 class SMSLoginPage extends StatefulWidget { - const SMSLoginPage({Key? key}) : super(key: key); @override @@ -41,7 +41,7 @@ class _SMSLoginPageState extends State with ChangeNotifierMixin with ChangeNotifierMixin[ - TextSpan(text: DeerLocalizations.of(context)!.register, style: TextStyle(color: Theme.of(context).errorColor)), - TextSpan(text: Utils.getCurrLocale() == 'zh' ? '。' : '.'), - ], - ), + child: RichText( + text: TextSpan( + text: DeerLocalizations.of(context)!.registeredTips, + style: Theme.of(context).textTheme.subtitle2?.copyWith(fontSize: Dimens.font_sp14), + children: [ + TextSpan( + text: DeerLocalizations.of(context)!.register, + style: TextStyle( + color: Theme.of(context).errorColor, + ), + recognizer: TapGestureRecognizer() + ..onTap = () { + NavigatorUtils.push(context, LoginRouter.registerPage); + }, + ), + TextSpan(text: Utils.getCurrLocale() == 'zh' ? '。' : '.',), + ], ), - onTap: () => NavigatorUtils.push(context, LoginRouter.registerPage), - ) + ), ), Gaps.vGap24, MyButton( diff --git a/lib/main.dart b/lib/main.dart index 0199c5a61..867e0dcc6 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -30,15 +30,19 @@ Future main() async { /// 确保初始化完成 WidgetsFlutterBinding.ensureInitialized(); + /// 去除URL中的“#”(hash),仅针对Web。默认为setHashUrlStrategy /// 注意本地部署和远程部署时`web/index.html`中的base标签,https://github.com/flutter/flutter/issues/69760 setPathUrlStrategy(); + /// sp初始化 await SpUtil.getInstance(); + /// 1.22 预览功能: 在输入频率与显示刷新率不匹配情况下提供平滑的滚动效果 // GestureBinding.instance?.resamplingEnabled = true; /// 异常处理 handleError(runApp(MyApp())); + /// 隐藏状态栏。为启动页、引导页设置。完成后修改回显示状态栏。 SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.bottom]); // TODO(weilu): 启动体验不佳。状态栏、导航栏在冷启动开始的一瞬间为黑色,且无法通过隐藏、修改颜色等方式进行处理。。。 @@ -46,8 +50,7 @@ Future main() async { } class MyApp extends StatelessWidget { - - MyApp({Key? key, this.home, this.theme}): super(key: key) { + MyApp({Key? key, this.home, this.theme}) : super(key: key) { Log.init(); initDio(); Routes.initRoutes(); @@ -57,17 +60,21 @@ class MyApp extends StatelessWidget { final Widget? home; final ThemeData? theme; static GlobalKey navigatorKey = GlobalKey(); - + void initDio() { final List interceptors = []; + /// 统一添加身份验证请求头 interceptors.add(AuthInterceptor()); + /// 刷新Token interceptors.add(TokenInterceptor()); + /// 打印Log(生产模式去除) if (!Constant.inProduction) { interceptors.add(LoggingInterceptor()); } + /// 适配数据(根据自己的数据结构,可自行选择添加) interceptors.add(AdapterInterceptor()); configDio( @@ -76,7 +83,6 @@ class MyApp extends StatelessWidget { ); } - void initQuickActions() { if (Device.isMobile) { final QuickActions quickActions = QuickActions(); @@ -100,10 +106,9 @@ class MyApp extends StatelessWidget { ]); } } - + @override Widget build(BuildContext context) { - final Widget app = MultiProvider( providers: [ ChangeNotifierProvider(create: (_) => ThemeProvider()), @@ -149,12 +154,14 @@ class MyApp extends StatelessWidget { /// 切换深色模式会触发此方法,这里设置导航栏颜色 ThemeUtils.setSystemNavigationBar(provider.getThemeMode()); } + /// 保证文字大小不受手机系统设置影响 https://www.kikt.top/posts/flutter/layout/dynamic-text/ return MediaQuery( data: MediaQuery.of(context).copyWith(textScaleFactor: 1.0), child: child!, ); }, + /// 因为使用了fluro,这里设置主要针对Web onUnknownRoute: (_) { return MaterialPageRoute( @@ -164,5 +171,4 @@ class MyApp extends StatelessWidget { restorationScopeId: 'app', ); } - } diff --git a/lib/util/device_utils.dart b/lib/util/device_utils.dart index af43915ae..b5ff1863b 100644 --- a/lib/util/device_utils.dart +++ b/lib/util/device_utils.dart @@ -1,6 +1,7 @@ import 'dart:io'; import 'package:device_info_plus/device_info_plus.dart'; import 'package:flutter/foundation.dart'; +import 'package:flutter_deer/res/constant.dart'; /// https://medium.com/gskinner-team/flutter-simplify-platform-screen-size-detection-4cb6fc4f7ed1 class Device { @@ -26,6 +27,9 @@ class Device { /// 使用前记得初始化 static int getAndroidSdkInt() { + if (Constant.isDriverTest) { + return -1; + } if (isAndroid && _androidInfo != null) { return _androidInfo.version.sdkInt ?? -1; } else { diff --git a/test_driver/goods/goods.dart b/test_driver/goods/goods.dart index 31846598c..133abb8c9 100644 --- a/test_driver/goods/goods.dart +++ b/test_driver/goods/goods.dart @@ -1,11 +1,13 @@ import 'package:flutter/material.dart'; import 'package:flutter_deer/home/home_page.dart'; +import 'package:flutter_deer/res/constant.dart'; import 'package:flutter_driver/driver_extension.dart'; import 'package:flutter_deer/main.dart'; /// 运行 flutter drive --target=test_driver/goods/goods.dart void main() { enableFlutterDriverExtension(); + Constant.isDriverTest = true; runApp(MyApp(home: const Home())); } \ No newline at end of file diff --git a/test_driver/goods/goods_test.dart b/test_driver/goods/goods_test.dart index b10dbc2ea..96dc7184d 100644 --- a/test_driver/goods/goods_test.dart +++ b/test_driver/goods/goods_test.dart @@ -80,10 +80,12 @@ void main() { await delayed(); await driver.tap(find.byValueKey('hint')); await delayed(); - await driver.tap(find.byValueKey('name_edit')); - await delayed(); - await driver.tap(find.text('取消')); - await delayed(); + /// 在集成测试中不能点击特定的TextSpan,这里测试部分放在integration_test/goods_test.dart 实现 + /// https://github.com/flutter/flutter/issues/67123 + // await driver.tap(find.byValueKey('name_edit')); + // await delayed(); + // await driver.tap(find.text('取消')); + // await delayed(); await driver.tap(find.byValueKey('2')); await delayed(); await driver.tap(find.byTooltip('Back')); diff --git a/test_driver/setting/setting.dart b/test_driver/setting/setting.dart index c715cd591..f3fe8ca7f 100644 --- a/test_driver/setting/setting.dart +++ b/test_driver/setting/setting.dart @@ -1,4 +1,5 @@ +import 'package:flutter_deer/res/constant.dart'; import 'package:sp_util/sp_util.dart'; import 'package:flutter/material.dart'; import 'package:flutter_deer/setting/page/setting_page.dart'; @@ -8,6 +9,7 @@ import 'package:flutter_deer/main.dart'; /// 运行 flutter drive --target=test_driver/setting/setting.dart Future main() async { enableFlutterDriverExtension(); + Constant.isDriverTest = true; WidgetsFlutterBinding.ensureInitialized(); /// sp初始化 await SpUtil.getInstance(); From 29ee2cc6188b5603d8a407da8a63985c85889bc3 Mon Sep 17 00:00:00 2001 From: weilu Date: Sat, 29 May 2021 14:08:14 +0800 Subject: [PATCH 034/206] =?UTF-8?q?ShortcutItem=E6=B7=BB=E5=8A=A0=E5=9B=BE?= =?UTF-8?q?=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/flutter-web-deploy.yml | 2 +- .../res/drawable-xhdpi/flutter_dash_black.png | Bin 0 -> 1771 bytes .../drawable-xxhdpi/flutter_dash_black.png | Bin 0 -> 2610 bytes .../drawable-xxxhdpi/flutter_dash_black.png | Bin 0 -> 3407 bytes ios/Runner.xcodeproj/project.pbxproj | 4 +-- .../flutter_dash_black.imageset/Contents.json | 26 ++++++++++++++++++ .../flutter_dash_black_1x.png | Bin 0 -> 685 bytes .../flutter_dash_black_2x.png | Bin 0 -> 1405 bytes .../flutter_dash_black_3x.png | Bin 0 -> 2106 bytes lib/main.dart | 1 + macos/Flutter/GeneratedPluginRegistrant.swift | 4 +++ macos/Runner.xcodeproj/project.pbxproj | 4 +++ 12 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 android/app/src/main/res/drawable-xhdpi/flutter_dash_black.png create mode 100644 android/app/src/main/res/drawable-xxhdpi/flutter_dash_black.png create mode 100644 android/app/src/main/res/drawable-xxxhdpi/flutter_dash_black.png create mode 100644 ios/Runner/Assets.xcassets/flutter_dash_black.imageset/Contents.json create mode 100644 ios/Runner/Assets.xcassets/flutter_dash_black.imageset/flutter_dash_black_1x.png create mode 100644 ios/Runner/Assets.xcassets/flutter_dash_black.imageset/flutter_dash_black_2x.png create mode 100644 ios/Runner/Assets.xcassets/flutter_dash_black.imageset/flutter_dash_black_3x.png diff --git a/.github/workflows/flutter-web-deploy.yml b/.github/workflows/flutter-web-deploy.yml index 7f86cd572..8fd1f74ed 100644 --- a/.github/workflows/flutter-web-deploy.yml +++ b/.github/workflows/flutter-web-deploy.yml @@ -5,7 +5,7 @@ name: flutter_deer web deploy on: push: paths: - - 'pubspec.yaml' + - 'pubspec1.yaml' jobs: web_build_and_deploy: diff --git a/android/app/src/main/res/drawable-xhdpi/flutter_dash_black.png b/android/app/src/main/res/drawable-xhdpi/flutter_dash_black.png new file mode 100644 index 0000000000000000000000000000000000000000..6a028ffbea8df580fd4b144f0206e58d680038b1 GIT binary patch literal 1771 zcmdT_{W}v110`AV6|Q8M=GnYVODW0~&s}V`#hpma=Z#SMGO}xPDca3t^D&#=y{I9i z*nCVjnyXrhCSlqT#X>%BW(?)?>d$!3^PF>@=bWF;PltLMht|_J(^gYc)5Btre%l`Q zgIXHfD)UVLQM8`+_D5~||2q(|9PsvrlSDt<88zsi?ISxg*S2(957)jgyGL*wi?CgB zy_%;;Aw9RyI^XCsITU=!8GPo^Y(K*ENq2g&ffpT~#9739G#md9{Wd;%^|DY+O_PO1 zp7bZHe;r6qs1GpKlvls3qkhUTOtJy+%(0uSm6WQ$5U@MKQ8c|+J>haUKIVk*)z)V6 z*4xNEp z;W=B~Syy5lq~%r)58wfuUb2G}In6!7IRM|EIl!-IEeLnC++V+F^GBy_6moA&2u@>H~(DWgdH4#D%%P(g-YXa6^ z=wNfIw5EnemBm`$reEC!0CWc+e?6E-K9L%V3)6BxWH`=hRSrS%Z;m4HhWv{NFL)iB zl)3JEcS6s3=3>{X=~`v(KM}2|u+k!O>9r)`NX9rkZA4xtjlSm5`|7s(a|6a6LW7l< zK@L3QJrmw_TuTywhZKnN)rX=N_t5LS>l06LM-lHR2H6L(g4TG8uS_ohF`Sva)b4X` zoPRtbj+ewlJDT>qLSG~UerEt)WKi6X?6NYun)|m-?I<`dyZ~^rNM*$yuObwzu5e~%F$=09M3@0j> zR>+7X!YLtjG7N<4;V`6n60#*tszbjJqupEEk#1U5n4}v9O=w0ri;jXSXeHX9G)oHC z5JdmH6NuzeGXIvr#&z$z_Q=qPXP)5}LF0Q%=f2z1P25&nbi2!pZU$Zdpwe|1Z{CGm zx}tLHfH1pBL}|Tje(g1-!=&ft^_-~z#cMnNDf71(zWXKbhZ)kO8HRq8jai}l`CSOM zP2kF`V7UB}KN>#!c=n5vI6^!WO%RL>nkO{%KkvcEFC5x1Y@{zgmZB&iF%ReG?Y)wI zPMLCRby*anln&CqLkgZ?`{KmQ9*sukPDe|9ifPT~v@5GSS}k{;Eh`zTcSzI2!SgI1 zu7h|kB7Fwe_(Svztte#aWp|g8y}4h$$c8jk^=oXO*L-E9+dX}q{le$0vvI?nzjWcd zCGGa)PB8T(+N3|=j*)6Q;9%+jqsZ9*;=m$ztH9YYrae|amR%g9xIrw&wDh*3erm-2 z21ENPcH}A^Hwv0Md$6q7YN2O6MB~tF8Z8rPRn8L0hA|7aDRYE$Sd9&-6lmX)lG8m< z2>t%{#a=D}8tAWtv5?GFgMAwojPlE$^Je}7V!IlFSVS&7xlmYs`WtNQJ_`GwtZYtHC!pH;BLS*t_RT2#aj@x9Xw-;gYTERhFf?Z$F#+=^sE^FL*$Hu@ zD$6IX?rB6YW$lxG=z3UIC&5L$@1qvBYW|Hu2edu-W7|*S{-#>FEW08acf%TT&7+%4 zX)uZ5+ueCXu>O+TkfX|4yRB>e$0>}LQv_!tQTkE71b6bn}Ru5Gq_*%Yi>{oADH&Cwit6rFt{t!d`}SvbLi=yiXz(_ ZTUU^{A(eDp-WvPIWnob`WQ}_mOO)r@EpII0#lJbTt z<^sJYhDg{2|KFwMT_Jk$!$V(FI0C@wMjD>Ko_=_a*z^jnne6hn-f_CUpP(%Y(LH|5 z_d*5BQn;LTH)V}r+*hw9*PN??j%Xi^on`Fhs8F=%ziHQ%=wJl^uzb^pK12pwqE1da zZm4lGQH+3DaKpZQl|(opBD~@JylhsnVhv zWkT|Ao>JLEGW;r1^6Z4|3TN+Fag21Yy%@Tuz%ec|CKOUqfsXZRY5jYle(u}8CY2!e zpjU3l|IX{(uR1Vc@`t_@6uo-Z-Eg%2U*~rXA;8J^y3a$WHEJ`B7uP1xFNI6}Y(n06 zh6iujFp25xs~j$ghj1L`Y22SyjuX&~%|Tul5v$7skH;<;ZK1Pr$jn%qdMyXgOhEdV zv>X>f>=dQov&F7w0xSl~jU8(+SS@*-qOsMfa+(;D27K#2Mluyz#FqOuMPhzKatT2A zL?`L_C}Y_AKF!pMu9##emE2GhmXtnxv#U2dfWI-E=iFuW=G%30fvL8$gwmgVUK>+& zFwexpWWlA|5LD#wG(2Owu=@tb@o^FVvdEK%S|hR;2MfBTOdqhgZqk)e?fiw`f!HJ>Yoiru28 zcxJT80Bqv<-DjD@43ffS1p#xx9#o$1E*=Q(c>rXVBdHbe#f&-G+N#|+e*A;_ZLiYS zz)N!iz~^opZt0>~gyE6yS>~}RguOyZAIkSk^Om_)aio#ahM2Y2NpRReRjYzeI5=jM z$1lB&HB1IpaI+gOzgDp(-QEpX&&qFMGAWWA2Mo-)d6?eQN{At1PSo25vyo(xt>V&u zE+?$~OrNvZ2)$(dYEi8tA7T>;nndzWncl}wCkx!cMY#x616A9rQc4!vo~*Oc~`0E2Twv3wfAcRc=!3s$pFIsz}J6Wbn|$>%}kZISs>AiRSbU*qZFGYW_m*yomZ{p14K@K*1V$AhEF4PCFPuaP)>$++3Do|%f+aW6Luvl-jCQ9zk?+!qi8f`peGIWp8 zA?^WnaxpbDmiyIdH&mbO(rde~#UYGnaNOy0SjPLrt{z1=#(`#6aT`k#{Q z_Q^Tkt16W?<*X7v50YQX7|(IoStn5-Z3M#jCsy8sz6E@8nr{UAAK7&B_<`O?hV^ZJ z^ig4f%pi@*3{Hjekqkt50Yi``&Thg)mL&9Zoiu~iM-`5FHLRjDEJnaL%PlC)(?r8~ zIG)>gG*f&|=%r3)$Aess>I8`PKGzyb`G|jUuCo*II2_vL@|oat)KbGAR0Mq@+)f~? zCJg@5A=+33LD>%vW|brdTjV9m$g<7RrmpK8o}r5itt$O$yXaT6A=}FChH6H<0f8D_ zl_T}Uf#sRi0QUM{F$Ccv*I(?(=%Dfh6Xx*M8cNNNf=!t>M|<~`!z^K)CaD%E>i6D* znfaVoTU3cwRgsFcOM17IijcQxsmkA1Tyvks6KI+DHjZTuiq5eA7Uk2|onU~|4=?5! z7i4~%5re>BAyP-^N7k_!{?cvlVp0$feWVP zi~j6u&G$d(-&g>;vkFVgKcx0JZ2Rxj?mRQL@5fdnmX1|D7X!QJ3p1IxZFw~tr(yK8lyuk0QrHT; zHbTVPBi-`x3kkaFx6s#dV7MCWKv9+uGd8x%wEb;}-oL2Pco|sc-bfmJ+8O`_q$!>ikTfawe5p^1G)X}jdCPdzU?#sBBEn1oBpS#ZjF%i zOzEkE-cxan{$_^}1e6Wr?8h{^k&)^xrIP|K4C-N09iCzV983g#eX(e?%rfNTPjG4$ z5u6UZi;01xW3xY%Hn8|6&_ZNECq+dR}WVpVs~pd(Gwu;Q;w6Jg?5!Bs={%|}0f3<}@UfmHAq@$NLq zdAdK zlozN9d13pg?{~=oyk+1Sn@o~}g``q<{M%J#SS_^7|8ip&0H8lL(9yCCBHO{!SP+eQ zsDDB%JD+Xp7HY9%GzcgVudb|?gU~L^j60d^XUTJZ>s;7e&#_p+Jj(YgH-i!;4Th-x*45#;I^10vhj02rKh5i5w+h=dFN;|g2>Dj_q%W>yJW-ye z;C3tb$;e{apY-^L-oN*u58+hY1x42TtB;R$(ON#bv}bm@*4q(=czuoE7V`i@ZzZ*|hN;%L+Ls)4rtN>HKm6KYF9zAAZ0@M#V}W=a+gS zd{!Cjo|iNSQ90CYn@(x8?mrj>#b^EkIuK)6;cbH~nH0y}CL^t?LeUDThccI_lmM^( zE91(bc>Ut5&gQ=N=Nm^f0qa?$8A71mElAO@ z$*aX<73v3?5@?xY1G0y{8J*tKKSI|cxqfqu;1sD$OJy2*ie)gJy)KcW}& ziwpr`71WbkE7B=u8LT&hT4jY~?Nkm^1Uh@tP#Z}JI$(9wcXiES)Kf)gk`7qbCQs$q zMjy4c4KsbWh8dd7PIsI)nkK= zjj<3r@?>Zvw2Cty`>Xz;4Omc26n9aWm-E>T*L_B0bGl(hJj?>9u(8^InCG}baoSGo z*p>rI0GRIj?>W`&^748r10NZ=8PjL8;c@!ITRbLY4C>Cj*biCFk!$JbOvZWwD7K!e zez6c8OC`uhv>QmD(deLLU~o{KhaHZ+G>t|lMJH*I#XXpIU-%cMBDZbOp1@qnbZX?d zP-VjPd}X>bV5diAc&(tziXz6_@Z2uW zW$#8UZJN=UZ^k$3x|{cx6pZcocKZ3%lxbTzg(!HK!Avp<-MJh~EdD5`PyFW3+{g@& zNTOUP@gE;%_*s28wZH}1>0G~9D$*8t_g9NgK@a9LEi(g)=4!8B?9jAmTR#ZV_9U}5uh)mpBGm-Aoz%}MU= zp6Df>hPp_CEJ2(lfx?JVFBL$|Z%)dT=(9f~Kfp5Y#<*&HC>d882rQ`52Oy`m=}my9 zvk$A3sTlQV0Tbi$%cWE86j02T*&TX7!%0yn-14iYOmeN^8GClMtY$v>eSkY(oTGw0 z=U^+rVR8D+?J=&In^ArATDR`zV=4#^o*pjDaoh!(RJr@4YPNVs&STEatd=qka*t#R zMvJIM-3k%f=ZF>Is=EO<#gob;_F3KX_2<{mxL!LgiJDeam4&>E*xzgH2t=bRrl_w& z$(K}$@1F2FvC{bXIUFgJx#t1H=wCb8sp1qwEVpkPCwX*gYA|`7{7cQ0%(x4%iyCI~b|(^h(;*(Q4tg|CFs}ZK;vZqdzNVRPoEG@&=!dxMfIFML|^} z_i^#9V-=WwqWAbtFOBMGf1V_-QU$B=B}5+PY(@Yv;M_6CHa9I zkNE|t5BEx`ys{BaN(Zl$%Q^XX{xbWA7gZqJ5hy3IwO2Aq2DNvK1`a}m2P?|@aip#c z4Wb)c=t_Dk&86wEV$n;rHN@o_2t@DqageE?t!vKriA93l{QhGx!=)cv6Jw~gRBrW8 zIQiu(nnwsTf=RK<8JE-2>PGEIt_N#iMgFfRpFF({1tP)WMn;?Y}|+LHChZ04F3i3o=n*} zVaN-&Hk{tTwsT$&dUpG@@tl zLBsrAQ+25ScSW|7w-U*Ri=noxTKd5x=o@K)De3w7{Q44t+*;(o*xIB!u6{Zu8(#7w z@|VO~Y_uq{2PN`M%g4G;SlC{ZNS-PnQm$D06!4kTjCAr{IGpD|BmaHH5Kh-6_$edk ziWbd{$qfmL1EfU&R&ITcZ42GSBAF566RkkU`;u1Eel}P&ok826FedXL(mjH+*w~~r zf!Ta-!N}P3#OE7Q;^bm28ETx%o~|o&@`~05+{deJG6z=^C|zQ^$Prs<57?9+vPpt@V0O*MGv0Q_A?om-_5r~Ef`P8d`t!-R zuc#rWFz2`W3OBW8nm`y}n7ofO^e^@qxfKX9 z>#4i`z8zWDZgJ9|)#mk$^O&UXzBkJ`1Rpi8 z1}$xq_H7&Il7@$eTU{_B_1d(MLNV5t>Tzm~z9pq%icYZ0+fbfSHRMNWg&Lgj`9W0l z#Y^oW%Lu=O-VCtZRxOO$}B@i$ZX;#AsFTGixT}8RKJd(%p!bx;9%ah|KVnqz>{DMp-#qZtSiGVv zbv=vS@$mw?*lOgEfJgc8Gp&fFq3g0`q+$03hjjtGyWCBzqbu5feE|)DiQDhqN;&vA qq}>*~fNfJn?S?&9#?$;y8i1$vs?{ap65juvMFzSiIt|*6um1z6EhS@;D>LglR3y<+uQ8i+|0e_f2pEl$G>1G`UXZ?ep^FVM8t){Z+Pd- zqlk!ziBmNzDV&;{8~A8LL&K&+w@Tj~`(^Kp#HG5Qt-BEe6>lo+IZ$zDX5VX$m2MS2 z+4iEswJ430+FCB$nHcGyaOB3spL!ZPVkqLX7hH&lICP@)-Hj^`VrVSJF5Q}$IdCQ- z;>b^0N)d5qPh6>5_-JNo$3op#rM5>AF;%tXi-?F_PrfNMTpHTJ2Tgo5cBZCcV(d^v z#3xH8BI3!e*u_wEO;kKaL|j`E5pnHEG!YT8?^#zwJfJPw?nK1BB@q$l zI^qLHB4XRKEfMhz9kJk5%-qdiioZcVs0B% z>)6saRzu4g4#eC$mm;EP$+l9&g|D96EA`Z|rxdYgO~R^QBTB%g$*+i*BYp6YgpJ5apG0GB5IyBO~t(}f7cYz z@~Smc@vP>-)S<#l>f+v;j>IueomlglQ?ct!g`v`}w{%3`KdKswo~oBreHJ4Xzo4Qg zX0CKJRV_5_>zOH?EBvySfryBRhfw2VaQy_LOJiaUjcu80RUD~pIP77j#2+seiw1{P`t`Z@|L+wg}Sh5ybE-{wut Te}Fs~00000NkvXXu0mjfy=5>S literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/flutter_dash_black.imageset/flutter_dash_black_2x.png b/ios/Runner/Assets.xcassets/flutter_dash_black.imageset/flutter_dash_black_2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9b05bc957cf5ff80b756f0518c75fc4b4971752f GIT binary patch literal 1405 zcmdUv{W}u~0LRDLFpaCNtm3(;6$x|6T8vv`>_y&(b=yN_iQFYd%gDT(w~jK5JC9rP zGGoX~XDD{<_MAvF@AAYdVq@rGb&tBo>Cd?D^L)OapTEC+^8@^Rppe550000ble~g< zP5O#4aJMfzdnWBl9^e~7-1YxG`1mH|?uPU1AirS19;Yzs*iJ<2JvjFBO8Wdadv7&; z@;C0?3|@bCBYL(3iMw98)X&Z8@H~UE#M>f-KFX;s``n?we@GPFy&|tE7e0S@6#&>{ zOZGY+!ZFZIOUM#wqW7_3US}b zm@H<4CVSLf?YrgHvA}4Yy`MgEh-|cK6cZ?1v0PWxtJ2!7UB>8RC$M9TvetGaaP){iLwhAn#e7m|GCjL3>Aln2mQk>lkE+8et;gH!WU=+K zaU)LQ=?{h|DwHt%+uLNXxk=2H199*a2RHcLnRd^k{qW!+*u~hrKx$9|&DS4Azjw@v zHIwT*e7rR1g+uYbmaC6zxslJkz3qiEabX^cZSNU1mswV85-;-MS|1a5;PiQ&YcY_ z8DfTUoDXhT`b)Id4LHT2xLONiEK*ge^Q;UcC#B@Ps z?a!v(K7$?>$+s|SwBS)p)|;1b(HvEO1yF`t==95o5a7yXeksWNA4{`Y;L)=aa)K!C zfiaOB%3UP??yn9oQ|6|9LW$q=%)4Agxi?z_Zku@5u*j5ykjkjgoS&TDyNVc~hEtJN zGR_t}zZ1Zy>M{(seWc)2X**2t5lcD)`$H+<_<1(PBJ$xT1&Yskg-;5ZoB_G$%X~YD zVVIBa7||~>3j5yDF4>C5QB@;!rFwF!?!tzuo$J5+Bp=F68%_b)RHOBl;hI}l9i`?G z=q2vA>(`A|3+kLD1<*CZ{QX3O9qkt(pZ>Cog9eBTMcCVwaG7lEEWH_=v(qMIvl`rH z(*HrcL^EZxE?9Bk2K(1n?n104?Se&G;McmuHw&ep{`zz% zPu}1(QAfFr9d{tUcg%S@Rre~gmI`@cgzzJmH}XC-lAeL2Dn-g{?3Y$)L9uF)!TUn6 zHdOW?;!{g7vPT^~@Qflupp!u0xR@2Fk6N~qzNYkqgKJcwwt?NuWt(=5HeuFI^S$od XtnD~mYL4>HuO~_-`gyewA~XL3J_9tZ literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/flutter_dash_black.imageset/flutter_dash_black_3x.png b/ios/Runner/Assets.xcassets/flutter_dash_black.imageset/flutter_dash_black_3x.png new file mode 100644 index 0000000000000000000000000000000000000000..b14af061ad074f4915a96810a297f05acd23b026 GIT binary patch literal 2106 zcmdUx`9Bkk1IIVy8fqoX5gJX-V!7vWBxh_|j*OOsIg?{CG1o|z9CODLJ7~{?k?TR0 zBhQrd7!R4ANX|Vdxsuw~^JjcNuh-}E{`vFM=W`$F<{&MpCOpVR_ffpY zQkHvg^;g{?g821z7oKTYy6?^1LcW6(yz88uS6;tzMG1F4rdA6mJ-h+{h%Pu?v_anm zu1(|YnyuwUXDbGj`ZXEhGaiQRa!z`@mLY+F=^u<#wk@n$e&6U$XP1$MmHPxgKBNHo z0D%U?!bMCV+i6!IpkgDda?)+jUpLpDH@SZ^6m~MSjlE%Z%i4qa_v#)(y1ZPdcR801 zJ&Q@BdDy8tBO+{wiFLMeoEmWQk`dXA{cS;IG?hXw zJhbS&P_o6ps7F%h?W~%rhXl^sgLyzX0TJ}4!BZ$c&Y2?v`E0m1Mx)l79|_vcRcr@j zgYr=EDz}&5xA=Q~F6s1_pxfFI?x@dD?w3=kWe!)8bKbAx3Lx2Dq6coQ_YJua1!Dy* zyIQ!*AUT~^=;B31k%VN7MraUX*2w^Ui@Lue`7$3w}n#_k}lX( z9{%_^C*0Pz!-MyMYU`{4wcctk1u*%uI|qC(C{IvYU{gmA$KrOZ8(=w ze9UN1Bp1km{d@L&XrwDwwgvk`2TpGK`1V{@jnPB4+2x_^T8^+jUW6YZ?Kz!v(6DyPl)j zeA;$m)Csp*_zY;tMcQM|mj80BavYB|#}qF4a*5Il(LF>NT%B5jZMv{p%Zg*q3u1TL zT!zj@XA^U5A|^Nlx?U^_dwmRI1kQsYXEqZwz`QG3CO7!g@FcZ{ZL`van0k2T>BxVb z30pN?J{o2z8Op_#oNW8_X#lFzvK0hK>6p9B8jOjp z492Wh+ zB*p`8-JK@m7)A6aEth8X*);>8UhY$3hxo(EKy0Z|)s)Z?fWZc3_3us52`3dM4~tFO445gYi$Z7^1!Hrw zVUe-xzm8Y$Q=Dl(qVKoX2hKt`vJlgZm9!^c#4X|!Ouq&B?Zgs{3*E)0)>bMq|CAR! z!#kCd(98C^HhysScp^PWz37XAg3RaEJF$|-^J>}C0j?v=IF`fXX-Gk0KH3Tv`!1eU zVz0@w4_I?N_eEK5vA}IlsQ^@Ul@YYODsrvn#+F}FdIY@D;m*_v$3;C$&T-$pIb8$G z;%h<@Cp{-eqrSbh&;xW^$%_;ua_-cVHo)d<@YR&B&3yma3b|7yo9nwbFJO{*WuL|@ z(+7g=^f_V&nM&Htq>O7;6sBqqg;1rQx(`12ExR{%9u?+0)qk%L9SBT`FlL;|dm|Em z`~;6-JUT0esn8*}JIMQXr5jRw^^_m)W#d<1vTJ2=DZ6RH zUUA?ZVt2Vxg1T7T^=;QnZfqP@cJFB}B-lN_d3e?40BgKFp}aI5UCH(LSsG2)HAx!* zbAM6AHQ@uE<&5ei#afot^8}?aH>Z4#88iV>KtqF^#2}!lfB!;23u^}{{Z-)l+*wK literal 0 HcmV?d00001 diff --git a/lib/main.dart b/lib/main.dart index 867e0dcc6..d5ed01aa4 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -102,6 +102,7 @@ class MyApp extends StatelessWidget { const ShortcutItem( type: 'demo', localizedTitle: 'Demo', + icon: 'flutter_dash_black' ), ]); } diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index fd853e17d..4bea897a8 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,12 +5,16 @@ import FlutterMacOS import Foundation +import desktop_window +import device_info_plus_macos import path_provider_macos import shared_preferences_macos import sqflite import url_launcher_macos func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + DesktopWindowPlugin.register(with: registry.registrar(forPlugin: "DesktopWindowPlugin")) + DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin")) diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj index de024dae5..87df14ae1 100644 --- a/macos/Runner.xcodeproj/project.pbxproj +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -299,6 +299,8 @@ inputPaths = ( "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh", "${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework", + "${BUILT_PRODUCTS_DIR}/desktop_window/desktop_window.framework", + "${BUILT_PRODUCTS_DIR}/device_info_plus_macos/device_info_plus_macos.framework", "${BUILT_PRODUCTS_DIR}/path_provider_macos/path_provider_macos.framework", "${BUILT_PRODUCTS_DIR}/shared_preferences_macos/shared_preferences_macos.framework", "${BUILT_PRODUCTS_DIR}/sqflite/sqflite.framework", @@ -307,6 +309,8 @@ name = "[CP] Embed Pods Frameworks"; outputPaths = ( "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FMDB.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/desktop_window.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/device_info_plus_macos.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/path_provider_macos.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/shared_preferences_macos.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sqflite.framework", From 6a6d0e617829d75cf4510dfc9cd2fae713f55a4d Mon Sep 17 00:00:00 2001 From: weilu Date: Mon, 31 May 2021 20:43:03 +0800 Subject: [PATCH 035/206] flutter 2.2.1 --- .github/ISSUE_TEMPLATE/deer-issue-template.md | 2 +- .github/workflows/flutter-drive.yml | 6 +++--- README-EN.md | 4 ++-- README.md | 4 ++-- pubspec.yaml | 6 +++--- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/deer-issue-template.md b/.github/ISSUE_TEMPLATE/deer-issue-template.md index ec384b66f..763eb541e 100644 --- a/.github/ISSUE_TEMPLATE/deer-issue-template.md +++ b/.github/ISSUE_TEMPLATE/deer-issue-template.md @@ -12,7 +12,7 @@ assignees: '' - [x] 电脑系统:如:`Windows 10` - [x] 设备型号:如:`小米MIX 2s` - [x] 设备系统版本:如 `Android 10` -- [x] Flutter 版本:如 `2.2.0` +- [x] Flutter 版本:如 `2.2.1` ### 具体问题描述 ### diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index 85ca05890..4782dd869 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -53,7 +53,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v1 with: - flutter-version: '2.2.0' + flutter-version: '2.2.1' channel: 'stable' # or: 'dev' or 'beta' - name: "Run Flutter Driver tests" run: "flutter drive --target=test_driver/driver.dart" @@ -71,7 +71,7 @@ jobs: - uses: actions/checkout@v2 - uses: subosito/flutter-action@v1 with: - flutter-version: '2.2.0' + flutter-version: '2.2.1' channel: 'stable' # or: 'dev' or 'beta' - name: "Run Flutter Driver tests" # GitHub Action for installing, configuring and running Android Emulators (work only Mac OS) @@ -96,7 +96,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v1 with: - flutter-version: '2.2.0' + flutter-version: '2.2.1' channel: 'stable' - run: "flutter pub get" - name: "Run Flutter Accessibility Tests" diff --git a/README-EN.md b/README-EN.md index 550c79fb6..745a8776e 100644 --- a/README-EN.md +++ b/README-EN.md @@ -59,9 +59,9 @@ Web:https://simplezhli.github.io/flutter_deer/ [![Build Status](https://github.com/simplezhli/flutter_deer/workflows/flutter_deer%20driver/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions?query=workflow%3A%22flutter_deer+driver%22+branch%3Amaster) - 1. Flutter version 2.2.0 + 1. Flutter version 2.2.1 - 2. Dart version 2.13.0 + 2. Dart version 2.13.1 ## Precautions diff --git a/README.md b/README.md index 39433fb0b..87972b66b 100644 --- a/README.md +++ b/README.md @@ -64,9 +64,9 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ [![Build Status](https://github.com/simplezhli/flutter_deer/workflows/flutter_deer%20driver/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions?query=workflow%3A%22flutter_deer+driver%22+branch%3Amaster) - 1. Flutter version 2.2.0 + 1. Flutter version 2.2.1 - 2. Dart version 2.13.0 + 2. Dart version 2.13.1 ## 注意事项 diff --git a/pubspec.yaml b/pubspec.yaml index 175140f15..2504b4d1f 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -25,7 +25,7 @@ dependencies: # 网络库 https://github.com/flutterchina/dio dio: ^4.0.0 # https://github.com/ReactiveX/rxdart - rxdart: ^0.27.0 + rxdart: ^0.27.1 # Dart 常用工具类库 https://github.com/Sky24n/common_utils common_utils: 2.0.2 # Flutter 常用工具类库 https://github.com/Sky24n/flustars @@ -39,7 +39,7 @@ dependencies: # 侧滑删除 https://github.com/letsar/flutter_slidable flutter_slidable: ^0.6.0 # WebView插件 https://github.com/flutter/plugins/tree/master/packages/webview_flutter - webview_flutter: 2.0.7 + webview_flutter: 2.0.8 # 处理键盘事件 https://github.com/diegoveloper/flutter_keyboard_actions keyboard_actions: ^3.4.0 # 列表悬浮头 https://github.com/fluttercommunity/flutter_sticky_headers @@ -57,7 +57,7 @@ dependencies: # 扫码 https://github.com/juliuscanute/qr_code_scanner qr_code_scanner: 0.4.0 # App Shortcuts https://github.com/flutter/plugins/tree/master/packages/quick_actions - quick_actions: 0.6.0+1 + quick_actions: 0.6.0+2 # 振动(支持Web) https://github.com/benjamindean/flutter_vibration vibration: ^1.7.4-nullsafety.0 # 获取当前设备信息 https://github.com/fluttercommunity/plus_plugins/tree/main/packages/device_info_plus From a5f802c3dd5498fae99a131c065f14813a145baa Mon Sep 17 00:00:00 2001 From: weilu Date: Sat, 5 Jun 2021 21:31:32 +0800 Subject: [PATCH 036/206] Enable avoid_escaping_inner_quotes lint --- analysis_options.yaml | 8 ++++---- lib/net/intercept.dart | 4 ++-- pubspec.yaml | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/analysis_options.yaml b/analysis_options.yaml index 6455f4322..35680a88b 100755 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -11,9 +11,9 @@ # which should be kept in sync with this file: # # - analysis_options.yaml (this file) -# - packages/flutter/lib/analysis_options_user.yaml # - https://github.com/flutter/plugins/blob/master/analysis_options.yaml # - https://github.com/flutter/engine/blob/master/analysis_options.yaml +# - https://github.com/flutter/packages/blob/master/analysis_options.yaml # # This file contains the analysis options used by Flutter tools, such as IntelliJ, # Android Studio, and the `flutter analyze` command. @@ -68,7 +68,7 @@ linter: # - avoid_double_and_int_checks # only useful when targeting JS runtime - avoid_empty_else - avoid_equals_and_hash_code_on_mutable_classes - # - avoid_escaping_inner_quotes # not yet tested + - avoid_escaping_inner_quotes - avoid_field_initializers_in_const_classes # - avoid_function_literals_in_foreach_calls # - avoid_implementing_value_types # not yet tested @@ -206,7 +206,7 @@ linter: # - unnecessary_lambdas # has false positives: https://github.com/dart-lang/linter/issues/498 - unnecessary_new - unnecessary_null_aware_assignments - # - unnecessary_null_checks # not yet tested + - unnecessary_null_checks - unnecessary_null_in_if_null_operators # - unnecessary_nullable_for_final_variable_declarations - unnecessary_overrides @@ -224,7 +224,7 @@ linter: - use_is_even_rather_than_modulo - use_key_in_widget_constructors - use_late_for_private_fields_and_variables - # - use_named_constants # not yet tested + - use_named_constants - use_raw_strings - use_rethrow_when_possible # - use_setters_to_change_properties # not yet tested diff --git a/lib/net/intercept.dart b/lib/net/intercept.dart index 1427bc094..68cc0ae95 100644 --- a/lib/net/intercept.dart +++ b/lib/net/intercept.dart @@ -135,10 +135,10 @@ class LoggingInterceptor extends Interceptor{ class AdapterInterceptor extends Interceptor{ static const String _kMsg = 'msg'; - static const String _kSlash = '\''; + static const String _kSlash = "'"; static const String _kMessage = 'message'; - static const String _kDefaultText = '"无返回信息"'; + static const String _kDefaultText = '无返回信息'; static const String _kNotFound = '未找到查询信息'; static const String _kFailureFormat = '{"code":%d,"message":"%s"}'; diff --git a/pubspec.yaml b/pubspec.yaml index 2504b4d1f..75480dc4f 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -33,9 +33,9 @@ dependencies: # Flutter 轮播图 https://github.com/lianyagang/flutter_swiper_null_safety flutter_swiper_null_safety: ^1.0.2 # flutter_swiper很久不维护,可以使用空安全版本:flutter_swiper_null_safety # 启动URL的插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/url_launcher - url_launcher: 6.0.4 + url_launcher: 6.0.6 # 图片选择插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/image_picker - image_picker: 0.7.5+3 + image_picker: 0.8.0+1 # 侧滑删除 https://github.com/letsar/flutter_slidable flutter_slidable: ^0.6.0 # WebView插件 https://github.com/flutter/plugins/tree/master/packages/webview_flutter @@ -55,7 +55,7 @@ dependencies: # 状态管理 https://github.com/rrousselGit/provider provider: ^5.0.0 # 扫码 https://github.com/juliuscanute/qr_code_scanner - qr_code_scanner: 0.4.0 + qr_code_scanner: 0.5.1 # App Shortcuts https://github.com/flutter/plugins/tree/master/packages/quick_actions quick_actions: 0.6.0+2 # 振动(支持Web) https://github.com/benjamindean/flutter_vibration From 7b59f72fbb8db4d1ad301aa32808105813284762 Mon Sep 17 00:00:00 2001 From: weilu Date: Sun, 6 Jun 2021 08:52:12 +0800 Subject: [PATCH 037/206] Enable use_named_constants lint --- lib/account/page/add_withdrawal_account_page.dart | 4 ++-- lib/demo/lottie/bunny.dart | 4 ++-- .../overlay/bottom_navigation/my_bottom_navigation_bar.dart | 2 +- lib/goods/page/goods_page.dart | 2 +- lib/goods/widgets/goods_sort_bottom_sheet.dart | 2 +- lib/order/page/order_page.dart | 4 ++-- lib/util/input_formatter/fix_ios_input_formatter.dart | 2 +- lib/widgets/popup_window.dart | 4 ++-- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/lib/account/page/add_withdrawal_account_page.dart b/lib/account/page/add_withdrawal_account_page.dart index 03fa01ffa..e535da96a 100644 --- a/lib/account/page/add_withdrawal_account_page.dart +++ b/lib/account/page/add_withdrawal_account_page.dart @@ -136,7 +136,7 @@ class _AddWithdrawalAccountPageState extends State { showElasticDialog( context: context, builder: (BuildContext context) { - const OutlinedBorder buttonShape = RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(0))); + const OutlinedBorder buttonShape = RoundedRectangleBorder(borderRadius: BorderRadius.zero); final Widget content = Column( children: [ @@ -192,7 +192,7 @@ class _AddWithdrawalAccountPageState extends State { // 文字颜色 primary: Theme.of(context).primaryColor, // 按钮大小 - minimumSize: const Size(double.infinity, double.infinity), + minimumSize: Size.infinite, // 修改默认圆角 shape: buttonShape, ), diff --git a/lib/demo/lottie/bunny.dart b/lib/demo/lottie/bunny.dart index e9f496e80..1af04f25a 100644 --- a/lib/demo/lottie/bunny.dart +++ b/lib/demo/lottie/bunny.dart @@ -103,12 +103,12 @@ class Bunny { } final double frame = (_neutral_to_tracking[1] - _neutral_to_tracking[0]) * progress; - controller.animateTo(framesToPercentage(frame.toInt() + _neutral_to_tracking[0]), duration: const Duration(milliseconds: 0)); + controller.animateTo(framesToPercentage(frame.toInt() + _neutral_to_tracking[0]), duration: Duration.zero); } void setMinMaxFrame(List frames) { /// 移动至起始帧 - controller.animateTo(framesToPercentage(frames[0]), duration: const Duration(milliseconds: 0)); + controller.animateTo(framesToPercentage(frames[0]), duration: Duration.zero); /// 动画至结束帧 controller.animateTo(framesToPercentage(frames[1])); } diff --git a/lib/demo/overlay/bottom_navigation/my_bottom_navigation_bar.dart b/lib/demo/overlay/bottom_navigation/my_bottom_navigation_bar.dart index d6b86afef..d2b55b983 100644 --- a/lib/demo/overlay/bottom_navigation/my_bottom_navigation_bar.dart +++ b/lib/demo/overlay/bottom_navigation/my_bottom_navigation_bar.dart @@ -96,7 +96,7 @@ class _MyBottomNavigationBarState extends State with Tick shape: BoxShape.circle, color: Colors.white, boxShadow: [ - BoxShadow(color: Colors.grey, offset: Offset(0.0, 0.0), blurRadius: 1.0, spreadRadius: 0.0), + BoxShadow(color: Colors.grey, offset: Offset.zero, blurRadius: 1.0, spreadRadius: 0.0), ], ), ), diff --git a/lib/goods/page/goods_page.dart b/lib/goods/page/goods_page.dart index 2018a694e..fa7500188 100644 --- a/lib/goods/page/goods_page.dart +++ b/lib/goods/page/goods_page.dart @@ -129,7 +129,7 @@ class _GoodsPageState extends State with SingleTickerProviderStateMix controller: _tabController, labelStyle: TextStyles.textBold18, indicatorSize: TabBarIndicatorSize.label, - labelPadding: const EdgeInsets.only(left: 0.0), + labelPadding: EdgeInsets.zero, unselectedLabelColor: context.isDark ? Colours.text_gray : Colours.text, labelColor: Theme.of(context).primaryColor, indicatorPadding: const EdgeInsets.only(right: 98.0 - 36.0), diff --git a/lib/goods/widgets/goods_sort_bottom_sheet.dart b/lib/goods/widgets/goods_sort_bottom_sheet.dart index a6f332a75..21f9fc56e 100644 --- a/lib/goods/widgets/goods_sort_bottom_sheet.dart +++ b/lib/goods/widgets/goods_sort_bottom_sheet.dart @@ -37,7 +37,7 @@ class GoodsSortBottomSheetState extends State with SingleT _tabController = TabController(vsync: this, length: 3); WidgetsBinding.instance!.addPostFrameCallback((_) { widget.provider.initData(); - _tabController?.animateTo(widget.provider.index, duration: const Duration(microseconds: 0)); + _tabController?.animateTo(widget.provider.index, duration: Duration.zero); }); } diff --git a/lib/order/page/order_page.dart b/lib/order/page/order_page.dart index 596d92839..b3237bb35 100644 --- a/lib/order/page/order_page.dart +++ b/lib/order/page/order_page.dart @@ -168,7 +168,7 @@ class _OrderPageState extends State with AutomaticKeepAliveClientMixi height: 80.0, padding: const EdgeInsets.only(top: 8.0), child: TabBar( - labelPadding: const EdgeInsets.symmetric(horizontal: 0), + labelPadding: EdgeInsets.zero, controller: _tabController, labelColor: context.isDark ? Colours.dark_text : Colours.text, unselectedLabelColor: context.isDark ? Colours.dark_text_gray : Colours.text, @@ -204,7 +204,7 @@ class _OrderPageState extends State with AutomaticKeepAliveClientMixi Future _onPageChange(int index) async { provider.setIndex(index); /// 这里没有指示器,所以缩短过渡动画时间,减少不必要的刷新 - _tabController?.animateTo(index, duration: const Duration(milliseconds: 0)); + _tabController?.animateTo(index, duration: Duration.zero); } } diff --git a/lib/util/input_formatter/fix_ios_input_formatter.dart b/lib/util/input_formatter/fix_ios_input_formatter.dart index 18be76566..ff1abec43 100644 --- a/lib/util/input_formatter/fix_ios_input_formatter.dart +++ b/lib/util/input_formatter/fix_ios_input_formatter.dart @@ -21,7 +21,7 @@ class FixIOSTextInputFormatter extends TextInputFormatter { // ios Composing变化也执行format,因为在拼音阶段没有执行LengthLimitingTextInputFormatter,从拼音到汉字需要重新执行 if (newValue != null && newValue.composing != null && newValue.composing.isValid) { // ios拼音阶段不执行长度限制的format - return const TextEditingValue(); + return TextEditingValue.empty; } } return TextEditingValue( diff --git a/lib/widgets/popup_window.dart b/lib/widgets/popup_window.dart index a2bd200a4..b9571a91c 100644 --- a/lib/widgets/popup_window.dart +++ b/lib/widgets/popup_window.dart @@ -7,9 +7,9 @@ import 'package:flutter/material.dart'; /// weilu update: /// 1.去除了IntrinsicWidth限制,添加了默认蒙版。 /// 2.简化position计算。 -const Duration _kWindowDuration = Duration(milliseconds: 0); +const Duration _kWindowDuration = Duration.zero; const double _kWindowCloseIntervalEnd = 2.0 / 3.0; -const double _kWindowScreenPadding = 0.0; +const double _kWindowScreenPadding = 0.001; ///弹窗方法 Future showPopupWindow({ From 0774971a31a569ae9a82889f2d02d7025352f13c Mon Sep 17 00:00:00 2001 From: weilu Date: Thu, 17 Jun 2021 22:42:33 +0800 Subject: [PATCH 038/206] flutter 2.2.2 --- .github/ISSUE_TEMPLATE/deer-issue-template.md | 2 +- .github/workflows/flutter-drive.yml | 6 +++--- README-EN.md | 4 ++-- README.md | 4 ++-- pubspec.yaml | 6 +++--- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/deer-issue-template.md b/.github/ISSUE_TEMPLATE/deer-issue-template.md index 763eb541e..714df7a2e 100644 --- a/.github/ISSUE_TEMPLATE/deer-issue-template.md +++ b/.github/ISSUE_TEMPLATE/deer-issue-template.md @@ -12,7 +12,7 @@ assignees: '' - [x] 电脑系统:如:`Windows 10` - [x] 设备型号:如:`小米MIX 2s` - [x] 设备系统版本:如 `Android 10` -- [x] Flutter 版本:如 `2.2.1` +- [x] Flutter 版本:如 `2.2.2` ### 具体问题描述 ### diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index 4782dd869..8a37ef6e3 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -53,7 +53,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v1 with: - flutter-version: '2.2.1' + flutter-version: '2.2.2' channel: 'stable' # or: 'dev' or 'beta' - name: "Run Flutter Driver tests" run: "flutter drive --target=test_driver/driver.dart" @@ -71,7 +71,7 @@ jobs: - uses: actions/checkout@v2 - uses: subosito/flutter-action@v1 with: - flutter-version: '2.2.1' + flutter-version: '2.2.2' channel: 'stable' # or: 'dev' or 'beta' - name: "Run Flutter Driver tests" # GitHub Action for installing, configuring and running Android Emulators (work only Mac OS) @@ -96,7 +96,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v1 with: - flutter-version: '2.2.1' + flutter-version: '2.2.2' channel: 'stable' - run: "flutter pub get" - name: "Run Flutter Accessibility Tests" diff --git a/README-EN.md b/README-EN.md index 745a8776e..af4570543 100644 --- a/README-EN.md +++ b/README-EN.md @@ -59,9 +59,9 @@ Web:https://simplezhli.github.io/flutter_deer/ [![Build Status](https://github.com/simplezhli/flutter_deer/workflows/flutter_deer%20driver/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions?query=workflow%3A%22flutter_deer+driver%22+branch%3Amaster) - 1. Flutter version 2.2.1 + 1. Flutter version 2.2.2 - 2. Dart version 2.13.1 + 2. Dart version 2.13.3 ## Precautions diff --git a/README.md b/README.md index 87972b66b..40c7c1416 100644 --- a/README.md +++ b/README.md @@ -64,9 +64,9 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ [![Build Status](https://github.com/simplezhli/flutter_deer/workflows/flutter_deer%20driver/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions?query=workflow%3A%22flutter_deer+driver%22+branch%3Amaster) - 1. Flutter version 2.2.1 + 1. Flutter version 2.2.2 - 2. Dart version 2.13.1 + 2. Dart version 2.13.3 ## 注意事项 diff --git a/pubspec.yaml b/pubspec.yaml index 75480dc4f..36cbe9ac0 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -35,7 +35,7 @@ dependencies: # 启动URL的插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/url_launcher url_launcher: 6.0.6 # 图片选择插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/image_picker - image_picker: 0.8.0+1 + image_picker: 0.8.0+3 # 侧滑删除 https://github.com/letsar/flutter_slidable flutter_slidable: ^0.6.0 # WebView插件 https://github.com/flutter/plugins/tree/master/packages/webview_flutter @@ -61,13 +61,13 @@ dependencies: # 振动(支持Web) https://github.com/benjamindean/flutter_vibration vibration: ^1.7.4-nullsafety.0 # 获取当前设备信息 https://github.com/fluttercommunity/plus_plugins/tree/main/packages/device_info_plus - device_info_plus: 1.0.1 + device_info_plus: 2.0.1 # 改变桌面端窗口大小(MacOS/Linux/Windows) https://github.com/mix1009/desktop_window desktop_window: 0.4.0 # 高德2D地图插件(支持Web) https://github.com/simplezhli/flutter_2d_amap flutter_2d_amap: git: - ref: 'fdf1e412' + ref: '3d4d188' url: 'https://github.com/simplezhli/flutter_2d_amap.git' # demo 用到的库 # 刮刮卡 https://github.com/vintage/scratcher From fb30370e110b657232178fe1af6d008662ae13d9 Mon Sep 17 00:00:00 2001 From: weilu Date: Sat, 26 Jun 2021 10:24:57 +0800 Subject: [PATCH 039/206] enable lint prefer_interpolation_to_compose_strings --- analysis_options.yaml | 2 +- lib/net/intercept.dart | 8 ++++---- lib/shop/page/freight_config_page.dart | 2 +- lib/shop/page/select_address_page.dart | 4 +--- lib/shop/page/shop_setting_page.dart | 4 +--- lib/store/page/store_audit_page.dart | 4 +--- lib/util/other_utils.dart | 2 +- lib/widgets/pie_chart/pie_chart.dart | 6 +++--- 8 files changed, 13 insertions(+), 19 deletions(-) diff --git a/analysis_options.yaml b/analysis_options.yaml index 35680a88b..96262eeaf 100755 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -171,7 +171,7 @@ linter: - prefer_initializing_formals - prefer_inlined_adds # - prefer_int_literals # conflicts with https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#use-double-literals-for-double-constants - # - prefer_interpolation_to_compose_strings # doesn't work with raw strings, see https://github.com/dart-lang/linter/issues/2490 + - prefer_interpolation_to_compose_strings - prefer_is_empty - prefer_is_not_empty - prefer_is_not_operator diff --git a/lib/net/intercept.dart b/lib/net/intercept.dart index 68cc0ae95..d1c7b07f3 100644 --- a/lib/net/intercept.dart +++ b/lib/net/intercept.dart @@ -99,12 +99,12 @@ class LoggingInterceptor extends Interceptor{ _startTime = DateTime.now(); Log.d('----------Start----------'); if (options.queryParameters.isEmpty) { - Log.d('RequestUrl: ' + options.baseUrl + options.path); + Log.d('RequestUrl: ${options.baseUrl}${options.path}'); } else { - Log.d('RequestUrl: ' + options.baseUrl + options.path + '?' + Transformer.urlEncodeMap(options.queryParameters)); + Log.d('RequestUrl: ${options.baseUrl}${options.path}?${Transformer.urlEncodeMap(options.queryParameters)}'); } - Log.d('RequestMethod: ' + options.method); - Log.d('RequestHeaders:' + options.headers.toString()); + Log.d('RequestMethod: ${options.method}'); + Log.d('RequestHeaders:${options.headers}'); Log.d('RequestContentType: ${options.contentType}'); Log.d('RequestData: ${options.data.toString()}'); super.onRequest(options, handler); diff --git a/lib/shop/page/freight_config_page.dart b/lib/shop/page/freight_config_page.dart index c8d97be38..a8f439eed 100644 --- a/lib/shop/page/freight_config_page.dart +++ b/lib/shop/page/freight_config_page.dart @@ -284,7 +284,7 @@ class _FreightConfigPageState extends State { if (_list[index].min.isEmpty || _list[index].max.isEmpty) { return ''; } else { - return _list[index].min + '~' + _list[index].max; + return '${_list[index].min}~${_list[index].max}'; } } } diff --git a/lib/shop/page/select_address_page.dart b/lib/shop/page/select_address_page.dart index 7e9d6d1f8..cb8cb4642 100644 --- a/lib/shop/page/select_address_page.dart +++ b/lib/shop/page/select_address_page.dart @@ -137,9 +137,7 @@ class _AddressItem extends StatelessWidget { children: [ Expanded( child: Text( - date.provinceName.nullSafe + ' ' + - date.cityName.nullSafe + ' ' + - date.adName.nullSafe + ' ' + date.title.nullSafe, + '${date.provinceName.nullSafe} ${date.cityName.nullSafe} ${date.adName.nullSafe} ${date.title.nullSafe}', ), ), Visibility( diff --git a/lib/shop/page/shop_setting_page.dart b/lib/shop/page/shop_setting_page.dart index d0a3c78cc..97dae6109 100644 --- a/lib/shop/page/shop_setting_page.dart +++ b/lib/shop/page/shop_setting_page.dart @@ -171,9 +171,7 @@ class _ShopSettingPageState extends State { NavigatorUtils.pushResult(context, ShopRouter.addressSelectPage, (result) { setState(() { final PoiSearch model = result as PoiSearch; - _address = model.provinceName.nullSafe + ' ' + - model.cityName.nullSafe + ' ' + - model.adName.nullSafe + ' ' + model.title.nullSafe; + _address = '${model.provinceName.nullSafe} ${model.cityName.nullSafe} ${model.adName.nullSafe} ${model.title.nullSafe}'; }); }); }, diff --git a/lib/store/page/store_audit_page.dart b/lib/store/page/store_audit_page.dart index 98aaea04e..93a8116ee 100644 --- a/lib/store/page/store_audit_page.dart +++ b/lib/store/page/store_audit_page.dart @@ -133,9 +133,7 @@ class _StoreAuditPageState extends State { NavigatorUtils.pushResult(context, ShopRouter.addressSelectPage, (result) { setState(() { final PoiSearch model = result as PoiSearch; - _address = model.provinceName.nullSafe + ' ' + - model.cityName.nullSafe + ' ' + - model.adName.nullSafe + ' ' + model.title.nullSafe; + _address = '${model.provinceName.nullSafe} ${model.cityName.nullSafe} ${model.adName.nullSafe} ${model.title.nullSafe}'; }); }); } diff --git a/lib/util/other_utils.dart b/lib/util/other_utils.dart index cc65d9a8e..6e2d1a4d8 100644 --- a/lib/util/other_utils.dart +++ b/lib/util/other_utils.dart @@ -23,7 +23,7 @@ class Utils { /// 调起拨号页 static Future launchTelURL(String phone) async { - final String url = 'tel:'+ phone; + final String url = 'tel:$phone'; if (await canLaunch(url)) { await launch(url); } else { diff --git a/lib/widgets/pie_chart/pie_chart.dart b/lib/widgets/pie_chart/pie_chart.dart index 58cc32280..f5b6edee7 100644 --- a/lib/widgets/pie_chart/pie_chart.dart +++ b/lib/widgets/pie_chart/pie_chart.dart @@ -186,7 +186,7 @@ class PieChartPainter extends CustomPainter { final double x = (size.height * 0.74 / 2) * math.cos(prevAngle + (totalAngle * data[i].percentage / 2)); final double y = (size.height * 0.74 / 2) * math.sin(prevAngle + (totalAngle * data[i].percentage / 2)); // 保留一位小数 - final String percentage = (data[i].percentage * 100).toStringAsFixed(1) + '%'; + final String percentage = '${(data[i].percentage * 100).toStringAsFixed(1)}%'; drawPercentage(canvas, percentage, x, y, size); prevAngle = prevAngle + totalAngle * data[i].percentage; } @@ -230,7 +230,7 @@ class PieChartPainter extends CustomPainter { final List nodes = []; final double height = size.height / data.length; for (int i = 0; i < data.length; i++) { - final String percentage = (data[i].percentage * 100).toStringAsFixed(1) + '%'; + final String percentage = '${(data[i].percentage * 100).toStringAsFixed(1)}%'; final CustomPainterSemantics node = CustomPainterSemantics( rect: Rect.fromLTRB( 0, height * i, @@ -238,7 +238,7 @@ class PieChartPainter extends CustomPainter { ), properties: SemanticsProperties( sortKey: OrdinalSortKey(i.toDouble()), - label: name + '$count件' + data[i].name + '占比'+ percentage, + label: '$name${'$count件'}${data[i].name}占比$percentage', readOnly: true, textDirection: TextDirection.ltr, ), From 47629003baa525c94bcfcfccddb59ad5880871f9 Mon Sep 17 00:00:00 2001 From: weilu Date: Sun, 27 Jun 2021 17:53:38 +0800 Subject: [PATCH 040/206] Turn on avoid_dynamic_calls lint --- analysis_options.yaml | 1 + integration_test/goods_test.dart | 10 ++++++---- lib/goods/widgets/goods_delete_bottom_sheet.dart | 2 +- lib/net/intercept.dart | 2 +- pubspec.yaml | 6 +++--- 5 files changed, 12 insertions(+), 9 deletions(-) diff --git a/analysis_options.yaml b/analysis_options.yaml index 96262eeaf..350912a5e 100755 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -66,6 +66,7 @@ linter: # - avoid_catching_errors # we do this commonly # - avoid_classes_with_only_static_members # - avoid_double_and_int_checks # only useful when targeting JS runtime + - avoid_dynamic_calls - avoid_empty_else - avoid_equals_and_hash_code_on_mutable_classes - avoid_escaping_inner_quotes diff --git a/integration_test/goods_test.dart b/integration_test/goods_test.dart index b6850cdc5..d89636e9b 100644 --- a/integration_test/goods_test.dart +++ b/integration_test/goods_test.dart @@ -117,11 +117,13 @@ void fireOnTap(Finder finder, String text) { final Element element = finder.evaluate().single; final RenderParagraph paragraph = element.renderObject! as RenderParagraph; // The children are the individual TextSpans which have GestureRecognizers - paragraph.text.visitChildren((dynamic span) { - if (span.text != text) - return true; // continue iterating. + paragraph.text.visitChildren((InlineSpan span) { + if (span is TextSpan) { + if (span.text != text) + return true; // continue iterating. - (span.recognizer as TapGestureRecognizer).onTap!(); + (span.recognizer! as TapGestureRecognizer).onTap!(); + } return false; // stop iterating, we found the one. }); } \ No newline at end of file diff --git a/lib/goods/widgets/goods_delete_bottom_sheet.dart b/lib/goods/widgets/goods_delete_bottom_sheet.dart index cc5427b09..855895025 100644 --- a/lib/goods/widgets/goods_delete_bottom_sheet.dart +++ b/lib/goods/widgets/goods_delete_bottom_sheet.dart @@ -11,7 +11,7 @@ class GoodsDeleteBottomSheet extends StatelessWidget { required this.onTapDelete, }): super(key: key); - final Function onTapDelete; + final VoidCallback onTapDelete; @override Widget build(BuildContext context) { diff --git a/lib/net/intercept.dart b/lib/net/intercept.dart index d1c7b07f3..14c2df23b 100644 --- a/lib/net/intercept.dart +++ b/lib/net/intercept.dart @@ -39,7 +39,7 @@ class TokenInterceptor extends Interceptor { _tokenDio!.options = DioUtils.instance.dio.options; final Response response = await _tokenDio!.post('lgn/refreshToken', data: params); if (response.statusCode == ExceptionHandle.success) { - return json.decode(response.data.toString())['access_token'] as String; + return (json.decode(response.data.toString()) as Map)['access_token'] as String; } } catch(e) { Log.e('刷新Token失败!'); diff --git a/pubspec.yaml b/pubspec.yaml index 36cbe9ac0..fd7ec0369 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -33,13 +33,13 @@ dependencies: # Flutter 轮播图 https://github.com/lianyagang/flutter_swiper_null_safety flutter_swiper_null_safety: ^1.0.2 # flutter_swiper很久不维护,可以使用空安全版本:flutter_swiper_null_safety # 启动URL的插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/url_launcher - url_launcher: 6.0.6 + url_launcher: 6.0.7 # 图片选择插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/image_picker - image_picker: 0.8.0+3 + image_picker: 0.8.1+1 # 侧滑删除 https://github.com/letsar/flutter_slidable flutter_slidable: ^0.6.0 # WebView插件 https://github.com/flutter/plugins/tree/master/packages/webview_flutter - webview_flutter: 2.0.8 + webview_flutter: 2.0.9 # 处理键盘事件 https://github.com/diegoveloper/flutter_keyboard_actions keyboard_actions: ^3.4.0 # 列表悬浮头 https://github.com/fluttercommunity/flutter_sticky_headers From a2ea57a98013aa3bdc02ab7c3ec14e9bbec51a92 Mon Sep 17 00:00:00 2001 From: weilu Date: Sat, 3 Jul 2021 21:17:01 +0800 Subject: [PATCH 041/206] flutter 2.2.3 --- .github/ISSUE_TEMPLATE/deer-issue-template.md | 4 ++-- .github/workflows/flutter-drive.yml | 6 +++--- README-EN.md | 4 ++-- README.md | 4 ++-- pubspec.yaml | 4 ++-- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/deer-issue-template.md b/.github/ISSUE_TEMPLATE/deer-issue-template.md index 714df7a2e..97371101d 100644 --- a/.github/ISSUE_TEMPLATE/deer-issue-template.md +++ b/.github/ISSUE_TEMPLATE/deer-issue-template.md @@ -11,8 +11,8 @@ assignees: '' - [x] 电脑系统:如:`Windows 10` - [x] 设备型号:如:`小米MIX 2s` -- [x] 设备系统版本:如 `Android 10` -- [x] Flutter 版本:如 `2.2.2` +- [x] 设备系统版本:如 `Android 11` +- [x] Flutter 版本:如 `2.2.3` ### 具体问题描述 ### diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index 8a37ef6e3..6a4b0debc 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -53,7 +53,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v1 with: - flutter-version: '2.2.2' + flutter-version: '2.2.3' channel: 'stable' # or: 'dev' or 'beta' - name: "Run Flutter Driver tests" run: "flutter drive --target=test_driver/driver.dart" @@ -71,7 +71,7 @@ jobs: - uses: actions/checkout@v2 - uses: subosito/flutter-action@v1 with: - flutter-version: '2.2.2' + flutter-version: '2.2.3' channel: 'stable' # or: 'dev' or 'beta' - name: "Run Flutter Driver tests" # GitHub Action for installing, configuring and running Android Emulators (work only Mac OS) @@ -96,7 +96,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v1 with: - flutter-version: '2.2.2' + flutter-version: '2.2.3' channel: 'stable' - run: "flutter pub get" - name: "Run Flutter Accessibility Tests" diff --git a/README-EN.md b/README-EN.md index af4570543..1b1fc0cfb 100644 --- a/README-EN.md +++ b/README-EN.md @@ -59,9 +59,9 @@ Web:https://simplezhli.github.io/flutter_deer/ [![Build Status](https://github.com/simplezhli/flutter_deer/workflows/flutter_deer%20driver/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions?query=workflow%3A%22flutter_deer+driver%22+branch%3Amaster) - 1. Flutter version 2.2.2 + 1. Flutter version 2.2.3 - 2. Dart version 2.13.3 + 2. Dart version 2.13.4 ## Precautions diff --git a/README.md b/README.md index 40c7c1416..0a0cd8537 100644 --- a/README.md +++ b/README.md @@ -64,9 +64,9 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ [![Build Status](https://github.com/simplezhli/flutter_deer/workflows/flutter_deer%20driver/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions?query=workflow%3A%22flutter_deer+driver%22+branch%3Amaster) - 1. Flutter version 2.2.2 + 1. Flutter version 2.2.3 - 2. Dart version 2.13.3 + 2. Dart version 2.13.4 ## 注意事项 diff --git a/pubspec.yaml b/pubspec.yaml index fd7ec0369..933319296 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -33,9 +33,9 @@ dependencies: # Flutter 轮播图 https://github.com/lianyagang/flutter_swiper_null_safety flutter_swiper_null_safety: ^1.0.2 # flutter_swiper很久不维护,可以使用空安全版本:flutter_swiper_null_safety # 启动URL的插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/url_launcher - url_launcher: 6.0.7 + url_launcher: 6.0.8 # 图片选择插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/image_picker - image_picker: 0.8.1+1 + image_picker: 0.8.1+3 # 侧滑删除 https://github.com/letsar/flutter_slidable flutter_slidable: ^0.6.0 # WebView插件 https://github.com/flutter/plugins/tree/master/packages/webview_flutter From 06af57ef5ce66558462dfb9cab440659b946a185 Mon Sep 17 00:00:00 2001 From: weilu Date: Sat, 10 Jul 2021 16:24:28 +0800 Subject: [PATCH 042/206] =?UTF-8?q?=E5=8D=87=E7=BA=A7quick=5Factions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/home/splash_page.dart | 2 +- lib/main.dart | 2 +- pubspec.yaml | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/home/splash_page.dart b/lib/home/splash_page.dart index 5dac48913..12c22fe04 100644 --- a/lib/home/splash_page.dart +++ b/lib/home/splash_page.dart @@ -50,7 +50,7 @@ class _SplashPageState extends State { DesktopWindow.setWindowSize(const Size(400, 800)); } if (Device.isAndroid) { - final QuickActions quickActions = QuickActions(); + const QuickActions quickActions = QuickActions(); quickActions.initialize((String shortcutType) async { if (shortcutType == 'demo') { AppNavigator.pushReplacement(context, const DemoPage()); diff --git a/lib/main.dart b/lib/main.dart index d5ed01aa4..e84c35b78 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -85,7 +85,7 @@ class MyApp extends StatelessWidget { void initQuickActions() { if (Device.isMobile) { - final QuickActions quickActions = QuickActions(); + const QuickActions quickActions = QuickActions(); if (Device.isIOS) { // Android每次是重新启动activity,所以放在了splash_page处理。 // 总体来说使用不方便,这种动态的方式在安卓中局限性高。这里仅做练习使用。 diff --git a/pubspec.yaml b/pubspec.yaml index 933319296..4e25e2a11 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -33,7 +33,7 @@ dependencies: # Flutter 轮播图 https://github.com/lianyagang/flutter_swiper_null_safety flutter_swiper_null_safety: ^1.0.2 # flutter_swiper很久不维护,可以使用空安全版本:flutter_swiper_null_safety # 启动URL的插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/url_launcher - url_launcher: 6.0.8 + url_launcher: 6.0.9 # 图片选择插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/image_picker image_picker: 0.8.1+3 # 侧滑删除 https://github.com/letsar/flutter_slidable @@ -57,11 +57,11 @@ dependencies: # 扫码 https://github.com/juliuscanute/qr_code_scanner qr_code_scanner: 0.5.1 # App Shortcuts https://github.com/flutter/plugins/tree/master/packages/quick_actions - quick_actions: 0.6.0+2 + quick_actions: 0.6.0+3 # 振动(支持Web) https://github.com/benjamindean/flutter_vibration vibration: ^1.7.4-nullsafety.0 # 获取当前设备信息 https://github.com/fluttercommunity/plus_plugins/tree/main/packages/device_info_plus - device_info_plus: 2.0.1 + device_info_plus: 2.1.0 # 改变桌面端窗口大小(MacOS/Linux/Windows) https://github.com/mix1009/desktop_window desktop_window: 0.4.0 # 高德2D地图插件(支持Web) https://github.com/simplezhli/flutter_2d_amap @@ -73,7 +73,7 @@ dependencies: # 刮刮卡 https://github.com/vintage/scratcher scratcher: ^2.1.0 # 动画效果 https://github.com/xvrh/lottie-flutter - lottie: ^1.0.1 + lottie: ^1.1.0 # flutter 2.0 中flutter_driver与common_utils、lottie等个别库依赖冲突,用依赖版本覆盖处理。 # 使用flutter 2.2无需添加 From 5785c0454a0514e784d0e7f87a20aec9a011f898 Mon Sep 17 00:00:00 2001 From: weilu Date: Fri, 16 Jul 2021 21:41:16 +0800 Subject: [PATCH 043/206] image_picker 0.8.2 --- lib/widgets/selected_image.dart | 4 ++-- pubspec.yaml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/widgets/selected_image.dart b/lib/widgets/selected_image.dart index 0c287c524..04bc4b87d 100644 --- a/lib/widgets/selected_image.dart +++ b/lib/widgets/selected_image.dart @@ -31,11 +31,11 @@ class SelectedImageState extends State { final ImagePicker _picker = ImagePicker(); ImageProvider? _imageProvider; - PickedFile? pickedFile; + XFile? pickedFile; Future _getImage() async { try { - pickedFile = await _picker.getImage(source: ImageSource.gallery, maxWidth: 800); + pickedFile = await _picker.pickImage(source: ImageSource.gallery, maxWidth: 800); if (pickedFile != null) { if (Device.isWeb) { diff --git a/pubspec.yaml b/pubspec.yaml index 4e25e2a11..cdfc0aa36 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -35,7 +35,7 @@ dependencies: # 启动URL的插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/url_launcher url_launcher: 6.0.9 # 图片选择插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/image_picker - image_picker: 0.8.1+3 + image_picker: 0.8.2 # 侧滑删除 https://github.com/letsar/flutter_slidable flutter_slidable: ^0.6.0 # WebView插件 https://github.com/flutter/plugins/tree/master/packages/webview_flutter @@ -49,7 +49,7 @@ dependencies: # 路由框架 https://github.com/theyakka/fluro fluro: ^2.0.3 # 图片缓存 https://github.com/renefloor/flutter_cached_network_image - cached_network_image: ^3.0.0 + cached_network_image: ^3.1.0 # 格式化String https://github.com/Naddiseo/dart-sprintf sprintf: ^6.0.0 # 状态管理 https://github.com/rrousselGit/provider From c0678567b04e71e6045b12514f7bfe19e0deefe0 Mon Sep 17 00:00:00 2001 From: weilu Date: Sat, 17 Jul 2021 14:47:53 +0800 Subject: [PATCH 044/206] =?UTF-8?q?=E4=BE=9D=E8=B5=96=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/flutter-web-deploy.yml | 4 ++-- pubspec.yaml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/flutter-web-deploy.yml b/.github/workflows/flutter-web-deploy.yml index 8fd1f74ed..786847534 100644 --- a/.github/workflows/flutter-web-deploy.yml +++ b/.github/workflows/flutter-web-deploy.yml @@ -5,7 +5,7 @@ name: flutter_deer web deploy on: push: paths: - - 'pubspec1.yaml' + - 'pubspec.yaml' jobs: web_build_and_deploy: @@ -14,7 +14,7 @@ jobs: - uses: actions/checkout@v2.3.1 - uses: subosito/flutter-action@v1 with: - flutter-version: '2.3.0-12.1.pre' + flutter-version: '2.4.0-4.0.pre' channel: 'dev' - name: "Web Build 🔧" run: | diff --git a/pubspec.yaml b/pubspec.yaml index cdfc0aa36..2b8f90036 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -55,7 +55,7 @@ dependencies: # 状态管理 https://github.com/rrousselGit/provider provider: ^5.0.0 # 扫码 https://github.com/juliuscanute/qr_code_scanner - qr_code_scanner: 0.5.1 + qr_code_scanner: 0.5.2 # App Shortcuts https://github.com/flutter/plugins/tree/master/packages/quick_actions quick_actions: 0.6.0+3 # 振动(支持Web) https://github.com/benjamindean/flutter_vibration From 8707a25492f3312fb03293687893acbd7a625d53 Mon Sep 17 00:00:00 2001 From: weilu Date: Mon, 26 Jul 2021 21:34:00 +0800 Subject: [PATCH 045/206] keyboard_actions 3.4.1 --- .github/workflows/flutter-web-deploy.yml | 2 +- lib/widgets/my_scroll_view.dart | 2 +- pubspec.yaml | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/flutter-web-deploy.yml b/.github/workflows/flutter-web-deploy.yml index 786847534..d93d8fa3b 100644 --- a/.github/workflows/flutter-web-deploy.yml +++ b/.github/workflows/flutter-web-deploy.yml @@ -5,7 +5,7 @@ name: flutter_deer web deploy on: push: paths: - - 'pubspec.yaml' + - 'pubspec1.yaml' jobs: web_build_and_deploy: diff --git a/lib/widgets/my_scroll_view.dart b/lib/widgets/my_scroll_view.dart index 9d4aa2fe7..45e2acf93 100644 --- a/lib/widgets/my_scroll_view.dart +++ b/lib/widgets/my_scroll_view.dart @@ -56,7 +56,7 @@ class MyScrollView extends StatelessWidget { isDialog: bottomButton != null, overscroll: overScroll, config: keyboardConfig!, - tapOutsideToDismiss: tapOutsideToDismiss, + tapOutsideBehavior: tapOutsideToDismiss ? TapOutsideBehavior.opaqueDismiss : TapOutsideBehavior.none, child: contents ); diff --git a/pubspec.yaml b/pubspec.yaml index 2b8f90036..8c2bf916b 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -39,9 +39,9 @@ dependencies: # 侧滑删除 https://github.com/letsar/flutter_slidable flutter_slidable: ^0.6.0 # WebView插件 https://github.com/flutter/plugins/tree/master/packages/webview_flutter - webview_flutter: 2.0.9 + webview_flutter: 2.0.10 # 处理键盘事件 https://github.com/diegoveloper/flutter_keyboard_actions - keyboard_actions: ^3.4.0 + keyboard_actions: ^3.4.1 # 列表悬浮头 https://github.com/fluttercommunity/flutter_sticky_headers sticky_headers: ^0.2.0 # 城市选择列表 https://github.com/flutterchina/azlistview From 28a8573cdb8f89c7f24e2ebfb6df39dc9d503dd2 Mon Sep 17 00:00:00 2001 From: weilu Date: Tue, 27 Jul 2021 20:54:40 +0800 Subject: [PATCH 046/206] enable avoid_function_literals_in_foreach_calls --- analysis_options.yaml | 2 +- lib/account/page/bank_select_page.dart | 8 ++-- lib/account/page/city_select_page.dart | 8 ++-- lib/demo/overlay/page/overlay_demo_page.dart | 5 ++- lib/home/splash_page.dart | 5 ++- lib/mvp/power_presenter.dart | 38 +++++++++++++++---- lib/net/dio_utils.dart | 7 ++-- lib/routers/routers.dart | 5 ++- lib/shop/presenter/shop_presenter.dart | 5 +-- .../page/order_statistics_page.dart | 26 ++++++++----- lib/util/change_notifier_manage.dart | 15 +++++--- 11 files changed, 83 insertions(+), 41 deletions(-) diff --git a/analysis_options.yaml b/analysis_options.yaml index 350912a5e..3e8971c2d 100755 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -71,7 +71,7 @@ linter: - avoid_equals_and_hash_code_on_mutable_classes - avoid_escaping_inner_quotes - avoid_field_initializers_in_const_classes -# - avoid_function_literals_in_foreach_calls + - avoid_function_literals_in_foreach_calls # - avoid_implementing_value_types # not yet tested - avoid_init_to_null # - avoid_js_rounded_ints # only useful when targeting JS runtime diff --git a/lib/account/page/bank_select_page.dart b/lib/account/page/bank_select_page.dart index 380e1b7bb..ae7fab575 100644 --- a/lib/account/page/bank_select_page.dart +++ b/lib/account/page/bank_select_page.dart @@ -48,9 +48,7 @@ class _BankSelectPageState extends State { // 获取城市列表 rootBundle.loadString(widget.type == 0 ? 'assets/data/bank.json' : 'assets/data/bank_2.json').then((String value) { final List list = json.decode(value) as List; - list.forEach((dynamic value) { - _bankList.add(BankEntity().fromJson(value as Map)); - }); + list.forEach(_addBank); SuspensionUtil.sortListBySuspensionTag(_bankList); SuspensionUtil.setShowSuspensionStatus(_bankList); _indexBarData = _bankList.map((BankEntity e) { @@ -70,6 +68,10 @@ class _BankSelectPageState extends State { }); }); } + + void _addBank(dynamic value) { + _bankList.add(BankEntity().fromJson(value as Map)); + } @override Widget build(BuildContext context) { diff --git a/lib/account/page/city_select_page.dart b/lib/account/page/city_select_page.dart index 295ce3212..971532ae3 100644 --- a/lib/account/page/city_select_page.dart +++ b/lib/account/page/city_select_page.dart @@ -40,9 +40,7 @@ class _CitySelectPageState extends State { jsonStr = await rootBundle.loadString('assets/data/city.json'); } final List list = json.decode(jsonStr) as List; - list.forEach((dynamic value) { - _cityList.add(CityEntity().fromJson(value as Map)); - }); + list.forEach(_addCity); SuspensionUtil.setShowSuspensionStatus(_cityList); _indexBarData = _cityList.map((CityEntity e) { if (e.isShowSuspension) { @@ -56,6 +54,10 @@ class _CitySelectPageState extends State { }); } + void _addCity(dynamic value) { + _cityList.add(CityEntity().fromJson(value as Map)); + } + /// rootBundle.loadString源码修改 Future _loadString(String key) async { final ByteData data = await rootBundle.load(key); diff --git a/lib/demo/overlay/page/overlay_demo_page.dart b/lib/demo/overlay/page/overlay_demo_page.dart index 0c7e2047f..378046072 100644 --- a/lib/demo/overlay/page/overlay_demo_page.dart +++ b/lib/demo/overlay/page/overlay_demo_page.dart @@ -83,9 +83,10 @@ class _OverlayDemoPageState extends State { isShowIndicator: Application.navigatorObserver.list.isEmpty, selectedCallback: (position) { /// 返回主页 - Application.navigatorObserver.list.forEach((route) { + void removeRoute(Route route) { Navigator.removeRoute(context, route); - }); + } + Application.navigatorObserver.list.forEach(removeRoute); /// 手动清空 Application.navigatorObserver.list = []; }, diff --git a/lib/home/splash_page.dart b/lib/home/splash_page.dart index 12c22fe04..4912d5323 100644 --- a/lib/home/splash_page.dart +++ b/lib/home/splash_page.dart @@ -39,9 +39,10 @@ class _SplashPageState extends State { await Device.initDeviceInfo(); if (SpUtil.getBool(Constant.keyGuide, defValue: true)!) { /// 预先缓存图片,避免直接使用时因为首次加载造成闪动 - _guideList.forEach((image) { + void _precacheImage(String image) { precacheImage(ImageUtils.getAssetImage(image, format: ImageFormat.webp), context); - }); + } + _guideList.forEach(_precacheImage); } _initSplash(); }); diff --git a/lib/mvp/power_presenter.dart b/lib/mvp/power_presenter.dart index 82774684d..87161e916 100644 --- a/lib/mvp/power_presenter.dart +++ b/lib/mvp/power_presenter.dart @@ -14,32 +14,56 @@ class PowerPresenter extends BasePresenter { void requestPresenter(List presenters) { _presenters = presenters; - _presenters.forEach((presenter) => presenter.view = _state); + _presenters.forEach(_requestPresenter); + } + + void _requestPresenter(BasePagePresenter presenter) { + presenter.view = _state; } @override void deactivate() { - _presenters.forEach((presenter) => presenter.deactivate()); + _presenters.forEach(_deactivate); + } + + void _deactivate(BasePagePresenter presenter) { + presenter.deactivate(); } @override void didChangeDependencies() { - _presenters.forEach((presenter) => presenter.didChangeDependencies()); + _presenters.forEach(_didChangeDependencies); + } + + void _didChangeDependencies(BasePagePresenter presenter) { + presenter.didChangeDependencies(); } @override void didUpdateWidgets(W oldWidget) { - _presenters.forEach((presenter) => presenter.didUpdateWidgets(oldWidget)); + + void _didUpdateWidgets(BasePagePresenter presenter) { + presenter.didUpdateWidgets(oldWidget); + } + _presenters.forEach(_didUpdateWidgets); } @override void dispose() { - _presenters.forEach((presenter) => presenter.dispose()); + _presenters.forEach(_dispose); + } + + void _dispose(BasePagePresenter presenter) { + presenter.dispose(); } @override void initState() { - _presenters.forEach((presenter) => presenter.initState()); + _presenters.forEach(_initState); } - + + void _initState(BasePagePresenter presenter) { + presenter.initState(); + } + } \ No newline at end of file diff --git a/lib/net/dio_utils.dart b/lib/net/dio_utils.dart index 557bb40a7..e39511e17 100644 --- a/lib/net/dio_utils.dart +++ b/lib/net/dio_utils.dart @@ -63,11 +63,12 @@ class DioUtils { // client.badCertificateCallback = // (X509Certificate cert, String host, int port) => true; // }; - + /// 添加拦截器 - _interceptors.forEach((interceptor) { + void addInterceptor(Interceptor interceptor) { _dio.interceptors.add(interceptor); - }); + } + _interceptors.forEach(addInterceptor); } static final DioUtils _singleton = DioUtils._(); diff --git a/lib/routers/routers.dart b/lib/routers/routers.dart index 4964ff0ff..a801a126c 100644 --- a/lib/routers/routers.dart +++ b/lib/routers/routers.dart @@ -52,8 +52,9 @@ class Routes { _listRouter.add(StatisticsRouter()); /// 初始化路由 - _listRouter.forEach((routerProvider) { + void initRouter(IRouterProvider routerProvider) { routerProvider.initRouter(router); - }); + } + _listRouter.forEach(initRouter); } } diff --git a/lib/shop/presenter/shop_presenter.dart b/lib/shop/presenter/shop_presenter.dart index 6c0c85264..693d261a2 100644 --- a/lib/shop/presenter/shop_presenter.dart +++ b/lib/shop/presenter/shop_presenter.dart @@ -4,7 +4,6 @@ import 'package:flutter_deer/mvp/base_page_presenter.dart'; import 'package:flutter_deer/net/net.dart'; import 'package:flutter_deer/shop/models/user_entity.dart'; import 'package:flutter_deer/shop/iview/shop_iview.dart'; -import 'package:flutter_deer/util/log_utils.dart'; class ShopPagePresenter extends BasePagePresenter { @@ -32,9 +31,7 @@ class ShopPagePresenter extends BasePagePresenter { asyncRequestNetwork>(Method.get, url: HttpApi.subscriptions, onSuccess: (data) { - data?.forEach((element) { - Log.d(element.name); - }); + }, ); } diff --git a/lib/statistics/page/order_statistics_page.dart b/lib/statistics/page/order_statistics_page.dart index c94d6c578..5c807c2d7 100644 --- a/lib/statistics/page/order_statistics_page.dart +++ b/lib/statistics/page/order_statistics_page.dart @@ -275,11 +275,12 @@ class _OrderStatisticsPageState extends State with TickerPr List _buildWeeks() { final List widgets = []; - _weeks.forEach((str) { + void addWidget(String str) { widgets.add(Center( child: Text(str, style: Theme.of(context).textTheme.subtitle2), )); - }); + } + _weeks.forEach(addWidget); return widgets; } @@ -292,7 +293,8 @@ class _OrderStatisticsPageState extends State with TickerPr list = date.DateUtils.daysInWeek(_selectedDay); } dayWidgets.addAll(_buildWeeks()); - list.forEach((day) { + + void addButton(DateTime day) { dayWidgets.add( Center( child: SelectedDateButton( @@ -311,13 +313,15 @@ class _OrderStatisticsPageState extends State with TickerPr ), ), ); - }); + } + + list.forEach(addButton); return dayWidgets; } List _builderYearCalendar() { final List monthWidgets = []; - _monthList.forEach((month) { + void addButton(int month) { monthWidgets.add( Center( child: SelectedDateButton( @@ -333,13 +337,15 @@ class _OrderStatisticsPageState extends State with TickerPr ), ), ); - }); + } + _monthList.forEach(addButton); return monthWidgets; } List _builderWeekCalendar() { final List dayWidgets = []; - _weeksDays.forEach((day) { + + void addButton(DateTime day) { dayWidgets.add( Center( child: SelectedDateButton( @@ -354,8 +360,10 @@ class _OrderStatisticsPageState extends State with TickerPr }, ), ), - ); - }); + ); + } + _weeksDays.forEach(addButton); return dayWidgets; } + } diff --git a/lib/util/change_notifier_manage.dart b/lib/util/change_notifier_manage.dart index 5083b4c0a..6fd9054e1 100644 --- a/lib/util/change_notifier_manage.dart +++ b/lib/util/change_notifier_manage.dart @@ -44,7 +44,7 @@ mixin ChangeNotifierMixin on State { Map?>? _map; - Map?>? changeNotifier(); + Map?>? changeNotifier(); @override void initState() { @@ -52,9 +52,12 @@ mixin ChangeNotifierMixin on State { /// 遍历数据,如果callbacks不为空则添加监听 _map?.forEach((changeNotifier, callbacks) { if (callbacks != null && callbacks.isNotEmpty) { - callbacks.forEach((callback) { + + void _addListener(VoidCallback callback) { changeNotifier?.addListener(callback); - }); + } + + callbacks.forEach(_addListener); } }); super.initState(); @@ -64,9 +67,11 @@ mixin ChangeNotifierMixin on State { void dispose() { _map?.forEach((changeNotifier, callbacks) { if (callbacks != null && callbacks.isNotEmpty) { - callbacks.forEach((callback) { + void _removeListener(VoidCallback callback) { changeNotifier?.removeListener(callback); - }); + } + + callbacks.forEach(_removeListener); } changeNotifier?.dispose(); }); From f1b8a3067182f720fa1fa253f4dab1f8d2639efa Mon Sep 17 00:00:00 2001 From: weilu Date: Sat, 7 Aug 2021 17:37:03 +0800 Subject: [PATCH 047/206] =?UTF-8?q?=E4=BE=9D=E8=B5=96=E5=8D=87=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pubspec.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pubspec.yaml b/pubspec.yaml index 8c2bf916b..53f5bd46a 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -21,7 +21,7 @@ dependencies: # Localization https://github.com/dart-lang/intl intl: ^0.17.0 # Toast插件 https://github.com/OpenFlutter/flutter_oktoast - oktoast: ^3.0.0 + oktoast: ^3.1.1 # 网络库 https://github.com/flutterchina/dio dio: ^4.0.0 # https://github.com/ReactiveX/rxdart @@ -35,13 +35,13 @@ dependencies: # 启动URL的插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/url_launcher url_launcher: 6.0.9 # 图片选择插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/image_picker - image_picker: 0.8.2 + image_picker: 0.8.3+1 # 侧滑删除 https://github.com/letsar/flutter_slidable flutter_slidable: ^0.6.0 # WebView插件 https://github.com/flutter/plugins/tree/master/packages/webview_flutter webview_flutter: 2.0.10 # 处理键盘事件 https://github.com/diegoveloper/flutter_keyboard_actions - keyboard_actions: ^3.4.1 + keyboard_actions: ^3.4.3 # 列表悬浮头 https://github.com/fluttercommunity/flutter_sticky_headers sticky_headers: ^0.2.0 # 城市选择列表 https://github.com/flutterchina/azlistview From 0d9b5c74c963c24d64143a7c640a3b638f6a8466 Mon Sep 17 00:00:00 2001 From: weilu Date: Sat, 21 Aug 2021 08:02:47 +0800 Subject: [PATCH 048/206] provider 6.0.0 --- README-EN.md | 2 +- README.md | 2 +- pubspec.yaml | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/README-EN.md b/README-EN.md index 1b1fc0cfb..61fe120ab 100644 --- a/README-EN.md +++ b/README-EN.md @@ -24,7 +24,7 @@ The effect of some pages is as follows: ## Content * mvp mode -* Use `provider`(version 5.x) for state management +* Use `provider`(version 6.x) for state management * Network request encapsulation based on `dio` (version 4.x) * Driver testing, accessibility testing. * Support dark mode diff --git a/README.md b/README.md index 0a0cd8537..2d619ccc7 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ ## 实现内容(已迁移到空安全) * mvp模式 -* 使用`provider` (5.x 版本)做状态管理 +* 使用`provider` (6.x 版本)做状态管理 * 基于`dio` (4.x 版本)的网络请求封装 * 完整的集成测试、可访问性测试。 * 支持深色模式 diff --git a/pubspec.yaml b/pubspec.yaml index 53f5bd46a..2e77c4000 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -35,11 +35,11 @@ dependencies: # 启动URL的插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/url_launcher url_launcher: 6.0.9 # 图片选择插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/image_picker - image_picker: 0.8.3+1 + image_picker: 0.8.3+2 # 侧滑删除 https://github.com/letsar/flutter_slidable flutter_slidable: ^0.6.0 # WebView插件 https://github.com/flutter/plugins/tree/master/packages/webview_flutter - webview_flutter: 2.0.10 + webview_flutter: 2.0.12 # 处理键盘事件 https://github.com/diegoveloper/flutter_keyboard_actions keyboard_actions: ^3.4.3 # 列表悬浮头 https://github.com/fluttercommunity/flutter_sticky_headers @@ -53,11 +53,11 @@ dependencies: # 格式化String https://github.com/Naddiseo/dart-sprintf sprintf: ^6.0.0 # 状态管理 https://github.com/rrousselGit/provider - provider: ^5.0.0 + provider: ^6.0.0 # 扫码 https://github.com/juliuscanute/qr_code_scanner qr_code_scanner: 0.5.2 # App Shortcuts https://github.com/flutter/plugins/tree/master/packages/quick_actions - quick_actions: 0.6.0+3 + quick_actions: 0.6.0+6 # 振动(支持Web) https://github.com/benjamindean/flutter_vibration vibration: ^1.7.4-nullsafety.0 # 获取当前设备信息 https://github.com/fluttercommunity/plus_plugins/tree/main/packages/device_info_plus From 95f740a962f7a55489660fe4047089371753123c Mon Sep 17 00:00:00 2001 From: weilu Date: Thu, 9 Sep 2021 22:04:16 +0800 Subject: [PATCH 049/206] flutter 2.5.0 --- .github/ISSUE_TEMPLATE/deer-issue-template.md | 2 +- .github/workflows/flutter-drive.yml | 6 +++--- .github/workflows/flutter-web-deploy.yml | 6 +++--- README-EN.md | 4 ++-- README.md | 4 ++-- pubspec.yaml | 10 +++++----- 6 files changed, 16 insertions(+), 16 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/deer-issue-template.md b/.github/ISSUE_TEMPLATE/deer-issue-template.md index 97371101d..ec866a46c 100644 --- a/.github/ISSUE_TEMPLATE/deer-issue-template.md +++ b/.github/ISSUE_TEMPLATE/deer-issue-template.md @@ -12,7 +12,7 @@ assignees: '' - [x] 电脑系统:如:`Windows 10` - [x] 设备型号:如:`小米MIX 2s` - [x] 设备系统版本:如 `Android 11` -- [x] Flutter 版本:如 `2.2.3` +- [x] Flutter 版本:如 `2.5.0` ### 具体问题描述 ### diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index 6a4b0debc..cb8e6bc77 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -53,7 +53,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v1 with: - flutter-version: '2.2.3' + flutter-version: '2.5.0' channel: 'stable' # or: 'dev' or 'beta' - name: "Run Flutter Driver tests" run: "flutter drive --target=test_driver/driver.dart" @@ -71,7 +71,7 @@ jobs: - uses: actions/checkout@v2 - uses: subosito/flutter-action@v1 with: - flutter-version: '2.2.3' + flutter-version: '2.5.0' channel: 'stable' # or: 'dev' or 'beta' - name: "Run Flutter Driver tests" # GitHub Action for installing, configuring and running Android Emulators (work only Mac OS) @@ -96,7 +96,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v1 with: - flutter-version: '2.2.3' + flutter-version: '2.5.0' channel: 'stable' - run: "flutter pub get" - name: "Run Flutter Accessibility Tests" diff --git a/.github/workflows/flutter-web-deploy.yml b/.github/workflows/flutter-web-deploy.yml index d93d8fa3b..8aa216d09 100644 --- a/.github/workflows/flutter-web-deploy.yml +++ b/.github/workflows/flutter-web-deploy.yml @@ -5,7 +5,7 @@ name: flutter_deer web deploy on: push: paths: - - 'pubspec1.yaml' + - 'pubspec.yaml' jobs: web_build_and_deploy: @@ -14,8 +14,8 @@ jobs: - uses: actions/checkout@v2.3.1 - uses: subosito/flutter-action@v1 with: - flutter-version: '2.4.0-4.0.pre' - channel: 'dev' + flutter-version: '2.5.0' + channel: 'stable' - name: "Web Build 🔧" run: | flutter pub get diff --git a/README-EN.md b/README-EN.md index 61fe120ab..cdb01a3ee 100644 --- a/README-EN.md +++ b/README-EN.md @@ -59,9 +59,9 @@ Web:https://simplezhli.github.io/flutter_deer/ [![Build Status](https://github.com/simplezhli/flutter_deer/workflows/flutter_deer%20driver/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions?query=workflow%3A%22flutter_deer+driver%22+branch%3Amaster) - 1. Flutter version 2.2.3 + 1. Flutter version 2.5.0 - 2. Dart version 2.13.4 + 2. Dart version 2.14.0 ## Precautions diff --git a/README.md b/README.md index 2d619ccc7..b244e1305 100644 --- a/README.md +++ b/README.md @@ -64,9 +64,9 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ [![Build Status](https://github.com/simplezhli/flutter_deer/workflows/flutter_deer%20driver/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions?query=workflow%3A%22flutter_deer+driver%22+branch%3Amaster) - 1. Flutter version 2.2.3 + 1. Flutter version 2.5.0 - 2. Dart version 2.13.4 + 2. Dart version 2.14.0 ## 注意事项 diff --git a/pubspec.yaml b/pubspec.yaml index 2e77c4000..b22c2f0df 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -2,7 +2,7 @@ name: flutter_deer description: Flutter Deer version: 1.2.0+18 -author: 唯鹿 +# 唯鹿 homepage: https://weilu.blog.csdn.net/ publish_to: 'none' @@ -25,7 +25,7 @@ dependencies: # 网络库 https://github.com/flutterchina/dio dio: ^4.0.0 # https://github.com/ReactiveX/rxdart - rxdart: ^0.27.1 + rxdart: ^0.27.2 # Dart 常用工具类库 https://github.com/Sky24n/common_utils common_utils: 2.0.2 # Flutter 常用工具类库 https://github.com/Sky24n/flustars @@ -33,15 +33,15 @@ dependencies: # Flutter 轮播图 https://github.com/lianyagang/flutter_swiper_null_safety flutter_swiper_null_safety: ^1.0.2 # flutter_swiper很久不维护,可以使用空安全版本:flutter_swiper_null_safety # 启动URL的插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/url_launcher - url_launcher: 6.0.9 + url_launcher: 6.0.10 # 图片选择插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/image_picker - image_picker: 0.8.3+2 + image_picker: 0.8.4 # 侧滑删除 https://github.com/letsar/flutter_slidable flutter_slidable: ^0.6.0 # WebView插件 https://github.com/flutter/plugins/tree/master/packages/webview_flutter webview_flutter: 2.0.12 # 处理键盘事件 https://github.com/diegoveloper/flutter_keyboard_actions - keyboard_actions: ^3.4.3 + keyboard_actions: ^3.4.4 # 列表悬浮头 https://github.com/fluttercommunity/flutter_sticky_headers sticky_headers: ^0.2.0 # 城市选择列表 https://github.com/flutterchina/azlistview From bcc2e1c4891a8107f1b8157aeed202164d342a91 Mon Sep 17 00:00:00 2001 From: weilu Date: Fri, 10 Sep 2021 07:07:14 +0800 Subject: [PATCH 050/206] =?UTF-8?q?flutter=202.5=E9=80=82=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/account/page/account_page.dart | 2 +- lib/account/page/add_withdrawal_account_page.dart | 2 +- lib/account/page/bank_select_page.dart | 6 +++--- lib/account/page/city_select_page.dart | 2 +- lib/account/page/withdrawal_account_list_page.dart | 2 +- lib/account/page/withdrawal_page.dart | 2 +- lib/account/page/withdrawal_password_page.dart | 2 +- lib/account/page/withdrawal_result_page.dart | 2 +- lib/demo/demo_page.dart | 2 +- lib/demo/navigator/books_main.dart | 2 +- lib/demo/navigator/delegate/router_delegate.dart | 2 +- lib/goods/page/goods_edit_page.dart | 4 ++-- lib/goods/page/goods_size_edit_page.dart | 4 ++-- lib/goods/page/goods_size_page.dart | 4 ++-- lib/goods/provider/goods_sort_provider.dart | 2 +- lib/goods/widgets/goods_add_menu.dart | 4 ++-- lib/goods/widgets/goods_item.dart | 2 +- lib/goods/widgets/goods_sort_bottom_sheet.dart | 2 +- lib/home/splash_page.dart | 6 +++--- lib/login/page/login_page.dart | 8 ++++---- lib/login/page/register_page.dart | 8 ++++---- lib/login/page/reset_password_page.dart | 8 ++++---- lib/login/page/sms_login_page.dart | 8 ++++---- lib/login/page/update_password_page.dart | 6 +++--- lib/login/widgets/my_text_field.dart | 4 ++-- lib/main.dart | 12 ++++++------ lib/net/base_entity.dart | 2 +- lib/net/intercept.dart | 7 ++++--- lib/order/page/order_info_page.dart | 4 ++-- lib/order/page/order_search_page.dart | 6 +++--- lib/order/presenter/order_search_presenter.dart | 2 +- lib/order/widgets/order_item.dart | 2 +- lib/routers/routers.dart | 7 +++---- lib/setting/page/about_page.dart | 2 +- lib/setting/page/account_manager_page.dart | 2 +- lib/setting/page/locale_page.dart | 2 +- lib/setting/page/setting_page.dart | 8 ++++---- lib/setting/page/theme_page.dart | 2 +- lib/setting/provider/locale_provider.dart | 2 +- lib/setting/provider/theme_provider.dart | 4 ++-- lib/setting/widgets/update_dialog.dart | 2 +- lib/shop/page/freight_config_page.dart | 2 +- lib/shop/page/select_address_page.dart | 2 +- lib/shop/page/shop_page.dart | 2 +- lib/shop/page/shop_setting_page.dart | 4 ++-- lib/shop/presenter/shop_presenter.dart | 2 +- lib/statistics/page/goods_statistics_page.dart | 2 +- lib/statistics/page/order_statistics_page.dart | 7 +++---- lib/store/page/store_audit_page.dart | 6 +++--- lib/store/page/store_audit_result_page.dart | 2 +- lib/util/image_utils.dart | 2 +- lib/util/other_utils.dart | 2 +- lib/util/theme_utils.dart | 3 ++- test/setting/setting_accessibility_test.dart | 2 +- test_driver/account/account.dart | 4 ++-- test_driver/driver.dart | 2 +- test_driver/goods/goods.dart | 2 +- test_driver/home/splash_page.dart | 2 +- test_driver/login/login_page.dart | 2 +- test_driver/order/order.dart | 4 ++-- test_driver/setting/setting.dart | 6 +++--- test_driver/shop/shop.dart | 4 ++-- test_driver/statistic/statistic.dart | 2 +- 63 files changed, 114 insertions(+), 114 deletions(-) diff --git a/lib/account/page/account_page.dart b/lib/account/page/account_page.dart index 95dd63097..d95ed8ddf 100644 --- a/lib/account/page/account_page.dart +++ b/lib/account/page/account_page.dart @@ -4,8 +4,8 @@ import 'package:flutter_deer/account/widgets/rise_number_text.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; import 'package:flutter_deer/util/image_utils.dart'; -import 'package:flutter_deer/widgets/my_app_bar.dart'; import 'package:flutter_deer/widgets/click_item.dart'; +import 'package:flutter_deer/widgets/my_app_bar.dart'; import '../account_router.dart'; diff --git a/lib/account/page/add_withdrawal_account_page.dart b/lib/account/page/add_withdrawal_account_page.dart index e535da96a..66825fc36 100644 --- a/lib/account/page/add_withdrawal_account_page.dart +++ b/lib/account/page/add_withdrawal_account_page.dart @@ -4,8 +4,8 @@ import 'package:flutter_deer/account/models/bank_entity.dart'; import 'package:flutter_deer/account/models/city_entity.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; -import 'package:flutter_deer/util/theme_utils.dart'; import 'package:flutter_deer/util/other_utils.dart'; +import 'package:flutter_deer/util/theme_utils.dart'; import 'package:flutter_deer/widgets/my_app_bar.dart'; import 'package:flutter_deer/widgets/my_button.dart'; import 'package:flutter_deer/widgets/my_scroll_view.dart'; diff --git a/lib/account/page/bank_select_page.dart b/lib/account/page/bank_select_page.dart index ae7fab575..0907fa814 100644 --- a/lib/account/page/bank_select_page.dart +++ b/lib/account/page/bank_select_page.dart @@ -1,15 +1,15 @@ import 'dart:convert'; +import 'package:azlistview/azlistview.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_deer/account/models/bank_entity.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; -import 'package:flutter_deer/util/theme_utils.dart'; import 'package:flutter_deer/util/other_utils.dart'; -import 'package:flutter_deer/widgets/my_app_bar.dart'; -import 'package:azlistview/azlistview.dart'; +import 'package:flutter_deer/util/theme_utils.dart'; import 'package:flutter_deer/widgets/load_image.dart'; +import 'package:flutter_deer/widgets/my_app_bar.dart'; /// design/6店铺-账户/index.html#artboard33 class BankSelectPage extends StatefulWidget { diff --git a/lib/account/page/city_select_page.dart b/lib/account/page/city_select_page.dart index 971532ae3..e57ae51ae 100644 --- a/lib/account/page/city_select_page.dart +++ b/lib/account/page/city_select_page.dart @@ -1,5 +1,6 @@ import 'dart:convert'; +import 'package:azlistview/azlistview.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_deer/account/models/city_entity.dart'; @@ -8,7 +9,6 @@ import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; import 'package:flutter_deer/util/theme_utils.dart'; import 'package:flutter_deer/widgets/my_app_bar.dart'; -import 'package:azlistview/azlistview.dart'; /// design/6店铺-账户/index.html#artboard34 class CitySelectPage extends StatefulWidget { diff --git a/lib/account/page/withdrawal_account_list_page.dart b/lib/account/page/withdrawal_account_list_page.dart index d62ce88d5..5662f22e6 100644 --- a/lib/account/page/withdrawal_account_list_page.dart +++ b/lib/account/page/withdrawal_account_list_page.dart @@ -2,8 +2,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_deer/account/models/withdrawal_account_model.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; -import 'package:flutter_deer/widgets/my_app_bar.dart'; import 'package:flutter_deer/widgets/load_image.dart'; +import 'package:flutter_deer/widgets/my_app_bar.dart'; import '../account_router.dart'; diff --git a/lib/account/page/withdrawal_page.dart b/lib/account/page/withdrawal_page.dart index 29ccea12e..c0bbfa5b7 100644 --- a/lib/account/page/withdrawal_page.dart +++ b/lib/account/page/withdrawal_page.dart @@ -4,8 +4,8 @@ import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; import 'package:flutter_deer/util/input_formatter/number_text_input_formatter.dart'; import 'package:flutter_deer/util/theme_utils.dart'; -import 'package:flutter_deer/widgets/my_app_bar.dart'; import 'package:flutter_deer/widgets/load_image.dart'; +import 'package:flutter_deer/widgets/my_app_bar.dart'; import 'package:flutter_deer/widgets/my_button.dart'; import 'package:flutter_deer/widgets/my_scroll_view.dart'; diff --git a/lib/account/page/withdrawal_password_page.dart b/lib/account/page/withdrawal_password_page.dart index 6bccc2ef0..fd04777a0 100644 --- a/lib/account/page/withdrawal_password_page.dart +++ b/lib/account/page/withdrawal_password_page.dart @@ -4,9 +4,9 @@ import 'package:flutter_deer/account/widgets/withdrawal_password_setting.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; import 'package:flutter_deer/util/other_utils.dart'; -import 'package:flutter_deer/widgets/my_app_bar.dart'; import 'package:flutter_deer/widgets/base_dialog.dart'; import 'package:flutter_deer/widgets/click_item.dart'; +import 'package:flutter_deer/widgets/my_app_bar.dart'; /// design/6店铺-账户/index.html#artboard20 class WithdrawalPasswordPage extends StatefulWidget { diff --git a/lib/account/page/withdrawal_result_page.dart b/lib/account/page/withdrawal_result_page.dart index 75479fdd9..5458f836f 100644 --- a/lib/account/page/withdrawal_result_page.dart +++ b/lib/account/page/withdrawal_result_page.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; -import 'package:flutter_deer/widgets/my_app_bar.dart'; import 'package:flutter_deer/widgets/load_image.dart'; +import 'package:flutter_deer/widgets/my_app_bar.dart'; import 'package:flutter_deer/widgets/my_button.dart'; /// design/6店铺-账户/index.html#artboard5 diff --git a/lib/demo/demo_page.dart b/lib/demo/demo_page.dart index a41b25326..00d291a26 100644 --- a/lib/demo/demo_page.dart +++ b/lib/demo/demo_page.dart @@ -27,7 +27,7 @@ class _DemoPageState extends State { super.initState(); WidgetsBinding.instance!.addPostFrameCallback((_) { /// 显示状态栏和导航栏(使用QuickActions进入demo页) - SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.top, SystemUiOverlay.bottom]); + SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: [SystemUiOverlay.top, SystemUiOverlay.bottom]); }); } diff --git a/lib/demo/navigator/books_main.dart b/lib/demo/navigator/books_main.dart index b366bec0b..8d64bcc10 100644 --- a/lib/demo/navigator/books_main.dart +++ b/lib/demo/navigator/books_main.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -import 'package:flutter_deer/demo/navigator/parser/route_information_parser.dart'; import 'package:flutter_deer/demo/navigator/delegate/router_delegate.dart'; +import 'package:flutter_deer/demo/navigator/parser/route_information_parser.dart'; /// https://gist.github.com/johnpryan/bbca91e23bbb4d39247fa922533be7c9 /// https://weilu.blog.csdn.net/article/details/108902282 diff --git a/lib/demo/navigator/delegate/router_delegate.dart b/lib/demo/navigator/delegate/router_delegate.dart index 7708b4b42..a633e3134 100644 --- a/lib/demo/navigator/delegate/router_delegate.dart +++ b/lib/demo/navigator/delegate/router_delegate.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; -import 'package:flutter_deer/demo/navigator/screen/app_shell.dart'; import 'package:flutter_deer/demo/navigator/book_entity.dart'; import 'package:flutter_deer/demo/navigator/books_app_state.dart'; +import 'package:flutter_deer/demo/navigator/screen/app_shell.dart'; class BookRouterDelegate extends RouterDelegate with ChangeNotifier, PopNavigatorRouterDelegateMixin { diff --git a/lib/goods/page/goods_edit_page.dart b/lib/goods/page/goods_edit_page.dart index d792d9dac..71a905f9e 100644 --- a/lib/goods/page/goods_edit_page.dart +++ b/lib/goods/page/goods_edit_page.dart @@ -1,18 +1,18 @@ import 'package:flutter/material.dart'; import 'package:flutter_deer/goods/provider/goods_sort_provider.dart'; import 'package:flutter_deer/goods/widgets/goods_sort_bottom_sheet.dart'; +import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; import 'package:flutter_deer/util/device_utils.dart'; import 'package:flutter_deer/util/theme_utils.dart'; import 'package:flutter_deer/util/toast_utils.dart'; import 'package:flutter_deer/widgets/click_item.dart'; import 'package:flutter_deer/widgets/load_image.dart'; +import 'package:flutter_deer/widgets/my_app_bar.dart'; import 'package:flutter_deer/widgets/my_button.dart'; import 'package:flutter_deer/widgets/my_scroll_view.dart'; import 'package:flutter_deer/widgets/selected_image.dart'; import 'package:flutter_deer/widgets/text_field_item.dart'; -import 'package:flutter_deer/res/resources.dart'; -import 'package:flutter_deer/widgets/my_app_bar.dart'; import '../goods_router.dart'; diff --git a/lib/goods/page/goods_size_edit_page.dart b/lib/goods/page/goods_size_edit_page.dart index 28eddb858..c811cb9de 100644 --- a/lib/goods/page/goods_size_edit_page.dart +++ b/lib/goods/page/goods_size_edit_page.dart @@ -1,11 +1,11 @@ import 'package:flutter/material.dart'; +import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; +import 'package:flutter_deer/widgets/my_app_bar.dart'; import 'package:flutter_deer/widgets/my_button.dart'; import 'package:flutter_deer/widgets/my_scroll_view.dart'; import 'package:flutter_deer/widgets/selected_image.dart'; import 'package:flutter_deer/widgets/text_field_item.dart'; -import 'package:flutter_deer/res/resources.dart'; -import 'package:flutter_deer/widgets/my_app_bar.dart'; /// design/4商品/index.html#artboard14 class GoodsSizeEditPage extends StatefulWidget { diff --git a/lib/goods/page/goods_size_page.dart b/lib/goods/page/goods_size_page.dart index 392619cc1..e27b67706 100644 --- a/lib/goods/page/goods_size_page.dart +++ b/lib/goods/page/goods_size_page.dart @@ -6,10 +6,10 @@ import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; import 'package:flutter_deer/util/device_utils.dart'; import 'package:flutter_deer/util/image_utils.dart'; -import 'package:flutter_deer/util/toast_utils.dart'; import 'package:flutter_deer/util/other_utils.dart'; -import 'package:flutter_deer/widgets/my_app_bar.dart'; +import 'package:flutter_deer/util/toast_utils.dart'; import 'package:flutter_deer/widgets/load_image.dart'; +import 'package:flutter_deer/widgets/my_app_bar.dart'; import 'package:flutter_deer/widgets/my_button.dart'; import 'package:flutter_deer/widgets/popup_window.dart'; import 'package:flutter_deer/widgets/state_layout.dart'; diff --git a/lib/goods/provider/goods_sort_provider.dart b/lib/goods/provider/goods_sort_provider.dart index 644c4d096..5d34e945c 100644 --- a/lib/goods/provider/goods_sort_provider.dart +++ b/lib/goods/provider/goods_sort_provider.dart @@ -2,8 +2,8 @@ import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import 'package:flutter_deer/goods/models/goods_sort_entity.dart'; import 'package:flutter_deer/generated/json/base/json_convert_content.dart'; +import 'package:flutter_deer/goods/models/goods_sort_entity.dart'; class GoodsSortProvider extends ChangeNotifier { diff --git a/lib/goods/widgets/goods_add_menu.dart b/lib/goods/widgets/goods_add_menu.dart index cfcbab155..a7ad53ef5 100644 --- a/lib/goods/widgets/goods_add_menu.dart +++ b/lib/goods/widgets/goods_add_menu.dart @@ -1,9 +1,9 @@ -import 'package:flutter_deer/routers/fluro_navigator.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_deer/goods/goods_router.dart'; import 'package:flutter_deer/res/resources.dart'; +import 'package:flutter_deer/routers/fluro_navigator.dart'; import 'package:flutter_deer/util/theme_utils.dart'; import 'package:flutter_deer/widgets/load_image.dart'; -import 'package:flutter_deer/goods/goods_router.dart'; class GoodsAddMenu extends StatefulWidget { diff --git a/lib/goods/widgets/goods_item.dart b/lib/goods/widgets/goods_item.dart index 25edc8a08..5414d6650 100644 --- a/lib/goods/widgets/goods_item.dart +++ b/lib/goods/widgets/goods_item.dart @@ -3,8 +3,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_deer/goods/models/goods_item_entity.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/util/device_utils.dart'; -import 'package:flutter_deer/util/theme_utils.dart'; import 'package:flutter_deer/util/other_utils.dart'; +import 'package:flutter_deer/util/theme_utils.dart'; import 'package:flutter_deer/widgets/load_image.dart'; import 'package:flutter_deer/widgets/my_button.dart'; diff --git a/lib/goods/widgets/goods_sort_bottom_sheet.dart b/lib/goods/widgets/goods_sort_bottom_sheet.dart index 21f9fc56e..b0a214f07 100644 --- a/lib/goods/widgets/goods_sort_bottom_sheet.dart +++ b/lib/goods/widgets/goods_sort_bottom_sheet.dart @@ -2,9 +2,9 @@ import 'package:flutter/material.dart'; import 'package:flutter_deer/goods/provider/goods_sort_provider.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; +import 'package:flutter_deer/util/other_utils.dart'; import 'package:flutter_deer/util/screen_utils.dart'; import 'package:flutter_deer/util/theme_utils.dart'; -import 'package:flutter_deer/util/other_utils.dart'; import 'package:flutter_deer/widgets/load_image.dart'; import 'package:provider/provider.dart'; diff --git a/lib/home/splash_page.dart b/lib/home/splash_page.dart index 4912d5323..98c2920b5 100644 --- a/lib/home/splash_page.dart +++ b/lib/home/splash_page.dart @@ -1,20 +1,20 @@ import 'dart:async'; +import 'package:desktop_window/desktop_window.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_deer/res/constant.dart'; import 'package:flutter_deer/demo/demo_page.dart'; import 'package:flutter_deer/login/login_router.dart'; +import 'package:flutter_deer/res/constant.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; import 'package:flutter_deer/util/app_navigator.dart'; import 'package:flutter_deer/util/device_utils.dart'; import 'package:flutter_deer/util/image_utils.dart'; import 'package:flutter_deer/util/theme_utils.dart'; import 'package:flutter_deer/widgets/load_image.dart'; -import 'package:desktop_window/desktop_window.dart'; import 'package:flutter_slidable/flutter_slidable.dart'; +import 'package:flutter_swiper_null_safety/flutter_swiper_null_safety.dart'; import 'package:quick_actions/quick_actions.dart'; import 'package:rxdart/rxdart.dart'; -import 'package:flutter_swiper_null_safety/flutter_swiper_null_safety.dart'; import 'package:sp_util/sp_util.dart'; class SplashPage extends StatefulWidget { diff --git a/lib/login/page/login_page.dart b/lib/login/page/login_page.dart index 05a2feb10..39f72ed97 100644 --- a/lib/login/page/login_page.dart +++ b/lib/login/page/login_page.dart @@ -1,10 +1,8 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import 'package:sp_util/sp_util.dart'; -import 'package:flutter_deer/res/constant.dart'; -import 'package:flutter_gen/gen_l10n/deer_localizations.dart'; import 'package:flutter_deer/login/widgets/my_text_field.dart'; +import 'package:flutter_deer/res/constant.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; import 'package:flutter_deer/store/store_router.dart'; @@ -13,6 +11,8 @@ import 'package:flutter_deer/util/other_utils.dart'; import 'package:flutter_deer/widgets/my_app_bar.dart'; import 'package:flutter_deer/widgets/my_button.dart'; import 'package:flutter_deer/widgets/my_scroll_view.dart'; +import 'package:flutter_gen/gen_l10n/deer_localizations.dart'; +import 'package:sp_util/sp_util.dart'; import '../login_router.dart'; @@ -49,7 +49,7 @@ class _LoginPageState extends State with ChangeNotifierMixin main() async { @@ -44,7 +44,7 @@ Future main() async { handleError(runApp(MyApp())); /// 隐藏状态栏。为启动页、引导页设置。完成后修改回显示状态栏。 - SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.bottom]); + SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: [SystemUiOverlay.bottom]); // TODO(weilu): 启动体验不佳。状态栏、导航栏在冷启动开始的一瞬间为黑色,且无法通过隐藏、修改颜色等方式进行处理。。。 // 相关问题跟踪:https://github.com/flutter/flutter/issues/73351 } diff --git a/lib/net/base_entity.dart b/lib/net/base_entity.dart index e51f2f335..16717d540 100644 --- a/lib/net/base_entity.dart +++ b/lib/net/base_entity.dart @@ -1,5 +1,5 @@ -import 'package:flutter_deer/res/constant.dart'; import 'package:flutter_deer/generated/json/base/json_convert_content.dart'; +import 'package:flutter_deer/res/constant.dart'; class BaseEntity { diff --git a/lib/net/intercept.dart b/lib/net/intercept.dart index 14c2df23b..302b33496 100644 --- a/lib/net/intercept.dart +++ b/lib/net/intercept.dart @@ -2,12 +2,13 @@ import 'dart:convert'; import 'package:dio/dio.dart'; -import 'package:flutter_deer/util/device_utils.dart'; -import 'package:sp_util/sp_util.dart'; import 'package:flutter_deer/res/constant.dart'; +import 'package:flutter_deer/util/device_utils.dart'; import 'package:flutter_deer/util/log_utils.dart'; -import 'package:sprintf/sprintf.dart'; import 'package:flutter_deer/util/other_utils.dart'; +import 'package:sp_util/sp_util.dart'; +import 'package:sprintf/sprintf.dart'; + import 'dio_utils.dart'; import 'error_handle.dart'; diff --git a/lib/order/page/order_info_page.dart b/lib/order/page/order_info_page.dart index c8d9e53e4..15bff6299 100644 --- a/lib/order/page/order_info_page.dart +++ b/lib/order/page/order_info_page.dart @@ -3,10 +3,10 @@ import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; import 'package:flutter_deer/util/device_utils.dart'; -import 'package:flutter_deer/util/theme_utils.dart'; import 'package:flutter_deer/util/other_utils.dart'; -import 'package:flutter_deer/widgets/my_app_bar.dart'; +import 'package:flutter_deer/util/theme_utils.dart'; import 'package:flutter_deer/widgets/load_image.dart'; +import 'package:flutter_deer/widgets/my_app_bar.dart'; import 'package:flutter_deer/widgets/my_button.dart'; import 'package:flutter_deer/widgets/my_scroll_view.dart'; diff --git a/lib/order/page/order_search_page.dart b/lib/order/page/order_search_page.dart index 7a57f4046..056ebe429 100644 --- a/lib/order/page/order_search_page.dart +++ b/lib/order/page/order_search_page.dart @@ -1,16 +1,16 @@ import 'package:flutter/material.dart'; import 'package:flutter_deer/mvp/base_page.dart'; import 'package:flutter_deer/mvp/power_presenter.dart'; -import 'package:flutter_deer/order/models/search_entity.dart'; import 'package:flutter_deer/order/iview/order_search_iview.dart'; +import 'package:flutter_deer/order/models/search_entity.dart'; import 'package:flutter_deer/order/presenter/order_search_presenter.dart'; import 'package:flutter_deer/order/provider/base_list_provider.dart'; -import 'package:flutter_deer/shop/models/user_entity.dart'; import 'package:flutter_deer/shop/iview/shop_iview.dart'; +import 'package:flutter_deer/shop/models/user_entity.dart'; import 'package:flutter_deer/shop/presenter/shop_presenter.dart'; +import 'package:flutter_deer/util/other_utils.dart'; import 'package:flutter_deer/widgets/my_refresh_list.dart'; import 'package:flutter_deer/widgets/search_bar.dart'; -import 'package:flutter_deer/util/other_utils.dart'; import 'package:flutter_deer/widgets/state_layout.dart'; import 'package:provider/provider.dart'; diff --git a/lib/order/presenter/order_search_presenter.dart b/lib/order/presenter/order_search_presenter.dart index 732749b88..205418dea 100644 --- a/lib/order/presenter/order_search_presenter.dart +++ b/lib/order/presenter/order_search_presenter.dart @@ -1,7 +1,7 @@ import 'package:flutter_deer/mvp/base_page_presenter.dart'; import 'package:flutter_deer/net/net.dart'; -import 'package:flutter_deer/order/models/search_entity.dart'; import 'package:flutter_deer/order/iview/order_search_iview.dart'; +import 'package:flutter_deer/order/models/search_entity.dart'; import 'package:flutter_deer/widgets/state_layout.dart'; diff --git a/lib/order/widgets/order_item.dart b/lib/order/widgets/order_item.dart index 39bcb8625..a26e2471c 100644 --- a/lib/order/widgets/order_item.dart +++ b/lib/order/widgets/order_item.dart @@ -3,9 +3,9 @@ import 'package:flutter/material.dart'; import 'package:flutter_deer/order/widgets/pay_type_dialog.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; +import 'package:flutter_deer/util/other_utils.dart'; import 'package:flutter_deer/util/theme_utils.dart'; import 'package:flutter_deer/util/toast_utils.dart'; -import 'package:flutter_deer/util/other_utils.dart'; import 'package:flutter_deer/widgets/my_card.dart'; import '../order_router.dart'; diff --git a/lib/routers/routers.dart b/lib/routers/routers.dart index a801a126c..5442651e6 100644 --- a/lib/routers/routers.dart +++ b/lib/routers/routers.dart @@ -2,14 +2,13 @@ import 'package:fluro/fluro.dart'; import 'package:flutter/material.dart'; import 'package:flutter_deer/account/account_router.dart'; import 'package:flutter_deer/goods/goods_router.dart'; -import 'package:flutter_deer/routers/not_found_page.dart'; +import 'package:flutter_deer/home/home_page.dart'; +import 'package:flutter_deer/home/webview_page.dart'; import 'package:flutter_deer/login/login_router.dart'; import 'package:flutter_deer/order/order_router.dart'; import 'package:flutter_deer/routers/i_router.dart'; +import 'package:flutter_deer/routers/not_found_page.dart'; import 'package:flutter_deer/setting/setting_router.dart'; - -import 'package:flutter_deer/home/home_page.dart'; -import 'package:flutter_deer/home/webview_page.dart'; import 'package:flutter_deer/shop/shop_router.dart'; import 'package:flutter_deer/statistics/statistics_router.dart'; import 'package:flutter_deer/store/store_router.dart'; diff --git a/lib/setting/page/about_page.dart b/lib/setting/page/about_page.dart index 7b1ff96ed..946209d6c 100644 --- a/lib/setting/page/about_page.dart +++ b/lib/setting/page/about_page.dart @@ -6,8 +6,8 @@ import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; import 'package:flutter_deer/util/device_utils.dart'; import 'package:flutter_deer/util/other_utils.dart'; -import 'package:flutter_deer/widgets/my_app_bar.dart'; import 'package:flutter_deer/widgets/click_item.dart'; +import 'package:flutter_deer/widgets/my_app_bar.dart'; class AboutPage extends StatefulWidget { diff --git a/lib/setting/page/account_manager_page.dart b/lib/setting/page/account_manager_page.dart index 3a8dc64c0..1ef2f9b46 100644 --- a/lib/setting/page/account_manager_page.dart +++ b/lib/setting/page/account_manager_page.dart @@ -1,9 +1,9 @@ import 'package:flutter/material.dart'; import 'package:flutter_deer/login/login_router.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; -import 'package:flutter_deer/widgets/my_app_bar.dart'; import 'package:flutter_deer/widgets/click_item.dart'; import 'package:flutter_deer/widgets/load_image.dart'; +import 'package:flutter_deer/widgets/my_app_bar.dart'; /// design/8设置/index.html#artboard1 diff --git a/lib/setting/page/locale_page.dart b/lib/setting/page/locale_page.dart index fd7a5329b..4245eaf8d 100644 --- a/lib/setting/page/locale_page.dart +++ b/lib/setting/page/locale_page.dart @@ -2,9 +2,9 @@ import 'package:flutter/material.dart'; import 'package:flutter_deer/res/constant.dart'; import 'package:flutter_deer/setting/provider/locale_provider.dart'; import 'package:flutter_deer/util/toast_utils.dart'; -import 'package:sp_util/sp_util.dart'; import 'package:flutter_deer/widgets/my_app_bar.dart'; import 'package:provider/provider.dart'; +import 'package:sp_util/sp_util.dart'; class LocalePage extends StatefulWidget { diff --git a/lib/setting/page/setting_page.dart b/lib/setting/page/setting_page.dart index 891251f3e..4c48b0059 100644 --- a/lib/setting/page/setting_page.dart +++ b/lib/setting/page/setting_page.dart @@ -1,15 +1,15 @@ -import 'package:flutter_deer/demo/demo_page.dart'; -import 'package:flutter_deer/util/device_utils.dart'; -import 'package:sp_util/sp_util.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_deer/demo/demo_page.dart'; import 'package:flutter_deer/res/constant.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; import 'package:flutter_deer/setting/widgets/exit_dialog.dart'; import 'package:flutter_deer/setting/widgets/update_dialog.dart'; import 'package:flutter_deer/util/app_navigator.dart'; -import 'package:flutter_deer/widgets/my_app_bar.dart'; +import 'package:flutter_deer/util/device_utils.dart'; import 'package:flutter_deer/widgets/click_item.dart'; +import 'package:flutter_deer/widgets/my_app_bar.dart'; +import 'package:sp_util/sp_util.dart'; import '../setting_router.dart'; diff --git a/lib/setting/page/theme_page.dart b/lib/setting/page/theme_page.dart index aedf4eb9f..fdbabc5c0 100644 --- a/lib/setting/page/theme_page.dart +++ b/lib/setting/page/theme_page.dart @@ -1,9 +1,9 @@ import 'package:flutter/material.dart'; import 'package:flutter_deer/res/constant.dart'; import 'package:flutter_deer/setting/provider/theme_provider.dart'; -import 'package:sp_util/sp_util.dart'; import 'package:flutter_deer/widgets/my_app_bar.dart'; import 'package:provider/provider.dart'; +import 'package:sp_util/sp_util.dart'; class ThemePage extends StatefulWidget { diff --git a/lib/setting/provider/locale_provider.dart b/lib/setting/provider/locale_provider.dart index 2832e05ff..06264eacc 100644 --- a/lib/setting/provider/locale_provider.dart +++ b/lib/setting/provider/locale_provider.dart @@ -1,9 +1,9 @@ import 'dart:ui'; -import 'package:sp_util/sp_util.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_deer/res/constant.dart'; +import 'package:sp_util/sp_util.dart'; class LocaleProvider extends ChangeNotifier { diff --git a/lib/setting/provider/theme_provider.dart b/lib/setting/provider/theme_provider.dart index 3a0f7180a..4af7fa176 100644 --- a/lib/setting/provider/theme_provider.dart +++ b/lib/setting/provider/theme_provider.dart @@ -1,11 +1,11 @@ import 'dart:ui'; -import 'package:flutter_deer/routers/web_page_transitions.dart'; -import 'package:sp_util/sp_util.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_deer/res/constant.dart'; import 'package:flutter_deer/res/resources.dart'; +import 'package:flutter_deer/routers/web_page_transitions.dart'; +import 'package:sp_util/sp_util.dart'; extension ThemeModeExtension on ThemeMode { String get value => ['System', 'Light', 'Dark'][index]; diff --git a/lib/setting/widgets/update_dialog.dart b/lib/setting/widgets/update_dialog.dart index 0df6172d7..3c229de9d 100644 --- a/lib/setting/widgets/update_dialog.dart +++ b/lib/setting/widgets/update_dialog.dart @@ -7,9 +7,9 @@ import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; import 'package:flutter_deer/util/image_utils.dart'; +import 'package:flutter_deer/util/other_utils.dart'; import 'package:flutter_deer/util/theme_utils.dart'; import 'package:flutter_deer/util/toast_utils.dart'; -import 'package:flutter_deer/util/other_utils.dart'; import 'package:flutter_deer/util/version_utils.dart'; import 'package:flutter_deer/widgets/my_button.dart'; diff --git a/lib/shop/page/freight_config_page.dart b/lib/shop/page/freight_config_page.dart index a8f439eed..9d0ecb3b3 100644 --- a/lib/shop/page/freight_config_page.dart +++ b/lib/shop/page/freight_config_page.dart @@ -6,8 +6,8 @@ import 'package:flutter_deer/shop/widgets/price_input_dialog.dart'; import 'package:flutter_deer/shop/widgets/range_price_input_dialog.dart'; import 'package:flutter_deer/util/theme_utils.dart'; import 'package:flutter_deer/util/toast_utils.dart'; -import 'package:flutter_deer/widgets/my_app_bar.dart'; import 'package:flutter_deer/widgets/load_image.dart'; +import 'package:flutter_deer/widgets/my_app_bar.dart'; import 'package:flutter_deer/widgets/my_button.dart'; import 'package:flutter_deer/widgets/my_card.dart'; diff --git a/lib/shop/page/select_address_page.dart b/lib/shop/page/select_address_page.dart index cb8cb4642..65de93333 100644 --- a/lib/shop/page/select_address_page.dart +++ b/lib/shop/page/select_address_page.dart @@ -2,9 +2,9 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_2d_amap/flutter_2d_amap.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; +import 'package:flutter_deer/util/other_utils.dart'; import 'package:flutter_deer/util/toast_utils.dart'; import 'package:flutter_deer/widgets/my_button.dart'; -import 'package:flutter_deer/util/other_utils.dart'; import 'package:flutter_deer/widgets/search_bar.dart'; class AddressSelectPage extends StatefulWidget { diff --git a/lib/shop/page/shop_page.dart b/lib/shop/page/shop_page.dart index afbfecf3c..cd4023576 100644 --- a/lib/shop/page/shop_page.dart +++ b/lib/shop/page/shop_page.dart @@ -4,8 +4,8 @@ import 'package:flutter_deer/mvp/base_page.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; import 'package:flutter_deer/setting/setting_router.dart'; -import 'package:flutter_deer/shop/models/user_entity.dart'; import 'package:flutter_deer/shop/iview/shop_iview.dart'; +import 'package:flutter_deer/shop/models/user_entity.dart'; import 'package:flutter_deer/shop/presenter/shop_presenter.dart'; import 'package:flutter_deer/shop/provider/user_provider.dart'; import 'package:flutter_deer/shop/shop_router.dart'; diff --git a/lib/shop/page/shop_setting_page.dart b/lib/shop/page/shop_setting_page.dart index 97dae6109..8752f3cb1 100644 --- a/lib/shop/page/shop_setting_page.dart +++ b/lib/shop/page/shop_setting_page.dart @@ -2,13 +2,13 @@ import 'package:flutter/material.dart'; import 'package:flutter_2d_amap/flutter_2d_amap.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; -import 'package:flutter_deer/shop/widgets/pay_type_dialog.dart'; import 'package:flutter_deer/shop/shop_router.dart'; +import 'package:flutter_deer/shop/widgets/pay_type_dialog.dart'; import 'package:flutter_deer/shop/widgets/price_input_dialog.dart'; import 'package:flutter_deer/shop/widgets/send_type_dialog.dart'; import 'package:flutter_deer/util/other_utils.dart'; -import 'package:flutter_deer/widgets/my_app_bar.dart'; import 'package:flutter_deer/widgets/click_item.dart'; +import 'package:flutter_deer/widgets/my_app_bar.dart'; import 'package:flutter_deer/widgets/my_button.dart'; import 'package:flutter_deer/widgets/my_scroll_view.dart'; diff --git a/lib/shop/presenter/shop_presenter.dart b/lib/shop/presenter/shop_presenter.dart index 693d261a2..c87023b6a 100644 --- a/lib/shop/presenter/shop_presenter.dart +++ b/lib/shop/presenter/shop_presenter.dart @@ -2,8 +2,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_deer/account/models/city_entity.dart'; import 'package:flutter_deer/mvp/base_page_presenter.dart'; import 'package:flutter_deer/net/net.dart'; -import 'package:flutter_deer/shop/models/user_entity.dart'; import 'package:flutter_deer/shop/iview/shop_iview.dart'; +import 'package:flutter_deer/shop/models/user_entity.dart'; class ShopPagePresenter extends BasePagePresenter { diff --git a/lib/statistics/page/goods_statistics_page.dart b/lib/statistics/page/goods_statistics_page.dart index 74bc0f396..c4f7cc7b0 100644 --- a/lib/statistics/page/goods_statistics_page.dart +++ b/lib/statistics/page/goods_statistics_page.dart @@ -6,8 +6,8 @@ import 'package:flutter_deer/statistics/widgets/selected_date.dart'; import 'package:flutter_deer/util/date_utils.dart' as date; import 'package:flutter_deer/util/image_utils.dart'; import 'package:flutter_deer/util/theme_utils.dart'; -import 'package:flutter_deer/widgets/my_app_bar.dart'; import 'package:flutter_deer/widgets/load_image.dart'; +import 'package:flutter_deer/widgets/my_app_bar.dart'; import 'package:flutter_deer/widgets/my_card.dart'; import 'package:flutter_deer/widgets/pie_chart/pie_chart.dart'; import 'package:flutter_deer/widgets/pie_chart/pie_data.dart'; diff --git a/lib/statistics/page/order_statistics_page.dart b/lib/statistics/page/order_statistics_page.dart index 5c807c2d7..3e9c34e82 100644 --- a/lib/statistics/page/order_statistics_page.dart +++ b/lib/statistics/page/order_statistics_page.dart @@ -4,13 +4,13 @@ import 'package:common_utils/common_utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/statistics/widgets/selected_date.dart'; +import 'package:flutter_deer/util/date_utils.dart' as date; import 'package:flutter_deer/util/image_utils.dart'; import 'package:flutter_deer/util/theme_utils.dart'; -import 'package:flutter_deer/widgets/my_app_bar.dart'; +import 'package:flutter_deer/widgets/bezier_chart/bezier_chart.dart'; import 'package:flutter_deer/widgets/load_image.dart'; +import 'package:flutter_deer/widgets/my_app_bar.dart'; import 'package:flutter_deer/widgets/my_card.dart'; -import 'package:flutter_deer/widgets/bezier_chart/bezier_chart.dart'; -import 'package:flutter_deer/util/date_utils.dart' as date; /// design/5统计/index.html#artboard1 /// design/5统计/index.html#artboard6 @@ -104,7 +104,6 @@ class _OrderStatisticsPageState extends State with TickerPr // ), AnimatedSize( child: _buildCalendar(), - vsync: this, curve: Curves.decelerate, duration: const Duration(milliseconds: 300), ), diff --git a/lib/store/page/store_audit_page.dart b/lib/store/page/store_audit_page.dart index 93a8116ee..23a0cd8b4 100644 --- a/lib/store/page/store_audit_page.dart +++ b/lib/store/page/store_audit_page.dart @@ -1,19 +1,19 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_2d_amap/flutter_2d_amap.dart'; +import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; import 'package:flutter_deer/shop/shop_router.dart'; -import 'package:flutter_deer/util/other_utils.dart'; import 'package:flutter_deer/store/store_router.dart'; +import 'package:flutter_deer/util/other_utils.dart'; import 'package:flutter_deer/util/theme_utils.dart'; +import 'package:flutter_deer/widgets/my_app_bar.dart'; import 'package:flutter_deer/widgets/my_button.dart'; import 'package:flutter_deer/widgets/my_scroll_view.dart'; import 'package:flutter_deer/widgets/selected_image.dart'; import 'package:flutter_deer/widgets/selected_item.dart'; import 'package:flutter_deer/widgets/text_field_item.dart'; import 'package:image_picker/image_picker.dart'; -import 'package:flutter_deer/res/resources.dart'; -import 'package:flutter_deer/widgets/my_app_bar.dart'; import 'package:keyboard_actions/keyboard_actions.dart'; diff --git a/lib/store/page/store_audit_result_page.dart b/lib/store/page/store_audit_result_page.dart index b5cf3c681..cde371155 100644 --- a/lib/store/page/store_audit_result_page.dart +++ b/lib/store/page/store_audit_result_page.dart @@ -2,8 +2,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; import 'package:flutter_deer/routers/routers.dart'; -import 'package:flutter_deer/widgets/my_app_bar.dart'; import 'package:flutter_deer/widgets/load_image.dart'; +import 'package:flutter_deer/widgets/my_app_bar.dart'; import 'package:flutter_deer/widgets/my_button.dart'; /// design/2店铺审核/index.html#artboard2 diff --git a/lib/util/image_utils.dart b/lib/util/image_utils.dart index d75f7072c..220739756 100644 --- a/lib/util/image_utils.dart +++ b/lib/util/image_utils.dart @@ -1,8 +1,8 @@ +import 'package:cached_network_image/cached_network_image.dart'; import 'package:common_utils/common_utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; -import 'package:cached_network_image/cached_network_image.dart'; class ImageUtils { diff --git a/lib/util/other_utils.dart b/lib/util/other_utils.dart index 6e2d1a4d8..5944db2f7 100644 --- a/lib/util/other_utils.dart +++ b/lib/util/other_utils.dart @@ -5,8 +5,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_deer/res/constant.dart'; import 'package:flutter_deer/util/theme_utils.dart'; import 'package:flutter_deer/util/toast_utils.dart'; -import 'package:keyboard_actions/keyboard_actions_item.dart'; import 'package:keyboard_actions/keyboard_actions_config.dart'; +import 'package:keyboard_actions/keyboard_actions_item.dart'; import 'package:sp_util/sp_util.dart'; import 'package:url_launcher/url_launcher.dart'; diff --git a/lib/util/theme_utils.dart b/lib/util/theme_utils.dart index 0416c6f72..b46428d2b 100644 --- a/lib/util/theme_utils.dart +++ b/lib/util/theme_utils.dart @@ -1,10 +1,11 @@ import 'dart:async'; import 'dart:ui'; + import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import 'package:rxdart/rxdart.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/util/device_utils.dart'; +import 'package:rxdart/rxdart.dart'; class ThemeUtils { diff --git a/test/setting/setting_accessibility_test.dart b/test/setting/setting_accessibility_test.dart index e51f4f78f..399f0d4d7 100644 --- a/test/setting/setting_accessibility_test.dart +++ b/test/setting/setting_accessibility_test.dart @@ -1,9 +1,9 @@ import 'package:flutter/material.dart'; -import 'package:flutter_deer/setting/provider/theme_provider.dart'; import 'package:flutter_deer/setting/page/about_page.dart'; import 'package:flutter_deer/setting/page/account_manager_page.dart'; import 'package:flutter_deer/setting/page/setting_page.dart'; import 'package:flutter_deer/setting/page/theme_page.dart'; +import 'package:flutter_deer/setting/provider/theme_provider.dart'; import 'package:flutter_test/flutter_test.dart'; void main() { diff --git a/test_driver/account/account.dart b/test_driver/account/account.dart index 18f65b90a..e588ae02e 100644 --- a/test_driver/account/account.dart +++ b/test_driver/account/account.dart @@ -1,9 +1,9 @@ import 'package:flutter/material.dart'; -import 'package:flutter_deer/res/constant.dart'; import 'package:flutter_deer/home/home_page.dart'; -import 'package:flutter_driver/driver_extension.dart'; import 'package:flutter_deer/main.dart'; +import 'package:flutter_deer/res/constant.dart'; +import 'package:flutter_driver/driver_extension.dart'; /// 运行 flutter drive --target=test_driver/account/account.dart void main() { diff --git a/test_driver/driver.dart b/test_driver/driver.dart index 51842fb5a..9251de1ca 100644 --- a/test_driver/driver.dart +++ b/test_driver/driver.dart @@ -1,7 +1,7 @@ +import 'package:flutter_deer/main.dart' as app; import 'package:flutter_deer/res/constant.dart'; import 'package:flutter_driver/driver_extension.dart'; -import 'package:flutter_deer/main.dart' as app; /// 集成测试运行 flutter drive --profile --target=test_driver/driver.dart (模拟器去除--profile) /// 集成测试暂不支持拖动、长按等方式。 https://github.com/flutter/flutter/issues/27552 diff --git a/test_driver/goods/goods.dart b/test_driver/goods/goods.dart index 133abb8c9..1b1daa716 100644 --- a/test_driver/goods/goods.dart +++ b/test_driver/goods/goods.dart @@ -1,9 +1,9 @@ import 'package:flutter/material.dart'; import 'package:flutter_deer/home/home_page.dart'; +import 'package:flutter_deer/main.dart'; import 'package:flutter_deer/res/constant.dart'; import 'package:flutter_driver/driver_extension.dart'; -import 'package:flutter_deer/main.dart'; /// 运行 flutter drive --target=test_driver/goods/goods.dart void main() { diff --git a/test_driver/home/splash_page.dart b/test_driver/home/splash_page.dart index 73ceda954..5af8c2264 100644 --- a/test_driver/home/splash_page.dart +++ b/test_driver/home/splash_page.dart @@ -1,6 +1,6 @@ -import 'package:flutter_driver/driver_extension.dart'; import 'package:flutter_deer/main.dart' as app; +import 'package:flutter_driver/driver_extension.dart'; /// 运行 flutter drive --target=test_driver/home/splash_page.dart void main() { diff --git a/test_driver/login/login_page.dart b/test_driver/login/login_page.dart index 3806dcd59..06fb2bd61 100644 --- a/test_driver/login/login_page.dart +++ b/test_driver/login/login_page.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_deer/login/page/login_page.dart'; -import 'package:flutter_driver/driver_extension.dart'; import 'package:flutter_deer/main.dart'; +import 'package:flutter_driver/driver_extension.dart'; /// 运行 flutter drive --target=test_driver/login/login_page.dart void main() { diff --git a/test_driver/order/order.dart b/test_driver/order/order.dart index 3edbac8d9..a45c01eb4 100644 --- a/test_driver/order/order.dart +++ b/test_driver/order/order.dart @@ -1,9 +1,9 @@ import 'package:flutter/material.dart'; -import 'package:flutter_deer/res/constant.dart'; import 'package:flutter_deer/home/home_page.dart'; -import 'package:flutter_driver/driver_extension.dart'; import 'package:flutter_deer/main.dart'; +import 'package:flutter_deer/res/constant.dart'; +import 'package:flutter_driver/driver_extension.dart'; /// 运行 flutter drive --target=test_driver/order/order.dart void main() { diff --git a/test_driver/setting/setting.dart b/test_driver/setting/setting.dart index f3fe8ca7f..8cc5c2a09 100644 --- a/test_driver/setting/setting.dart +++ b/test_driver/setting/setting.dart @@ -1,10 +1,10 @@ -import 'package:flutter_deer/res/constant.dart'; -import 'package:sp_util/sp_util.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_deer/main.dart'; +import 'package:flutter_deer/res/constant.dart'; import 'package:flutter_deer/setting/page/setting_page.dart'; import 'package:flutter_driver/driver_extension.dart'; -import 'package:flutter_deer/main.dart'; +import 'package:sp_util/sp_util.dart'; /// 运行 flutter drive --target=test_driver/setting/setting.dart Future main() async { diff --git a/test_driver/shop/shop.dart b/test_driver/shop/shop.dart index 32f4a5a63..8de197886 100644 --- a/test_driver/shop/shop.dart +++ b/test_driver/shop/shop.dart @@ -1,9 +1,9 @@ import 'package:flutter/material.dart'; -import 'package:flutter_deer/res/constant.dart'; import 'package:flutter_deer/home/home_page.dart'; -import 'package:flutter_driver/driver_extension.dart'; import 'package:flutter_deer/main.dart'; +import 'package:flutter_deer/res/constant.dart'; +import 'package:flutter_driver/driver_extension.dart'; /// 运行 flutter drive --target=test_driver/shop/shop.dart void main() { diff --git a/test_driver/statistic/statistic.dart b/test_driver/statistic/statistic.dart index ce933e427..69cfa450f 100644 --- a/test_driver/statistic/statistic.dart +++ b/test_driver/statistic/statistic.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_deer/home/home_page.dart'; -import 'package:flutter_driver/driver_extension.dart'; import 'package:flutter_deer/main.dart'; +import 'package:flutter_driver/driver_extension.dart'; /// 运行 flutter drive --target=test_driver/statistic/statistic.dart void main() { From b697125a255572ea1325372c8ab737f39156e39d Mon Sep 17 00:00:00 2001 From: weilu Date: Sat, 11 Sep 2021 08:47:57 +0800 Subject: [PATCH 051/206] =?UTF-8?q?flutter=202.5=E9=80=82=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/demo/lottie/lottie_demo.dart | 5 +++-- lib/order/page/order_page.dart | 3 ++- lib/setting/provider/theme_provider.dart | 9 ++++++--- lib/statistics/page/statistics_page.dart | 3 ++- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/lib/demo/lottie/lottie_demo.dart b/lib/demo/lottie/lottie_demo.dart index a42dea435..d3a260758 100644 --- a/lib/demo/lottie/lottie_demo.dart +++ b/lib/demo/lottie/lottie_demo.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:flutter_deer/demo/lottie/bunny.dart'; import 'package:lottie/lottie.dart'; @@ -42,7 +43,7 @@ class _LottieDemoState extends State with TickerProviderStateMixin { final Widget content = Scaffold( appBar: AppBar( - brightness: Brightness.dark, + systemOverlayStyle: SystemUiOverlayStyle.light, backgroundColor: _backgroundColor, title: const Text('Lottie Demo', style: TextStyle(color: _textColor),), iconTheme: const IconThemeData(color: _textColor), @@ -106,12 +107,12 @@ class _LottieDemoState extends State with TickerProviderStateMixin { return Theme( data: ThemeData( primaryColor: _primaryColor, - accentColor: _primaryColor, textSelectionTheme: TextSelectionThemeData( selectionColor: _primaryColor.withAlpha(70), selectionHandleColor: _primaryColor, // 覆盖`selectionHandleColor`不起作用 https://github.com/flutter/flutter/issues/74890 cursorColor: _primaryColor, ), + colorScheme: ColorScheme.fromSwatch().copyWith(secondary: _primaryColor), ), child: content, ); diff --git a/lib/order/page/order_page.dart b/lib/order/page/order_page.dart index b3237bb35..d2bc572c7 100644 --- a/lib/order/page/order_page.dart +++ b/lib/order/page/order_page.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:flutter_deer/order/page/order_list_page.dart'; import 'package:flutter_deer/order/provider/order_page_provider.dart'; import 'package:flutter_deer/res/resources.dart'; @@ -117,7 +118,7 @@ class _OrderPageState extends State with AutomaticKeepAliveClientMixi SliverOverlapAbsorber( handle: NestedScrollView.sliverOverlapAbsorberHandleFor(context), sliver: SliverAppBar( - brightness: Brightness.dark, + systemOverlayStyle: SystemUiOverlayStyle.light, actions: [ IconButton( onPressed: () { diff --git a/lib/setting/provider/theme_provider.dart b/lib/setting/provider/theme_provider.dart index 4af7fa176..94897c9a2 100644 --- a/lib/setting/provider/theme_provider.dart +++ b/lib/setting/provider/theme_provider.dart @@ -2,6 +2,7 @@ import 'dart:ui'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:flutter_deer/res/constant.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/web_page_transitions.dart'; @@ -40,9 +41,11 @@ class ThemeProvider extends ChangeNotifier { ThemeData getTheme({bool isDarkMode = false}) { return ThemeData( errorColor: isDarkMode ? Colours.dark_red : Colours.red, - brightness: isDarkMode ? Brightness.dark : Brightness.light, primaryColor: isDarkMode ? Colours.dark_app_main : Colours.app_main, - accentColor: isDarkMode ? Colours.dark_app_main : Colours.app_main, + colorScheme: ColorScheme.fromSwatch().copyWith( + brightness: isDarkMode ? Brightness.dark : Brightness.light, + secondary: isDarkMode ? Colours.dark_app_main : Colours.app_main, + ), // Tab指示器颜色 indicatorColor: isDarkMode ? Colours.dark_app_main : Colours.app_main, // 页面背景色 @@ -71,7 +74,7 @@ class ThemeProvider extends ChangeNotifier { appBarTheme: AppBarTheme( elevation: 0.0, color: isDarkMode ? Colours.dark_bg_color : Colors.white, - brightness: isDarkMode ? Brightness.dark : Brightness.light, + systemOverlayStyle: isDarkMode ? SystemUiOverlayStyle.light : SystemUiOverlayStyle.dark, ), dividerTheme: DividerThemeData( color: isDarkMode ? Colours.dark_line : Colours.line, diff --git a/lib/statistics/page/statistics_page.dart b/lib/statistics/page/statistics_page.dart index 801194f4a..1b8d015c9 100644 --- a/lib/statistics/page/statistics_page.dart +++ b/lib/statistics/page/statistics_page.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:flutter_deer/order/page/order_page.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; @@ -39,7 +40,7 @@ class _StatisticsPageState extends State { isDark = context.isDark; return [ SliverAppBar( - brightness: Brightness.dark, + systemOverlayStyle: SystemUiOverlayStyle.light, backgroundColor: Colors.transparent, elevation: 0.0, centerTitle: true, From e7ed312e3a4e10ba09df31d11f60cee0debdf67f Mon Sep 17 00:00:00 2001 From: weilu Date: Tue, 21 Sep 2021 19:31:46 +0800 Subject: [PATCH 052/206] flutter 2.5.1 --- .github/workflows/flutter-drive.yml | 6 +++--- .github/workflows/flutter-web-deploy.yml | 2 +- README-EN.md | 4 ++-- README.md | 4 ++-- ios/Flutter/Flutter.podspec | 2 +- pubspec.yaml | 8 ++++---- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index cb8e6bc77..df1192b21 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -53,7 +53,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v1 with: - flutter-version: '2.5.0' + flutter-version: '2.5.1' channel: 'stable' # or: 'dev' or 'beta' - name: "Run Flutter Driver tests" run: "flutter drive --target=test_driver/driver.dart" @@ -71,7 +71,7 @@ jobs: - uses: actions/checkout@v2 - uses: subosito/flutter-action@v1 with: - flutter-version: '2.5.0' + flutter-version: '2.5.1' channel: 'stable' # or: 'dev' or 'beta' - name: "Run Flutter Driver tests" # GitHub Action for installing, configuring and running Android Emulators (work only Mac OS) @@ -96,7 +96,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v1 with: - flutter-version: '2.5.0' + flutter-version: '2.5.1' channel: 'stable' - run: "flutter pub get" - name: "Run Flutter Accessibility Tests" diff --git a/.github/workflows/flutter-web-deploy.yml b/.github/workflows/flutter-web-deploy.yml index 8aa216d09..d129cc9ce 100644 --- a/.github/workflows/flutter-web-deploy.yml +++ b/.github/workflows/flutter-web-deploy.yml @@ -5,7 +5,7 @@ name: flutter_deer web deploy on: push: paths: - - 'pubspec.yaml' + - 'pubspec1.yaml' jobs: web_build_and_deploy: diff --git a/README-EN.md b/README-EN.md index cdb01a3ee..19eda4d6c 100644 --- a/README-EN.md +++ b/README-EN.md @@ -59,9 +59,9 @@ Web:https://simplezhli.github.io/flutter_deer/ [![Build Status](https://github.com/simplezhli/flutter_deer/workflows/flutter_deer%20driver/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions?query=workflow%3A%22flutter_deer+driver%22+branch%3Amaster) - 1. Flutter version 2.5.0 + 1. Flutter version 2.5.1 - 2. Dart version 2.14.0 + 2. Dart version 2.14.2 ## Precautions diff --git a/README.md b/README.md index b244e1305..88e50821b 100644 --- a/README.md +++ b/README.md @@ -64,9 +64,9 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ [![Build Status](https://github.com/simplezhli/flutter_deer/workflows/flutter_deer%20driver/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions?query=workflow%3A%22flutter_deer+driver%22+branch%3Amaster) - 1. Flutter version 2.5.0 + 1. Flutter version 2.5.1 - 2. Dart version 2.14.0 + 2. Dart version 2.14.2 ## 注意事项 diff --git a/ios/Flutter/Flutter.podspec b/ios/Flutter/Flutter.podspec index 2c4421cfe..663d5b298 100644 --- a/ios/Flutter/Flutter.podspec +++ b/ios/Flutter/Flutter.podspec @@ -11,7 +11,7 @@ Pod::Spec.new do |s| s.license = { :type => 'MIT' } s.author = { 'Flutter Dev Team' => 'flutter-dev@googlegroups.com' } s.source = { :git => 'https://github.com/flutter/engine', :tag => s.version.to_s } - s.ios.deployment_target = '8.0' + s.ios.deployment_target = '9.0' # Framework linking is handled by Flutter tooling, not CocoaPods. # Add a placeholder to satisfy `s.dependency 'Flutter'` plugin podspecs. s.vendored_frameworks = 'path/to/nothing' diff --git a/pubspec.yaml b/pubspec.yaml index b22c2f0df..f1d71f1d4 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -33,13 +33,13 @@ dependencies: # Flutter 轮播图 https://github.com/lianyagang/flutter_swiper_null_safety flutter_swiper_null_safety: ^1.0.2 # flutter_swiper很久不维护,可以使用空安全版本:flutter_swiper_null_safety # 启动URL的插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/url_launcher - url_launcher: 6.0.10 + url_launcher: 6.0.11 # 图片选择插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/image_picker - image_picker: 0.8.4 + image_picker: 0.8.4+2 # 侧滑删除 https://github.com/letsar/flutter_slidable flutter_slidable: ^0.6.0 # WebView插件 https://github.com/flutter/plugins/tree/master/packages/webview_flutter - webview_flutter: 2.0.12 + webview_flutter: 2.0.14 # 处理键盘事件 https://github.com/diegoveloper/flutter_keyboard_actions keyboard_actions: ^3.4.4 # 列表悬浮头 https://github.com/fluttercommunity/flutter_sticky_headers @@ -57,7 +57,7 @@ dependencies: # 扫码 https://github.com/juliuscanute/qr_code_scanner qr_code_scanner: 0.5.2 # App Shortcuts https://github.com/flutter/plugins/tree/master/packages/quick_actions - quick_actions: 0.6.0+6 + quick_actions: 0.6.0+7 # 振动(支持Web) https://github.com/benjamindean/flutter_vibration vibration: ^1.7.4-nullsafety.0 # 获取当前设备信息 https://github.com/fluttercommunity/plus_plugins/tree/main/packages/device_info_plus From b966c82bb635e50a9ad89421886775ff81bd05aa Mon Sep 17 00:00:00 2001 From: weilu Date: Tue, 28 Sep 2021 21:29:57 +0800 Subject: [PATCH 053/206] =?UTF-8?q?=E4=BE=9D=E8=B5=96=E5=8D=87=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pubspec.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pubspec.yaml b/pubspec.yaml index f1d71f1d4..7cd5f6bf0 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -21,7 +21,7 @@ dependencies: # Localization https://github.com/dart-lang/intl intl: ^0.17.0 # Toast插件 https://github.com/OpenFlutter/flutter_oktoast - oktoast: ^3.1.1 + oktoast: ^3.1.3+1 # 网络库 https://github.com/flutterchina/dio dio: ^4.0.0 # https://github.com/ReactiveX/rxdart @@ -33,13 +33,13 @@ dependencies: # Flutter 轮播图 https://github.com/lianyagang/flutter_swiper_null_safety flutter_swiper_null_safety: ^1.0.2 # flutter_swiper很久不维护,可以使用空安全版本:flutter_swiper_null_safety # 启动URL的插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/url_launcher - url_launcher: 6.0.11 + url_launcher: 6.0.12 # 图片选择插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/image_picker image_picker: 0.8.4+2 # 侧滑删除 https://github.com/letsar/flutter_slidable flutter_slidable: ^0.6.0 # WebView插件 https://github.com/flutter/plugins/tree/master/packages/webview_flutter - webview_flutter: 2.0.14 + webview_flutter: 2.1.0 # 处理键盘事件 https://github.com/diegoveloper/flutter_keyboard_actions keyboard_actions: ^3.4.4 # 列表悬浮头 https://github.com/fluttercommunity/flutter_sticky_headers @@ -53,7 +53,7 @@ dependencies: # 格式化String https://github.com/Naddiseo/dart-sprintf sprintf: ^6.0.0 # 状态管理 https://github.com/rrousselGit/provider - provider: ^6.0.0 + provider: ^6.0.1 # 扫码 https://github.com/juliuscanute/qr_code_scanner qr_code_scanner: 0.5.2 # App Shortcuts https://github.com/flutter/plugins/tree/master/packages/quick_actions @@ -73,7 +73,7 @@ dependencies: # 刮刮卡 https://github.com/vintage/scratcher scratcher: ^2.1.0 # 动画效果 https://github.com/xvrh/lottie-flutter - lottie: ^1.1.0 + lottie: ^1.2.1 # flutter 2.0 中flutter_driver与common_utils、lottie等个别库依赖冲突,用依赖版本覆盖处理。 # 使用flutter 2.2无需添加 From 2cb00b87d7f5330332c0554b0a6cc5d36bf921c1 Mon Sep 17 00:00:00 2001 From: weilu Date: Tue, 5 Oct 2021 10:17:24 +0800 Subject: [PATCH 054/206] Enable avoid_setters_without_getters --- analysis_options.yaml | 5 +- lib/account/page/city_select_page.dart | 3 - .../navigator/screen/book_details_screen.dart | 6 +- .../my_bottom_navigation_bar.dart | 4 +- lib/generated/json/bank_entity_helper.dart | 1 - lib/generated/json/city_entity_helper.dart | 1 - lib/generated/json/search_entity_helper.dart | 2 +- lib/login/widgets/my_text_field.dart | 2 +- lib/mvp/base_page_presenter.dart | 2 +- lib/net/intercept.dart | 2 +- lib/statistics/widgets/selected_date.dart | 3 +- lib/util/app_navigator.dart | 2 +- lib/util/device_utils.dart | 2 +- .../fix_ios_input_formatter.dart | 2 +- lib/util/toast_utils.dart | 2 +- .../bezier_chart/bezier_chart_widget.dart | 343 +++++++++--------- .../my_single_child_scroll_view.dart | 22 +- lib/widgets/load_image.dart | 3 +- lib/widgets/my_flexible_space_bar.dart | 7 +- lib/widgets/pie_chart/pie_chart.dart | 8 +- lib/widgets/popup_window.dart | 2 - pubspec.yaml | 4 +- 22 files changed, 197 insertions(+), 231 deletions(-) diff --git a/analysis_options.yaml b/analysis_options.yaml index 3e8971c2d..2ac1ab3e0 100755 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -36,6 +36,9 @@ analyzer: # Stream and not importing dart:async # Please see https://github.com/flutter/flutter/pull/24528 for details. sdk_version_async_exported_from_core: ignore + # TODO(https://github.com/flutter/flutter/issues/74381): + # Clean up existing unnecessary imports, and remove line to ignore. + unnecessary_import: ignore # Turned off until null-safe rollout is complete. unnecessary_null_comparison: ignore exclude: @@ -87,7 +90,7 @@ linter: # - avoid_returning_null_for_future # not yet tested - avoid_returning_null_for_void # - avoid_returning_this # there are plenty of valid reasons to return this - # - avoid_setters_without_getters # not yet tested + - avoid_setters_without_getters - avoid_shadowing_type_parameters # not yet tested - avoid_single_cascade_in_expression_statements - avoid_slow_async_io diff --git a/lib/account/page/city_select_page.dart b/lib/account/page/city_select_page.dart index e57ae51ae..f824268c3 100644 --- a/lib/account/page/city_select_page.dart +++ b/lib/account/page/city_select_page.dart @@ -61,9 +61,6 @@ class _CitySelectPageState extends State { /// rootBundle.loadString源码修改 Future _loadString(String key) async { final ByteData data = await rootBundle.load(key); - if (data == null) { - throw FlutterError('Unable to load asset: $key'); - } return utf8.decode(data.buffer.asUint8List()); } diff --git a/lib/demo/navigator/screen/book_details_screen.dart b/lib/demo/navigator/screen/book_details_screen.dart index cb960e660..37c1b1b09 100644 --- a/lib/demo/navigator/screen/book_details_screen.dart +++ b/lib/demo/navigator/screen/book_details_screen.dart @@ -24,10 +24,8 @@ class BookDetailsScreen extends StatelessWidget { }, child: const Text('Back'), ), - if (book != null) ...[ - Text(book.title, style: Theme.of(context).textTheme.headline6), - Text(book.author, style: Theme.of(context).textTheme.subtitle1), - ], + Text(book.title, style: Theme.of(context).textTheme.headline6), + Text(book.author, style: Theme.of(context).textTheme.subtitle1), ], ), ), diff --git a/lib/demo/overlay/bottom_navigation/my_bottom_navigation_bar.dart b/lib/demo/overlay/bottom_navigation/my_bottom_navigation_bar.dart index d2b55b983..68ed24cdb 100644 --- a/lib/demo/overlay/bottom_navigation/my_bottom_navigation_bar.dart +++ b/lib/demo/overlay/bottom_navigation/my_bottom_navigation_bar.dart @@ -148,9 +148,7 @@ class _MyBottomNavigationBarState extends State with Tick }); controller.forward(from: 0.0); - if (widget.selectedCallback != null) { - widget.selectedCallback(selectedPosition); - } + widget.selectedCallback(selectedPosition); } @override diff --git a/lib/generated/json/bank_entity_helper.dart b/lib/generated/json/bank_entity_helper.dart index a940feaba..2bde612ac 100644 --- a/lib/generated/json/bank_entity_helper.dart +++ b/lib/generated/json/bank_entity_helper.dart @@ -1,5 +1,4 @@ import 'package:flutter_deer/account/models/bank_entity.dart'; -import 'package:azlistview/azlistview.dart'; bankEntityFromJson(BankEntity data, Map json) { if (json['id'] != null) { diff --git a/lib/generated/json/city_entity_helper.dart b/lib/generated/json/city_entity_helper.dart index 284104646..30be591b8 100644 --- a/lib/generated/json/city_entity_helper.dart +++ b/lib/generated/json/city_entity_helper.dart @@ -1,5 +1,4 @@ import 'package:flutter_deer/account/models/city_entity.dart'; -import 'package:azlistview/azlistview.dart'; cityEntityFromJson(CityEntity data, Map json) { if (json['name'] != null) { diff --git a/lib/generated/json/search_entity_helper.dart b/lib/generated/json/search_entity_helper.dart index 70bf5242e..e4473916d 100644 --- a/lib/generated/json/search_entity_helper.dart +++ b/lib/generated/json/search_entity_helper.dart @@ -19,7 +19,7 @@ Map searchEntityToJson(SearchEntity entity) { final Map data = new Map(); data['total_count'] = entity.totalCount; data['incomplete_results'] = entity.incompleteResults; - data['items'] = entity.items?.map((v) => v.toJson())?.toList(); + data['items'] = entity.items?.map((v) => v.toJson()).toList(); return data; } diff --git a/lib/login/widgets/my_text_field.dart b/lib/login/widgets/my_text_field.dart index 3e215bbe3..d37e88351 100644 --- a/lib/login/widgets/my_text_field.dart +++ b/lib/login/widgets/my_text_field.dart @@ -79,7 +79,7 @@ class _MyTextFieldState extends State { Future _getVCode() async { final bool isSuccess = await widget.getVCode!(); - if (isSuccess != null && isSuccess) { + if (isSuccess) { setState(() { _currentSecond = _second; _clickable = false; diff --git a/lib/mvp/base_page_presenter.dart b/lib/mvp/base_page_presenter.dart index 0dec543a9..65fd9c656 100644 --- a/lib/mvp/base_page_presenter.dart +++ b/lib/mvp/base_page_presenter.dart @@ -113,7 +113,7 @@ class BasePagePresenter extends BasePresenter { view.showToast(msg); } /// 页面如果dispose,则不回调onError - if (onError != null && view.getContext() != null) { + if (onError != null) { onError(code, msg); } } diff --git a/lib/net/intercept.dart b/lib/net/intercept.dart index 302b33496..0eacd8786 100644 --- a/lib/net/intercept.dart +++ b/lib/net/intercept.dart @@ -51,7 +51,7 @@ class TokenInterceptor extends Interceptor { @override Future onResponse(Response response, ResponseInterceptorHandler handler) async { //401代表token过期 - if (response != null && response.statusCode == ExceptionHandle.unauthorized) { + if (response.statusCode == ExceptionHandle.unauthorized) { Log.d('-----------自动刷新Token------------'); final Dio dio = DioUtils.instance.dio; dio.lock(); diff --git a/lib/statistics/widgets/selected_date.dart b/lib/statistics/widgets/selected_date.dart index 9bdcd0dcb..10ce043bb 100644 --- a/lib/statistics/widgets/selected_date.dart +++ b/lib/statistics/widgets/selected_date.dart @@ -12,8 +12,7 @@ class SelectedDateButton extends StatelessWidget { this.enable = true, this.onTap, this.semanticsLabel - }): assert(unSelectedTextColor != null, 'The [unSelectedTextColor] argument must not be null.'), - super(key: key); + }): super(key: key); final String text; final double fontSize; diff --git a/lib/util/app_navigator.dart b/lib/util/app_navigator.dart index f63609702..f81764858 100644 --- a/lib/util/app_navigator.dart +++ b/lib/util/app_navigator.dart @@ -28,7 +28,7 @@ class AppNavigator { context, MaterialPageRoute( builder: (BuildContext context) => scene, - ), (route) => route == null + ), (route) => false ); } diff --git a/lib/util/device_utils.dart b/lib/util/device_utils.dart index b5ff1863b..2349d5bcd 100644 --- a/lib/util/device_utils.dart +++ b/lib/util/device_utils.dart @@ -30,7 +30,7 @@ class Device { if (Constant.isDriverTest) { return -1; } - if (isAndroid && _androidInfo != null) { + if (isAndroid) { return _androidInfo.version.sdkInt ?? -1; } else { return -1; diff --git a/lib/util/input_formatter/fix_ios_input_formatter.dart b/lib/util/input_formatter/fix_ios_input_formatter.dart index ff1abec43..da23a5ea7 100644 --- a/lib/util/input_formatter/fix_ios_input_formatter.dart +++ b/lib/util/input_formatter/fix_ios_input_formatter.dart @@ -19,7 +19,7 @@ class FixIOSTextInputFormatter extends TextInputFormatter { if (Platform.isIOS) { // ios Composing变化也执行format,因为在拼音阶段没有执行LengthLimitingTextInputFormatter,从拼音到汉字需要重新执行 - if (newValue != null && newValue.composing != null && newValue.composing.isValid) { + if (newValue.composing.isValid) { // ios拼音阶段不执行长度限制的format return TextEditingValue.empty; } diff --git a/lib/util/toast_utils.dart b/lib/util/toast_utils.dart index 2599470ed..e9272b9c4 100644 --- a/lib/util/toast_utils.dart +++ b/lib/util/toast_utils.dart @@ -3,7 +3,7 @@ import 'package:oktoast/oktoast.dart'; /// Toast工具类 class Toast { - static void show(String msg, {int duration = 2000}) { + static void show(String? msg, {int duration = 2000}) { if (msg == null) { return; } diff --git a/lib/widgets/bezier_chart/bezier_chart_widget.dart b/lib/widgets/bezier_chart/bezier_chart_widget.dart index 35dc393aa..9fc144495 100644 --- a/lib/widgets/bezier_chart/bezier_chart_widget.dart +++ b/lib/widgets/bezier_chart/bezier_chart_widget.dart @@ -98,9 +98,7 @@ class BezierChart extends StatefulWidget { required this.series, this.onScaleChanged, }) : assert( - (bezierChartScale == BezierChartScale.CUSTOM && - xAxisCustomValues != null && - series != null) || + (bezierChartScale == BezierChartScale.CUSTOM) || bezierChartScale != BezierChartScale.CUSTOM, 'The xAxisCustomValues and series must not be null', ), @@ -211,7 +209,6 @@ class BezierChartState extends State void _updatePosition(Offset globalPosition) { final RenderBox renderBox = context.findRenderObject() as RenderBox; final position = renderBox.globalToLocal(globalPosition); - if (position == null) return; return setState( () { final fixedPosition = Offset( @@ -921,7 +918,7 @@ class BezierChartState extends State ), ); if (widget.config.displayYAxis) { - if (_yValues != null && _yValues.isNotEmpty) { + if (_yValues.isNotEmpty) { //add a background container for the Y Axis items.add(Positioned( left: 0, @@ -1336,187 +1333,185 @@ class _BezierChartPainter extends CustomPainter { } } - if (p0 != null) { - final yValue = _getYValues( - p0, - p1, - p2, - p3, - (verticalX - p0.dx) / (p3.dx - p0.dx), - ); - - double infoWidth = 0; //base value, modified based on the label text - double infoHeight = 30; - - //bubble indicator padding - // TODO 28 - final horizontalPadding = 18.0; - // TODO 42 - double offsetInfo = 37 + ((_currentCustomValues.length - 1.0) * 10.0); - final centerForCircle = Offset(verticalX, height - yValue); - final center = config.verticalIndicatorFixedPosition - ? Offset(verticalX, offsetInfo) - : centerForCircle; - - if (config.showVerticalIndicator) { - canvas.drawLine( - Offset(verticalX, height), - Offset(verticalX, config.verticalLineFullHeight ? 0.0 : center.dy), - paintVerticalIndicator, - ); - } + final yValue = _getYValues( + p0, + p1, + p2, + p3, + (verticalX - p0.dx) / (p3.dx - p0.dx), + ); - //draw point - canvas.drawCircle( - centerForCircle, - radiusDotIndicatorMain, - Paint() - ..color = series.reversed.toList().last.dataPointFillColor - ..strokeWidth = 4.0, + double infoWidth = 0; //base value, modified based on the label text + double infoHeight = 30; + + //bubble indicator padding + // TODO 28 + final horizontalPadding = 18.0; + // TODO 42 + double offsetInfo = 37 + ((_currentCustomValues.length - 1.0) * 10.0); + final centerForCircle = Offset(verticalX, height - yValue); + final center = config.verticalIndicatorFixedPosition + ? Offset(verticalX, offsetInfo) + : centerForCircle; + + if (config.showVerticalIndicator) { + canvas.drawLine( + Offset(verticalX, height), + Offset(verticalX, config.verticalLineFullHeight ? 0.0 : center.dy), + paintVerticalIndicator, ); + } - //calculate the total lenght of the lines - List textValues = []; - List centerCircles = []; - // TODO(weilu): 修改处 infoHeight / (8.75) - double space = - 10 - ((infoHeight / (4)) * _currentCustomValues.length); - infoHeight = - infoHeight + (_currentCustomValues.length - 1) * (infoHeight / 3); - - for (_CustomValue customValue in _currentCustomValues.reversed.toList()) { - textValues.add( - TextSpan( - text: '${customValue.value} ', - style: config.bubbleIndicatorValueStyle.copyWith(fontSize: 11), - children: [ - TextSpan( - text: '${customValue.label}\n', - style: config.bubbleIndicatorLabelStyle.copyWith(fontSize: 9), - ), - ], - ), - ); - centerCircles.add( - // Offset(center.dx - infoWidth / 2 + radiusDotIndicatorItems * 1.5, - Offset( - center.dx, - center.dy - - offsetInfo - - radiusDotIndicatorItems + - space + - (_currentCustomValues.length == 1 ? 1 : 0)), - ); - space += 12.5; - } + //draw point + canvas.drawCircle( + centerForCircle, + radiusDotIndicatorMain, + Paint() + ..color = series.reversed.toList().last.dataPointFillColor + ..strokeWidth = 4.0, + ); - //Calculate Text size - TextPainter textPainter = TextPainter( - textAlign: TextAlign.center, - text: TextSpan( - text: _getInfoTitleText(), - // TODO(weilu): 修改处 9.5 - style: config.bubbleIndicatorTitleStyle.copyWith(fontSize: 5.0), - children: textValues, + //calculate the total lenght of the lines + List textValues = []; + List centerCircles = []; + // TODO(weilu): 修改处 infoHeight / (8.75) + double space = + 10 - ((infoHeight / (4)) * _currentCustomValues.length); + infoHeight = + infoHeight + (_currentCustomValues.length - 1) * (infoHeight / 3); + + for (_CustomValue customValue in _currentCustomValues.reversed.toList()) { + textValues.add( + TextSpan( + text: '${customValue.value} ', + style: config.bubbleIndicatorValueStyle.copyWith(fontSize: 11), + children: [ + TextSpan( + text: '${customValue.label}\n', + style: config.bubbleIndicatorLabelStyle.copyWith(fontSize: 9), + ), + ], ), - textDirection: TextDirection.ltr, ); - textPainter.layout(); - - infoWidth = - textPainter.width + radiusDotIndicatorItems * 2 + horizontalPadding; - - ///Draw Bubble Indicator Info - /// Draw shadow bubble info - if (animation.isCompleted) { - Path path = Path(); - path.moveTo(center.dx - infoWidth / 2 + 4, - center.dy - offsetInfo + infoHeight / 1.8); - path.lineTo(center.dx + infoWidth / 2 + 4, - center.dy - offsetInfo + infoHeight / 1.8); - path.lineTo(center.dx + infoWidth / 2 + 4, - center.dy - offsetInfo - infoHeight / 3); - //path.close(); - // canvas.drawShadow(path, Colors.black, 20.0, false); - canvas.drawPath(path, paintControlPoints..color = Colors.black12); - } + centerCircles.add( + // Offset(center.dx - infoWidth / 2 + radiusDotIndicatorItems * 1.5, + Offset( + center.dx, + center.dy - + offsetInfo - + radiusDotIndicatorItems + + space + + (_currentCustomValues.length == 1 ? 1 : 0)), + ); + space += 12.5; + } - final paintInfo = Paint() - ..color = config.bubbleIndicatorColor - ..style = PaintingStyle.fill; - - //Draw Bubble info - canvas.drawRRect( - RRect.fromRectAndRadius( - _fromCenter( - center: Offset( - center.dx, - (center.dy - offsetInfo * animation.value), - ), - width: infoWidth, - height: infoHeight, + //Calculate Text size + TextPainter textPainter = TextPainter( + textAlign: TextAlign.center, + text: TextSpan( + text: _getInfoTitleText(), + // TODO(weilu): 修改处 9.5 + style: config.bubbleIndicatorTitleStyle.copyWith(fontSize: 5.0), + children: textValues, + ), + textDirection: TextDirection.ltr, + ); + textPainter.layout(); + + infoWidth = + textPainter.width + radiusDotIndicatorItems * 2 + horizontalPadding; + + ///Draw Bubble Indicator Info + /// Draw shadow bubble info + if (animation.isCompleted) { + Path path = Path(); + path.moveTo(center.dx - infoWidth / 2 + 4, + center.dy - offsetInfo + infoHeight / 1.8); + path.lineTo(center.dx + infoWidth / 2 + 4, + center.dy - offsetInfo + infoHeight / 1.8); + path.lineTo(center.dx + infoWidth / 2 + 4, + center.dy - offsetInfo - infoHeight / 3); + //path.close(); + // canvas.drawShadow(path, Colors.black, 20.0, false); + canvas.drawPath(path, paintControlPoints..color = Colors.black12); + } + + final paintInfo = Paint() + ..color = config.bubbleIndicatorColor + ..style = PaintingStyle.fill; + + //Draw Bubble info + canvas.drawRRect( + RRect.fromRectAndRadius( + _fromCenter( + center: Offset( + center.dx, + (center.dy - offsetInfo * animation.value), ), - Radius.circular(5), + width: infoWidth, + height: infoHeight, ), - paintInfo, - ); + Radius.circular(5), + ), + paintInfo, + ); - //Draw triangle Bubble - final double triangleSize = 6; - - Path pathArrow = Path(); - - pathArrow.moveTo(center.dx - triangleSize, - center.dy - offsetInfo * animation.value + infoHeight / 2.1); - pathArrow.lineTo( - center.dx, - center.dy - - offsetInfo * animation.value + - infoHeight / 2.1 + - triangleSize * 1.5); - pathArrow.lineTo(center.dx + triangleSize, - center.dy - offsetInfo * animation.value + infoHeight / 2.1); - pathArrow.close(); - canvas.drawPath( - pathArrow, - paintInfo, + //Draw triangle Bubble + final double triangleSize = 6; + + Path pathArrow = Path(); + + pathArrow.moveTo(center.dx - triangleSize, + center.dy - offsetInfo * animation.value + infoHeight / 2.1); + pathArrow.lineTo( + center.dx, + center.dy - + offsetInfo * animation.value + + infoHeight / 2.1 + + triangleSize * 1.5); + pathArrow.lineTo(center.dx + triangleSize, + center.dy - offsetInfo * animation.value + infoHeight / 2.1); + pathArrow.close(); + canvas.drawPath( + pathArrow, + paintInfo, + ); + //End triangle + + if (animation.isCompleted) { + //Paint Text , title and description + textPainter.paint( + canvas, + Offset( + center.dx - textPainter.width / 2 + 6, // TODO 0 + center.dy - offsetInfo - infoHeight / 2.5, + ), ); - //End triangle - - if (animation.isCompleted) { - //Paint Text , title and description - textPainter.paint( - canvas, - Offset( - center.dx - textPainter.width / 2 + 6, // TODO 0 - center.dy - offsetInfo - infoHeight / 2.5, - ), - ); - //draw circle indicators and text - for (int z = 0; z < _currentCustomValues.length; z++) { - _CustomValue customValue = _currentCustomValues[z]; - Offset centerIndicator = centerCircles.reversed.toList()[z]; - Offset fixedCenter = Offset( - centerIndicator.dx - - infoWidth / 2 + - radiusDotIndicatorItems + - 6, // TODO 4 - centerIndicator.dy); - canvas.drawCircle( - fixedCenter, - radiusDotIndicatorItems, - Paint() - ..color = customValue.color - ..style = PaintingStyle.fill); - canvas.drawCircle( - fixedCenter, - radiusDotIndicatorItems, - Paint() - ..color = Colors.black - ..strokeWidth = 0.5 - ..style = PaintingStyle.stroke); - } + //draw circle indicators and text + for (int z = 0; z < _currentCustomValues.length; z++) { + _CustomValue customValue = _currentCustomValues[z]; + Offset centerIndicator = centerCircles.reversed.toList()[z]; + Offset fixedCenter = Offset( + centerIndicator.dx - + infoWidth / 2 + + radiusDotIndicatorItems + + 6, // TODO 4 + centerIndicator.dy); + canvas.drawCircle( + fixedCenter, + radiusDotIndicatorItems, + Paint() + ..color = customValue.color + ..style = PaintingStyle.fill); + canvas.drawCircle( + fixedCenter, + radiusDotIndicatorItems, + Paint() + ..color = Colors.black + ..strokeWidth = 0.5 + ..style = PaintingStyle.stroke); } } } diff --git a/lib/widgets/bezier_chart/my_single_child_scroll_view.dart b/lib/widgets/bezier_chart/my_single_child_scroll_view.dart index cabb7e6e3..fa55a8612 100644 --- a/lib/widgets/bezier_chart/my_single_child_scroll_view.dart +++ b/lib/widgets/bezier_chart/my_single_child_scroll_view.dart @@ -17,9 +17,7 @@ class MySingleChildScrollView extends StatelessWidget { this.controller, required this.child, this.dragStartBehavior = DragStartBehavior.start, - }) : assert(scrollDirection != null), - assert(dragStartBehavior != null), - assert( + }) : assert( !(controller != null && primary == true), 'Primary ScrollViews obtain their ScrollController via inheritance from a PrimaryScrollController widget. ' 'You cannot both set primary to true and pass an explicit controller.'), @@ -126,8 +124,7 @@ class _SingleChildViewport extends SingleChildRenderObjectWidget { this.axisDirection = AxisDirection.down, required this.offset, Widget? child, - }) : assert(axisDirection != null), - super(key: key, child: child); + }) : super(key: key, child: child); final AxisDirection axisDirection; final ViewportOffset offset; @@ -158,10 +155,7 @@ class _RenderSingleChildViewport extends RenderBox required ViewportOffset offset, double cacheExtent = RenderAbstractViewport.defaultCacheExtent, RenderBox? child, - }) : assert(axisDirection != null), - assert(offset != null), - assert(cacheExtent != null), - _axisDirection = axisDirection, + }) : _axisDirection = axisDirection, _offset = offset, _cacheExtent = cacheExtent { this.child = child; @@ -170,7 +164,6 @@ class _RenderSingleChildViewport extends RenderBox AxisDirection get axisDirection => _axisDirection; AxisDirection _axisDirection; set axisDirection(AxisDirection value) { - assert(value != null); if (value == _axisDirection) return; _axisDirection = value; markNeedsLayout(); @@ -181,7 +174,6 @@ class _RenderSingleChildViewport extends RenderBox ViewportOffset get offset => _offset; ViewportOffset _offset; set offset(ViewportOffset value) { - assert(value != null); if (value == _offset) return; if (attached) _offset.removeListener(_hasScrolled); _offset = value; @@ -193,7 +185,6 @@ class _RenderSingleChildViewport extends RenderBox double get cacheExtent => _cacheExtent; double _cacheExtent; set cacheExtent(double value) { - assert(value != null); if (value == _cacheExtent) return; _cacheExtent = value; markNeedsLayout(); @@ -311,7 +302,6 @@ class _RenderSingleChildViewport extends RenderBox Offset get _paintOffset => _paintOffsetForPosition(offset.pixels); Offset _paintOffsetForPosition(double position) { - assert(axisDirection != null); switch (axisDirection) { case AxisDirection.up: return Offset(0.0, position - child!.size.height + size.height); @@ -357,7 +347,7 @@ class _RenderSingleChildViewport extends RenderBox @override Rect? describeApproximatePaintClip(RenderObject child) { - if (child != null && _shouldClipAtPaintOffset(_paintOffset)) + if (_shouldClipAtPaintOffset(_paintOffset)) return Offset.zero & size; return null; } @@ -378,7 +368,7 @@ class _RenderSingleChildViewport extends RenderBox if (target is! RenderBox) return RevealedOffset(offset: offset.pixels, rect: rect); - final RenderBox targetBox = target as RenderBox; + final RenderBox targetBox = target; final Matrix4 transform = targetBox.getTransformTo(this); final Rect bounds = MatrixUtils.transformRect(transform, rect); final Size contentSize = child!.size; @@ -387,7 +377,6 @@ class _RenderSingleChildViewport extends RenderBox double targetMainAxisExtent; double mainAxisExtent; - assert(axisDirection != null); switch (axisDirection) { case AxisDirection.up: mainAxisExtent = size.height; @@ -450,7 +439,6 @@ class _RenderSingleChildViewport extends RenderBox @override Rect describeSemanticsClip(RenderObject child) { - assert(axis != null); switch (axis) { case Axis.vertical: return Rect.fromLTRB( diff --git a/lib/widgets/load_image.dart b/lib/widgets/load_image.dart index bbf6cc062..72d4927c5 100644 --- a/lib/widgets/load_image.dart +++ b/lib/widgets/load_image.dart @@ -14,8 +14,7 @@ class LoadImage extends StatelessWidget { this.holderImg = 'none', this.cacheWidth, this.cacheHeight, - }) : assert(image != null, 'The [image] argument must not be null.'), - super(key: key); + }) : super(key: key); final String image; final double? width; diff --git a/lib/widgets/my_flexible_space_bar.dart b/lib/widgets/my_flexible_space_bar.dart index bb7ab197f..1b8a8105f 100644 --- a/lib/widgets/my_flexible_space_bar.dart +++ b/lib/widgets/my_flexible_space_bar.dart @@ -33,8 +33,7 @@ class MyFlexibleSpaceBar extends StatefulWidget { this.centerTitle, this.titlePadding, this.collapseMode = CollapseMode.parallax, - }) : assert(collapseMode != null), - super(key: key); + }) : super(key: key); /// The primary contents of the flexible space bar when expanded. /// @@ -93,7 +92,6 @@ class MyFlexibleSpaceBar extends StatefulWidget { required double currentExtent, required Widget child, }) { - assert(currentExtent != null); return FlexibleSpaceBarSettings( toolbarOpacity: toolbarOpacity ?? 1.0, minExtent: minExtent ?? currentExtent, @@ -111,7 +109,6 @@ class _FlexibleSpaceBarState extends State { bool _getEffectiveCenterTitle(ThemeData theme) { if (widget.centerTitle != null) return widget.centerTitle!; - assert(theme.platform != null); switch (theme.platform) { case TargetPlatform.android: case TargetPlatform.fuchsia: @@ -128,7 +125,6 @@ class _FlexibleSpaceBarState extends State { if (effectiveCenterTitle) return Alignment.bottomCenter; final TextDirection textDirection = Directionality.of(context); - assert(textDirection != null); switch (textDirection) { case TextDirection.rtl: return Alignment.bottomRight; @@ -167,7 +163,6 @@ class _FlexibleSpaceBarState extends State { Widget build(BuildContext context) { final Size size = MediaQuery.of(context).size; final FlexibleSpaceBarSettings settings = context.dependOnInheritedWidgetOfExactType()!; - assert(settings != null, 'A FlexibleSpaceBar must be wrapped in the widget returned by FlexibleSpaceBar.createSettings().'); final List children = []; diff --git a/lib/widgets/pie_chart/pie_chart.dart b/lib/widgets/pie_chart/pie_chart.dart index f5b6edee7..f0cbe5bc9 100644 --- a/lib/widgets/pie_chart/pie_chart.dart +++ b/lib/widgets/pie_chart/pie_chart.dart @@ -13,9 +13,7 @@ class PieChart extends StatefulWidget { Key? key, required this.data, required this.name - }) : assert(data != null, 'The [data] argument must not be null.'), - assert(name != null, 'The [name] argument must not be null.'), - super(key: key); + }) : super(key: key); final List data; final String name; @@ -114,7 +112,7 @@ class _PieChartState extends State with SingleTickerProviderStateMixin class PieChartPainter extends CustomPainter { PieChartPainter(this.data, double angleFactor, this.bgColor, this.name, this.count) { - if (data.length == null || data.isEmpty) { + if (data.isEmpty) { return; } int count = 0; @@ -164,7 +162,7 @@ class PieChartPainter extends CustomPainter { @override void paint(Canvas canvas, Size size) { - if (data.length == null || data.isEmpty) { + if (data.isEmpty) { return; } prevAngle = -math.pi; diff --git a/lib/widgets/popup_window.dart b/lib/widgets/popup_window.dart index b9571a91c..285e8e39b 100644 --- a/lib/widgets/popup_window.dart +++ b/lib/widgets/popup_window.dart @@ -20,7 +20,6 @@ Future showPopupWindow({ String? semanticLabel, bool isShowBg = false, }) { - assert(context != null); switch (defaultTargetPlatform) { case TargetPlatform.iOS: @@ -219,7 +218,6 @@ class _PopupWindowLayoutDelegate extends SingleChildLayoutDelegate { x = position.left; } else { // Menu button is equidistant from both edges, so grow in reading direction. - assert(textDirection != null); switch (textDirection) { case TextDirection.rtl: x = size.width - position.right - childSize.width; diff --git a/pubspec.yaml b/pubspec.yaml index 7cd5f6bf0..62427f3be 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -39,7 +39,7 @@ dependencies: # 侧滑删除 https://github.com/letsar/flutter_slidable flutter_slidable: ^0.6.0 # WebView插件 https://github.com/flutter/plugins/tree/master/packages/webview_flutter - webview_flutter: 2.1.0 + webview_flutter: 2.1.1 # 处理键盘事件 https://github.com/diegoveloper/flutter_keyboard_actions keyboard_actions: ^3.4.4 # 列表悬浮头 https://github.com/fluttercommunity/flutter_sticky_headers @@ -61,7 +61,7 @@ dependencies: # 振动(支持Web) https://github.com/benjamindean/flutter_vibration vibration: ^1.7.4-nullsafety.0 # 获取当前设备信息 https://github.com/fluttercommunity/plus_plugins/tree/main/packages/device_info_plus - device_info_plus: 2.1.0 + device_info_plus: 2.2.0 # 改变桌面端窗口大小(MacOS/Linux/Windows) https://github.com/mix1009/desktop_window desktop_window: 0.4.0 # 高德2D地图插件(支持Web) https://github.com/simplezhli/flutter_2d_amap From 317cf727a68af50e3be7e0f6ffa82384f15ec90e Mon Sep 17 00:00:00 2001 From: weilu Date: Tue, 5 Oct 2021 13:13:43 +0800 Subject: [PATCH 055/206] flutter 2.5.2 --- .github/ISSUE_TEMPLATE/deer-issue-template.md | 2 +- .github/workflows/flutter-drive.yml | 8 ++++---- .gitignore | 1 + README-EN.md | 4 ++-- README.md | 4 ++-- analysis_options.yaml | 6 +----- ios/Podfile | 2 ++ ios/Runner.xcodeproj/project.pbxproj | 4 ++-- ios/Runner/LaunchScreen.storyboard | 10 +++++++--- 9 files changed, 22 insertions(+), 19 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/deer-issue-template.md b/.github/ISSUE_TEMPLATE/deer-issue-template.md index ec866a46c..b6d7e646c 100644 --- a/.github/ISSUE_TEMPLATE/deer-issue-template.md +++ b/.github/ISSUE_TEMPLATE/deer-issue-template.md @@ -12,7 +12,7 @@ assignees: '' - [x] 电脑系统:如:`Windows 10` - [x] 设备型号:如:`小米MIX 2s` - [x] 设备系统版本:如 `Android 11` -- [x] Flutter 版本:如 `2.5.0` +- [x] Flutter 版本:如 `2.5.2` ### 具体问题描述 ### diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index df1192b21..2a4f44411 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -18,7 +18,7 @@ jobs: matrix: device: - "iPhone 8" - - "iPhone 11 Pro Max" + - "iPhone 12 Pro Max" # When set to true, GitHub cancels all in-progress jobs if any matrix job # fails. fail-fast: false @@ -53,7 +53,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v1 with: - flutter-version: '2.5.1' + flutter-version: '2.5.2' channel: 'stable' # or: 'dev' or 'beta' - name: "Run Flutter Driver tests" run: "flutter drive --target=test_driver/driver.dart" @@ -71,7 +71,7 @@ jobs: - uses: actions/checkout@v2 - uses: subosito/flutter-action@v1 with: - flutter-version: '2.5.1' + flutter-version: '2.5.2' channel: 'stable' # or: 'dev' or 'beta' - name: "Run Flutter Driver tests" # GitHub Action for installing, configuring and running Android Emulators (work only Mac OS) @@ -96,7 +96,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v1 with: - flutter-version: '2.5.1' + flutter-version: '2.5.2' channel: 'stable' - run: "flutter pub get" - name: "Run Flutter Accessibility Tests" diff --git a/.gitignore b/.gitignore index cd2f87ebf..4cffcb346 100644 --- a/.gitignore +++ b/.gitignore @@ -75,3 +75,4 @@ lib/generated_plugin_registrant.dart !**/ios/**/default.pbxuser !**/ios/**/default.perspectivev3 !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages +/ios/build/ diff --git a/README-EN.md b/README-EN.md index 19eda4d6c..ecd25f8b9 100644 --- a/README-EN.md +++ b/README-EN.md @@ -59,9 +59,9 @@ Web:https://simplezhli.github.io/flutter_deer/ [![Build Status](https://github.com/simplezhli/flutter_deer/workflows/flutter_deer%20driver/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions?query=workflow%3A%22flutter_deer+driver%22+branch%3Amaster) - 1. Flutter version 2.5.1 + 1. Flutter version 2.5.2 - 2. Dart version 2.14.2 + 2. Dart version 2.14.3 ## Precautions diff --git a/README.md b/README.md index 88e50821b..3f520c12e 100644 --- a/README.md +++ b/README.md @@ -64,9 +64,9 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ [![Build Status](https://github.com/simplezhli/flutter_deer/workflows/flutter_deer%20driver/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions?query=workflow%3A%22flutter_deer+driver%22+branch%3Amaster) - 1. Flutter version 2.5.1 + 1. Flutter version 2.5.2 - 2. Dart version 2.14.2 + 2. Dart version 2.14.3 ## 注意事项 diff --git a/analysis_options.yaml b/analysis_options.yaml index 2ac1ab3e0..389dcae5e 100755 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -32,10 +32,6 @@ analyzer: # allow self-reference to deprecated members (we do this because otherwise we have # to annotate every member in every test, assert, etc, when we deprecate something) deprecated_member_use_from_same_package: ignore - # Ignore analyzer hints for updating pubspecs when using Future or - # Stream and not importing dart:async - # Please see https://github.com/flutter/flutter/pull/24528 for details. - sdk_version_async_exported_from_core: ignore # TODO(https://github.com/flutter/flutter/issues/74381): # Clean up existing unnecessary imports, and remove line to ignore. unnecessary_import: ignore @@ -75,7 +71,7 @@ linter: - avoid_escaping_inner_quotes - avoid_field_initializers_in_const_classes - avoid_function_literals_in_foreach_calls - # - avoid_implementing_value_types # not yet tested + - avoid_implementing_value_types - avoid_init_to_null # - avoid_js_rounded_ints # only useful when targeting JS runtime - avoid_null_checks_in_equality_operators diff --git a/ios/Podfile b/ios/Podfile index c2786089e..9261caf22 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -43,6 +43,8 @@ post_install do |installer| if config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'].to_f < 9.0 config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '9.0' end + # https://github.com/flutter/flutter/issues/90504 + config.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'i386' end end end diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 7c4c40b6e..167f512cd 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -249,7 +249,7 @@ "${BUILT_PRODUCTS_DIR}/sqflite/sqflite.framework", "${BUILT_PRODUCTS_DIR}/url_launcher/url_launcher.framework", "${BUILT_PRODUCTS_DIR}/vibration/vibration.framework", - "${BUILT_PRODUCTS_DIR}/webview_flutter/webview_flutter.framework", + "${BUILT_PRODUCTS_DIR}/webview_flutter_wkwebview/webview_flutter_wkwebview.framework", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( @@ -265,7 +265,7 @@ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sqflite.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/url_launcher.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/vibration.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/webview_flutter.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/webview_flutter_wkwebview.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; diff --git a/ios/Runner/LaunchScreen.storyboard b/ios/Runner/LaunchScreen.storyboard index 42c84fd50..933b65471 100644 --- a/ios/Runner/LaunchScreen.storyboard +++ b/ios/Runner/LaunchScreen.storyboard @@ -1,9 +1,10 @@ - + - + + @@ -23,7 +24,7 @@ - + @@ -37,5 +38,8 @@ + + + From b82f500b8e89cdce2b0841f91d7cb29a508e4ab6 Mon Sep 17 00:00:00 2001 From: weilu Date: Wed, 6 Oct 2021 10:32:23 +0800 Subject: [PATCH 056/206] =?UTF-8?q?=E9=80=82=E9=85=8D=E8=87=B3Android=2011?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/flutter-drive.yml | 2 +- android/app/build.gradle | 6 +++--- android/build.gradle | 4 ++-- android/gradle/wrapper/gradle-wrapper.properties | 2 +- docs/CHANGELOG.md | 4 ++++ ios/Podfile | 4 ++-- pubspec.yaml | 4 ++-- 7 files changed, 15 insertions(+), 11 deletions(-) diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index 2a4f44411..5fd6351d0 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -65,7 +65,7 @@ jobs: strategy: # set of different configurations of the virtual environment. matrix: - api-level: [21, 29] + api-level: [21, 30] target: [default] steps: - uses: actions/checkout@v2 diff --git a/android/app/build.gradle b/android/app/build.gradle index f3f2fe44f..dff92c0bf 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -31,7 +31,7 @@ def keystoreProperties = new Properties() keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) android { - compileSdkVersion 29 + compileSdkVersion 30 lintOptions { disable 'InvalidPackage' @@ -40,7 +40,7 @@ android { defaultConfig { applicationId "com.weilu.deer" minSdkVersion 21 - targetSdkVersion 29 + targetSdkVersion 30 versionCode flutterVersionCode.toInteger() versionName flutterVersionName } @@ -78,5 +78,5 @@ flutter { } dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" } diff --git a/android/build.gradle b/android/build.gradle index 1b6e53702..351cfa7e4 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,5 +1,5 @@ buildscript { - ext.kotlin_version = '1.4.30' + ext.kotlin_version = '1.5.21' repositories { // maven { url 'https://maven.aliyun.com/repository/public' }//jcenter // maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }//gradle-plugin @@ -11,7 +11,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:4.1.2' + classpath 'com.android.tools.build:gradle:4.2.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index 3fad423d3..b3a19c113 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index f0d3e1c38..9a2e2a07c 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,5 +1,9 @@ # Change Log: +## 1.2.1 + +* Android 11 + ## 1.2.0 * 迁移到空安全。 diff --git a/ios/Podfile b/ios/Podfile index 9261caf22..8794b7072 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -43,8 +43,8 @@ post_install do |installer| if config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'].to_f < 9.0 config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '9.0' end - # https://github.com/flutter/flutter/issues/90504 - config.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'i386' + # https://github.com/flutter/flutter/issues/90504 #84562 + config.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'arm64 i386' end end end diff --git a/pubspec.yaml b/pubspec.yaml index 62427f3be..f6b4c8dc1 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,7 +1,7 @@ name: flutter_deer description: Flutter Deer -version: 1.2.0+18 +version: 1.2.1+19 # 唯鹿 homepage: https://weilu.blog.csdn.net/ @@ -67,7 +67,7 @@ dependencies: # 高德2D地图插件(支持Web) https://github.com/simplezhli/flutter_2d_amap flutter_2d_amap: git: - ref: '3d4d188' + ref: '02a0be19' url: 'https://github.com/simplezhli/flutter_2d_amap.git' # demo 用到的库 # 刮刮卡 https://github.com/vintage/scratcher From 53ba1aa7c58e5360d01e85040473e6d1dd68b6f4 Mon Sep 17 00:00:00 2001 From: hkhere <33268704+hkhere@users.noreply.github.com> Date: Wed, 27 Oct 2021 10:01:15 +0800 Subject: [PATCH 057/206] fix: body evaluated outside `runZonedGuarded` --- lib/main.dart | 3 ++- lib/util/handle_error_utils.dart | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 2b208d636..ed6908f34 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -41,7 +41,7 @@ Future main() async { /// 1.22 预览功能: 在输入频率与显示刷新率不匹配情况下提供平滑的滚动效果 // GestureBinding.instance?.resamplingEnabled = true; /// 异常处理 - handleError(runApp(MyApp())); + handleError(() => runApp(MyApp())); /// 隐藏状态栏。为启动页、引导页设置。完成后修改回显示状态栏。 SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: [SystemUiOverlay.bottom]); @@ -140,6 +140,7 @@ class MyApp extends StatelessWidget { // checkerboardRasterCacheImages: true, // showSemanticsDebugger: true, // 显示语义视图 // checkerboardOffscreenLayers: true, // 检查离屏渲染 + theme: theme ?? provider.getTheme(), darkTheme: provider.getTheme(isDarkMode: true), themeMode: provider.getThemeMode(), diff --git a/lib/util/handle_error_utils.dart b/lib/util/handle_error_utils.dart index 935c24717..effee0d46 100644 --- a/lib/util/handle_error_utils.dart +++ b/lib/util/handle_error_utils.dart @@ -4,7 +4,7 @@ import 'package:flutter/widgets.dart'; import 'package:flutter_deer/res/constant.dart'; /// 捕获全局异常,进行统一处理。 -void handleError(void body) { +void handleError(void Function() body) { /// 重写Flutter异常回调 FlutterError.onError FlutterError.onError = (FlutterErrorDetails details) { if (!Constant.inProduction) { @@ -17,7 +17,7 @@ void handleError(void body) { }; /// 使用runZonedGuarded捕获Flutter未捕获的异常 - runZonedGuarded(() => body, (Object error, StackTrace stackTrace) async { + runZonedGuarded(body, (Object error, StackTrace stackTrace) async { await _reportError(error, stackTrace); }); From 1848e5ed73745789f74e311668c89be2f5148783 Mon Sep 17 00:00:00 2001 From: weilu Date: Mon, 1 Nov 2021 21:23:56 +0800 Subject: [PATCH 058/206] qr_code_scanner 0.6.0 --- lib/goods/page/qr_code_scanner_page.dart | 2 +- pubspec.yaml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/goods/page/qr_code_scanner_page.dart b/lib/goods/page/qr_code_scanner_page.dart index 510828bdc..d4327aa39 100644 --- a/lib/goods/page/qr_code_scanner_page.dart +++ b/lib/goods/page/qr_code_scanner_page.dart @@ -84,7 +84,7 @@ class _QrCodeScannerPageState extends State { controller.scannedDataStream.listen((scanData) { /// 避免扫描结果多次回调 controller.dispose(); - NavigatorUtils.goBackWithParams(context, scanData.code); + NavigatorUtils.goBackWithParams(context, scanData.code ?? ''); }); } diff --git a/pubspec.yaml b/pubspec.yaml index f6b4c8dc1..74258fd11 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -23,7 +23,7 @@ dependencies: # Toast插件 https://github.com/OpenFlutter/flutter_oktoast oktoast: ^3.1.3+1 # 网络库 https://github.com/flutterchina/dio - dio: ^4.0.0 + dio: ^4.0.1 # https://github.com/ReactiveX/rxdart rxdart: ^0.27.2 # Dart 常用工具类库 https://github.com/Sky24n/common_utils @@ -55,13 +55,13 @@ dependencies: # 状态管理 https://github.com/rrousselGit/provider provider: ^6.0.1 # 扫码 https://github.com/juliuscanute/qr_code_scanner - qr_code_scanner: 0.5.2 + qr_code_scanner: 0.6.0 # App Shortcuts https://github.com/flutter/plugins/tree/master/packages/quick_actions quick_actions: 0.6.0+7 # 振动(支持Web) https://github.com/benjamindean/flutter_vibration vibration: ^1.7.4-nullsafety.0 # 获取当前设备信息 https://github.com/fluttercommunity/plus_plugins/tree/main/packages/device_info_plus - device_info_plus: 2.2.0 + device_info_plus: 3.1.0 # 改变桌面端窗口大小(MacOS/Linux/Windows) https://github.com/mix1009/desktop_window desktop_window: 0.4.0 # 高德2D地图插件(支持Web) https://github.com/simplezhli/flutter_2d_amap From 5392f104f78deadced78776609079c173fdcc08a Mon Sep 17 00:00:00 2001 From: weilu Date: Sat, 6 Nov 2021 14:20:06 +0800 Subject: [PATCH 059/206] =?UTF-8?q?=E4=BE=9D=E8=B5=96=E5=8D=87=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pubspec.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pubspec.yaml b/pubspec.yaml index 74258fd11..0cf9ebd16 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -21,7 +21,7 @@ dependencies: # Localization https://github.com/dart-lang/intl intl: ^0.17.0 # Toast插件 https://github.com/OpenFlutter/flutter_oktoast - oktoast: ^3.1.3+1 + oktoast: ^3.1.5 # 网络库 https://github.com/flutterchina/dio dio: ^4.0.1 # https://github.com/ReactiveX/rxdart @@ -39,7 +39,7 @@ dependencies: # 侧滑删除 https://github.com/letsar/flutter_slidable flutter_slidable: ^0.6.0 # WebView插件 https://github.com/flutter/plugins/tree/master/packages/webview_flutter - webview_flutter: 2.1.1 + webview_flutter: 2.3.0 # 处理键盘事件 https://github.com/diegoveloper/flutter_keyboard_actions keyboard_actions: ^3.4.4 # 列表悬浮头 https://github.com/fluttercommunity/flutter_sticky_headers @@ -49,19 +49,19 @@ dependencies: # 路由框架 https://github.com/theyakka/fluro fluro: ^2.0.3 # 图片缓存 https://github.com/renefloor/flutter_cached_network_image - cached_network_image: ^3.1.0 + cached_network_image: ^3.1.0+1 # 格式化String https://github.com/Naddiseo/dart-sprintf sprintf: ^6.0.0 # 状态管理 https://github.com/rrousselGit/provider provider: ^6.0.1 # 扫码 https://github.com/juliuscanute/qr_code_scanner - qr_code_scanner: 0.6.0 + qr_code_scanner: 0.6.1 # App Shortcuts https://github.com/flutter/plugins/tree/master/packages/quick_actions quick_actions: 0.6.0+7 # 振动(支持Web) https://github.com/benjamindean/flutter_vibration vibration: ^1.7.4-nullsafety.0 # 获取当前设备信息 https://github.com/fluttercommunity/plus_plugins/tree/main/packages/device_info_plus - device_info_plus: 3.1.0 + device_info_plus: 3.1.1 # 改变桌面端窗口大小(MacOS/Linux/Windows) https://github.com/mix1009/desktop_window desktop_window: 0.4.0 # 高德2D地图插件(支持Web) https://github.com/simplezhli/flutter_2d_amap From f33378a5353dedb9a507691f163f875fbab0dd99 Mon Sep 17 00:00:00 2001 From: weilu Date: Sat, 27 Nov 2021 21:27:30 +0800 Subject: [PATCH 060/206] =?UTF-8?q?queries=E8=A1=A5=E5=85=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- android/app/src/main/AndroidManifest.xml | 14 ++++++++++++++ pubspec.yaml | 10 +++++----- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 4b3444739..6e0a03fc4 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -3,6 +3,20 @@ + + + + + + + + + + + + + + diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 9a2e2a07c..600d56587 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,8 +1,13 @@ # Change Log: +## 1.2.2 + +* 适配Android 12。 +* Flutter SDK升至3.0.0。 + ## 1.2.1 -* Android 11 +* 适配Android 11。 ## 1.2.0 diff --git a/pubspec.yaml b/pubspec.yaml index abb3a163b..0c96d27ca 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,7 +1,7 @@ name: flutter_deer description: Flutter Deer -version: 1.2.1+19 +version: 1.2.2+20 # 唯鹿 homepage: https://weilu.blog.csdn.net/ @@ -37,7 +37,7 @@ dependencies: # 图片选择插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/image_picker image_picker: 0.8.5+3 # 侧滑删除 https://github.com/letsar/flutter_slidable - flutter_slidable: ^1.3.0 + flutter_slidable: ^2.0.0 # WebView插件 https://github.com/flutter/plugins/tree/master/packages/webview_flutter webview_flutter: 3.0.4 # 处理键盘事件 https://github.com/diegoveloper/flutter_keyboard_actions From 414d13e5f52562e26ee723790a60b8f8ef3f71c4 Mon Sep 17 00:00:00 2001 From: weilu Date: Fri, 22 Jul 2022 21:03:31 +0800 Subject: [PATCH 106/206] flutter 3.0.4 --- .github/workflows/flutter-drive.yml | 6 +++--- README.md | 12 ++++++------ lib/home/splash_page.dart | 2 +- lib/setting/widgets/update_dialog.dart | 2 +- pubspec.yaml | 21 +++++++++++---------- 5 files changed, 22 insertions(+), 21 deletions(-) diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index 8e8de67f9..2e9bfe7bf 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -53,7 +53,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v1 with: - flutter-version: '3.0.1' + flutter-version: '3.0.4' channel: 'stable' # or: 'dev' or 'beta' - run: "flutter clean" - name: "Run Flutter Driver tests" @@ -76,7 +76,7 @@ jobs: java-version: 1.11 - uses: subosito/flutter-action@v1 with: - flutter-version: '3.0.1' + flutter-version: '3.0.4' channel: 'stable' # or: 'dev' or 'beta' - name: "Run Flutter Driver tests" # GitHub Action for installing, configuring and running Android Emulators (work only Mac OS) @@ -101,7 +101,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v1 with: - flutter-version: '3.0.1' + flutter-version: '3.0.4' channel: 'stable' - run: "flutter pub get" - name: "Run Flutter Accessibility Tests" diff --git a/README.md b/README.md index d573593a8..1557b616d 100644 --- a/README.md +++ b/README.md @@ -66,9 +66,9 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ [![Build Status](https://github.com/simplezhli/flutter_deer/workflows/flutter_deer%20driver/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions?query=workflow%3A%22flutter_deer+driver%22+branch%3Amaster) - 1. Flutter version 3.0.1 + 1. Flutter version 3.0.4 - 2. Dart version 2.17.1 + 2. Dart version 2.17.5 ## 注意事项 @@ -79,7 +79,7 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ - 项目运行有问题可以在[iOS问题汇总](./docs/iOS问题汇总.md)、[Android问题汇总](./docs/Android问题汇总.md)中尝试寻找解决办法。 - 由于部分插件的原因,本项目在Windows、macOS仅做预览(主要为原生功能方面,UI问题不大)。有兴趣的可自行运行体验。 - + - 可以执行集成测试命令`flutter drive --target=test_driver/driver.dart` 查看功能演示。 - 因为页面有点多,一开始可能会导致页面无法与设计图对应上。我在代码注释中有添加设计图的相对路径,可以搜索或查找到对应页面,希望对你有帮助。 @@ -123,7 +123,7 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ - [【译】学习Flutter中新的Navigator和Router系统](https://weilu.blog.csdn.net/article/details/108902282) - [【译】Flutter 2.2中的新功能](https://weilu.blog.csdn.net/article/details/117061293) - + ## 使用到的三方库 | 库 | 功能 | @@ -154,7 +154,7 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ | [vibration](https://github.com/benjamindean/flutter_vibration) | **振动** | | [lottie](https://github.com/xvrh/lottie-flutter) | **动画效果** | -详细内容可以参看[pubspec.yaml](https://github.com/simplezhli/flutter_deer/blob/master/pubspec.yaml)文件 +详细内容可以参看[pubspec.yaml](https://github.com/simplezhli/flutter_deer/blob/master/pubspec.yaml)文件 ## 后续计划: @@ -180,7 +180,7 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ ## 已知存在问题: -- 部分使用的到的三方库没有适配3.0.0,flutter_swiper_null_safety、flustars、azlistview(scrollable_positioned_list)。暂不影响运行,只是会有警告。 +- 部分使用的到的三方库没有适配3.0.0,flutter_swiper(flutter_swiper_null_safety_flutter3替代)、flustars(flustars_flutter3替代)、azlistview(升级scrollable_positioned_list)。 - 2.0.0 已知存在问题(#68571 #73351 #73388 #74890 #79773 #79931) diff --git a/lib/home/splash_page.dart b/lib/home/splash_page.dart index 86dfb12dc..4017006c1 100644 --- a/lib/home/splash_page.dart +++ b/lib/home/splash_page.dart @@ -12,7 +12,7 @@ import 'package:flutter_deer/util/image_utils.dart'; import 'package:flutter_deer/util/theme_utils.dart'; import 'package:flutter_deer/widgets/fractionally_aligned_sized_box.dart'; import 'package:flutter_deer/widgets/load_image.dart'; -import 'package:flutter_swiper_null_safety/flutter_swiper_null_safety.dart'; +import 'package:flutter_swiper_null_safety_flutter3/flutter_swiper_null_safety_flutter3.dart'; import 'package:quick_actions/quick_actions.dart'; import 'package:rxdart/rxdart.dart'; import 'package:sp_util/sp_util.dart'; diff --git a/lib/setting/widgets/update_dialog.dart b/lib/setting/widgets/update_dialog.dart index 48c136359..d4eddbda5 100644 --- a/lib/setting/widgets/update_dialog.dart +++ b/lib/setting/widgets/update_dialog.dart @@ -1,7 +1,7 @@ import 'dart:io'; import 'package:dio/dio.dart'; -import 'package:flustars/flustars.dart'; +import 'package:flustars_flutter3/flustars_flutter3.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; diff --git a/pubspec.yaml b/pubspec.yaml index 0c96d27ca..28304ce1f 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -29,9 +29,9 @@ dependencies: # Dart 常用工具类库 https://github.com/Sky24n/common_utils common_utils: 2.1.0 # Flutter 常用工具类库 https://github.com/Sky24n/flustars - flustars: ^2.0.1 - # Flutter 轮播图 https://github.com/lianyagang/flutter_swiper_null_safety - flutter_swiper_null_safety: ^1.0.2 # flutter_swiper很久不维护,可以使用空安全版本:flutter_swiper_null_safety + flustars_flutter3: ^3.0.0 # flustars很久不维护,可以使用这个替代 + # Flutter 轮播图 https://github.com/mdddj/flutter_swiper_null_safety + flutter_swiper_null_safety_flutter3: ^2.0.0 # flutter_swiper很久不维护,可以使用这个替代 # 启动URL的插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/url_launcher url_launcher: 6.1.2 # 图片选择插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/image_picker @@ -55,10 +55,10 @@ dependencies: # 状态管理 https://github.com/rrousselGit/provider provider: ^6.0.3 # 扫码 https://github.com/juliuscanute/qr_code_scanner - qr_code_scanner: - git: - url: https://github.com/xeinebiu/qr_code_scanner.git - ref: fix_break_changes_platform + qr_code_scanner: 1.0.0 + # git: + # url: https://github.com/xeinebiu/qr_code_scanner.git + # ref: fix_break_changes_platform # App Shortcuts https://github.com/flutter/plugins/tree/master/packages/quick_actions quick_actions: 0.6.0+11 # 振动(支持Web) https://github.com/benjamindean/flutter_vibration @@ -79,8 +79,9 @@ dependencies: lottie: ^1.3.0 # https://github.com/simplezhli/flutter_deer/issues/187 -#dependency_overrides: -# decimal: 1.5.0 +dependency_overrides: + scrollable_positioned_list: ^0.3.2 + dev_dependencies: # Widget测试 @@ -122,7 +123,7 @@ flutter: - assets/images/account/ - assets/images/statistic/ - assets/lottie/ - + # To add custom fonts to your application, add a fonts section here, # in this "flutter" section. Each entry in this list should have a # "family" key with the font family name, and a "fonts" key with a From dfcf84555e04a95fd47f0315fe3da7baa10976bb Mon Sep 17 00:00:00 2001 From: weilu Date: Sun, 7 Aug 2022 19:23:06 +0800 Subject: [PATCH 107/206] =?UTF-8?q?=E4=BE=9D=E8=B5=96=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pubspec.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pubspec.yaml b/pubspec.yaml index 28304ce1f..677c352ad 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -25,7 +25,7 @@ dependencies: # 网络库 https://github.com/flutterchina/dio dio: ^4.0.6 # https://github.com/ReactiveX/rxdart - rxdart: ^0.27.3 + rxdart: ^0.27.5 # Dart 常用工具类库 https://github.com/Sky24n/common_utils common_utils: 2.1.0 # Flutter 常用工具类库 https://github.com/Sky24n/flustars @@ -33,7 +33,7 @@ dependencies: # Flutter 轮播图 https://github.com/mdddj/flutter_swiper_null_safety flutter_swiper_null_safety_flutter3: ^2.0.0 # flutter_swiper很久不维护,可以使用这个替代 # 启动URL的插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/url_launcher - url_launcher: 6.1.2 + url_launcher: 6.1.5 # 图片选择插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/image_picker image_picker: 0.8.5+3 # 侧滑删除 https://github.com/letsar/flutter_slidable @@ -62,9 +62,9 @@ dependencies: # App Shortcuts https://github.com/flutter/plugins/tree/master/packages/quick_actions quick_actions: 0.6.0+11 # 振动(支持Web) https://github.com/benjamindean/flutter_vibration - vibration: ^1.7.4-nullsafety.0 + vibration: ^1.7.5 # 获取当前设备信息 https://github.com/fluttercommunity/plus_plugins/tree/main/packages/device_info_plus - device_info_plus: 4.0.0 + device_info_plus: 4.0.1 # 改变桌面端窗口大小(MacOS/Linux/Windows) https://github.com/mix1009/desktop_window desktop_window: 0.4.0 # 高德2D地图插件(支持Web) https://github.com/simplezhli/flutter_2d_amap @@ -76,7 +76,7 @@ dependencies: # 刮刮卡 https://github.com/vintage/scratcher scratcher: ^2.2.1 # 动画效果 https://github.com/xvrh/lottie-flutter - lottie: ^1.3.0 + lottie: ^1.4.1 # https://github.com/simplezhli/flutter_deer/issues/187 dependency_overrides: From d0003a0a09516ae129920e607e2ff38967dc3663 Mon Sep 17 00:00:00 2001 From: weilu Date: Fri, 2 Sep 2022 10:48:08 +0800 Subject: [PATCH 108/206] =?UTF-8?q?=E9=80=82=E9=85=8Dflutter=203.3.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- android/app/build.gradle | 2 +- ios/Flutter/Flutter.podspec | 8 ++++---- ios/Podfile | 2 +- ios/Runner.xcodeproj/project.pbxproj | 12 ++++++------ lib/account/page/add_withdrawal_account_page.dart | 2 +- lib/account/widgets/withdrawal_password_setting.dart | 10 +++++----- lib/goods/widgets/goods_add_menu.dart | 8 ++++---- lib/home/splash_page.dart | 4 ++-- lib/mvp/power_presenter.dart | 4 ++-- lib/util/change_notifier_manage.dart | 8 ++++---- pubspec.yaml | 4 ++-- 11 files changed, 32 insertions(+), 32 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 399bdc8ff..4ae10cc7a 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -31,7 +31,7 @@ def keystoreProperties = new Properties() keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) android { - compileSdkVersion 31 + compileSdkVersion 32 lintOptions { disable 'InvalidPackage' diff --git a/ios/Flutter/Flutter.podspec b/ios/Flutter/Flutter.podspec index 663d5b298..8ce439439 100644 --- a/ios/Flutter/Flutter.podspec +++ b/ios/Flutter/Flutter.podspec @@ -6,12 +6,12 @@ Pod::Spec.new do |s| s.name = 'Flutter' s.version = '1.0.0' - s.summary = 'High-performance, high-fidelity mobile apps.' - s.homepage = 'https://flutter.io' - s.license = { :type => 'MIT' } + s.summary = 'A UI toolkit for beautiful and fast apps.' + s.homepage = 'https://flutter.dev' + s.license = { :type => 'BSD' } s.author = { 'Flutter Dev Team' => 'flutter-dev@googlegroups.com' } s.source = { :git => 'https://github.com/flutter/engine', :tag => s.version.to_s } - s.ios.deployment_target = '9.0' + s.ios.deployment_target = '11.0' # Framework linking is handled by Flutter tooling, not CocoaPods. # Add a placeholder to satisfy `s.dependency 'Flutter'` plugin podspecs. s.vendored_frameworks = 'path/to/nothing' diff --git a/ios/Podfile b/ios/Podfile index 8794b7072..db9a5fd45 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -platform :ios, '9.0' +platform :ios, '11.0' # source 'https://github.com/CocoaPods/Specs.git' diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index b45c6498c..83ac4e64d 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -365,7 +365,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; @@ -390,7 +390,7 @@ "$(PROJECT_DIR)/Flutter", ); INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -456,7 +456,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -506,7 +506,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; @@ -529,7 +529,7 @@ "$(PROJECT_DIR)/Flutter", ); INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -564,7 +564,7 @@ "$(PROJECT_DIR)/Flutter", ); INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/lib/account/page/add_withdrawal_account_page.dart b/lib/account/page/add_withdrawal_account_page.dart index 7c6e9e203..a62ebb7bc 100644 --- a/lib/account/page/add_withdrawal_account_page.dart +++ b/lib/account/page/add_withdrawal_account_page.dart @@ -190,7 +190,7 @@ class _AddWithdrawalAccountPageState extends State { data: TextButtonThemeData( style: TextButton.styleFrom( // 文字颜色 - primary: Theme.of(context).primaryColor, + foregroundColor: Theme.of(context).primaryColor, // 按钮大小 minimumSize: Size.infinite, // 修改默认圆角 diff --git a/lib/account/widgets/withdrawal_password_setting.dart b/lib/account/widgets/withdrawal_password_setting.dart index fc3f15140..12cb77625 100644 --- a/lib/account/widgets/withdrawal_password_setting.dart +++ b/lib/account/widgets/withdrawal_password_setting.dart @@ -123,11 +123,6 @@ class _WithdrawalPasswordSettingState extends State { return; } - /// 点击时给予振动反馈 - if (!Device.isDesktop && (await Vibration.hasVibrator() ?? false)) { - Vibration.vibrate(duration: 10); - } - if (index == 11) { if (_index == 0) { return; @@ -156,6 +151,11 @@ class _WithdrawalPasswordSettingState extends State { setState(() { }); + + /// 点击时给予振动反馈 + if (!Device.isDesktop && (await Vibration.hasVibrator() ?? false)) { + Vibration.vibrate(duration: 10); + } }, ), ); diff --git a/lib/goods/widgets/goods_add_menu.dart b/lib/goods/widgets/goods_add_menu.dart index 320bae6fb..dc6a4718d 100644 --- a/lib/goods/widgets/goods_add_menu.dart +++ b/lib/goods/widgets/goods_add_menu.dart @@ -62,8 +62,8 @@ class _GoodsAddMenuState extends State with SingleTickerProviderSt icon: LoadAssetImage('goods/scanning', width: 16.0, height: 16.0, color: iconColor,), label: const Text('扫码添加'), style: TextButton.styleFrom( - primary: Theme.of(context).textTheme.bodyText2?.color, - onSurface: Theme.of(context).textTheme.bodyText2?.color?.withOpacity(0.12), + foregroundColor: Theme.of(context).textTheme.bodyText2?.color, + disabledForegroundColor: Theme.of(context).textTheme.bodyText2?.color?.withOpacity(0.12), backgroundColor: backgroundColor, shape: const RoundedRectangleBorder( borderRadius: BorderRadius.only(topLeft: Radius.circular(8.0), topRight: Radius.circular(8.0)), @@ -82,8 +82,8 @@ class _GoodsAddMenuState extends State with SingleTickerProviderSt icon: LoadAssetImage('goods/add2', width: 16.0, height: 16.0, color: iconColor,), label: const Text('添加商品'), style: TextButton.styleFrom( - primary: Theme.of(context).textTheme.bodyText2?.color, - onSurface: Theme.of(context).textTheme.bodyText2?.color?.withOpacity(0.12), + foregroundColor: Theme.of(context).textTheme.bodyText2?.color, + disabledForegroundColor: Theme.of(context).textTheme.bodyText2?.color?.withOpacity(0.12), backgroundColor: backgroundColor, shape: const RoundedRectangleBorder( borderRadius: BorderRadius.only(bottomLeft: Radius.circular(8.0), bottomRight: Radius.circular(8.0)), diff --git a/lib/home/splash_page.dart b/lib/home/splash_page.dart index 4017006c1..92c19c54c 100644 --- a/lib/home/splash_page.dart +++ b/lib/home/splash_page.dart @@ -39,10 +39,10 @@ class _SplashPageState extends State { await Device.initDeviceInfo(); if (SpUtil.getBool(Constant.keyGuide, defValue: true)!) { /// 预先缓存图片,避免直接使用时因为首次加载造成闪动 - void _precacheImage(String image) { + void precacheImages(String image) { precacheImage(ImageUtils.getAssetImage(image, format: ImageFormat.webp), context); } - _guideList.forEach(_precacheImage); + _guideList.forEach(precacheImages); } _initSplash(); }); diff --git a/lib/mvp/power_presenter.dart b/lib/mvp/power_presenter.dart index 584c35775..7d1a48605 100644 --- a/lib/mvp/power_presenter.dart +++ b/lib/mvp/power_presenter.dart @@ -42,10 +42,10 @@ class PowerPresenter extends BasePresenter { @override void didUpdateWidgets(W oldWidget) { - void _didUpdateWidgets(BasePagePresenter presenter) { + void didUpdateWidgets(BasePagePresenter presenter) { presenter.didUpdateWidgets(oldWidget); } - _presenters.forEach(_didUpdateWidgets); + _presenters.forEach(didUpdateWidgets); } @override diff --git a/lib/util/change_notifier_manage.dart b/lib/util/change_notifier_manage.dart index ac51a0ee3..90d4aa306 100644 --- a/lib/util/change_notifier_manage.dart +++ b/lib/util/change_notifier_manage.dart @@ -52,11 +52,11 @@ mixin ChangeNotifierMixin on State { _map?.forEach((changeNotifier, callbacks) { if (callbacks != null && callbacks.isNotEmpty) { - void _addListener(VoidCallback callback) { + void addListener(VoidCallback callback) { changeNotifier?.addListener(callback); } - callbacks.forEach(_addListener); + callbacks.forEach(addListener); } }); super.initState(); @@ -66,11 +66,11 @@ mixin ChangeNotifierMixin on State { void dispose() { _map?.forEach((changeNotifier, callbacks) { if (callbacks != null && callbacks.isNotEmpty) { - void _removeListener(VoidCallback callback) { + void removeListener(VoidCallback callback) { changeNotifier?.removeListener(callback); } - callbacks.forEach(_removeListener); + callbacks.forEach(removeListener); } changeNotifier?.dispose(); }); diff --git a/pubspec.yaml b/pubspec.yaml index 677c352ad..e5356ce84 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -60,11 +60,11 @@ dependencies: # url: https://github.com/xeinebiu/qr_code_scanner.git # ref: fix_break_changes_platform # App Shortcuts https://github.com/flutter/plugins/tree/master/packages/quick_actions - quick_actions: 0.6.0+11 + quick_actions: 1.0.0 # 振动(支持Web) https://github.com/benjamindean/flutter_vibration vibration: ^1.7.5 # 获取当前设备信息 https://github.com/fluttercommunity/plus_plugins/tree/main/packages/device_info_plus - device_info_plus: 4.0.1 + device_info_plus: 4.1.2 # 改变桌面端窗口大小(MacOS/Linux/Windows) https://github.com/mix1009/desktop_window desktop_window: 0.4.0 # 高德2D地图插件(支持Web) https://github.com/simplezhli/flutter_2d_amap From 0d52ec6cc4eb25e204fb611da930ada83d15b9fe Mon Sep 17 00:00:00 2001 From: weilu Date: Sun, 4 Sep 2022 17:46:50 +0800 Subject: [PATCH 109/206] flutter 3.3.0 --- .github/ISSUE_TEMPLATE/deer-issue-template.md | 6 +++--- .github/workflows/flutter-drive.yml | 6 +++--- .github/workflows/flutter-web-deploy.yml | 2 +- README-EN.md | 4 ++-- README.md | 4 ++-- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/deer-issue-template.md b/.github/ISSUE_TEMPLATE/deer-issue-template.md index 13fd5d6e2..4e4b95bdf 100644 --- a/.github/ISSUE_TEMPLATE/deer-issue-template.md +++ b/.github/ISSUE_TEMPLATE/deer-issue-template.md @@ -9,10 +9,10 @@ assignees: '' ### 运行环境 ### -- [x] 电脑系统:如:`Windows 10` -- [x] 设备型号:如:`小米MIX 2s` +- [x] 电脑系统:如:`Windows 11` +- [x] 设备型号:如:`小米12` - [x] 设备系统版本:如 `Android 12` -- [x] Flutter 版本:如 `3.0.1` +- [x] Flutter 版本:如 `3.3.0` ### 具体问题描述 ### diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index 2e9bfe7bf..4a762307f 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -53,7 +53,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v1 with: - flutter-version: '3.0.4' + flutter-version: '3.3.0' channel: 'stable' # or: 'dev' or 'beta' - run: "flutter clean" - name: "Run Flutter Driver tests" @@ -76,7 +76,7 @@ jobs: java-version: 1.11 - uses: subosito/flutter-action@v1 with: - flutter-version: '3.0.4' + flutter-version: '3.3.0' channel: 'stable' # or: 'dev' or 'beta' - name: "Run Flutter Driver tests" # GitHub Action for installing, configuring and running Android Emulators (work only Mac OS) @@ -101,7 +101,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v1 with: - flutter-version: '3.0.4' + flutter-version: '3.3.0' channel: 'stable' - run: "flutter pub get" - name: "Run Flutter Accessibility Tests" diff --git a/.github/workflows/flutter-web-deploy.yml b/.github/workflows/flutter-web-deploy.yml index ae9247fa0..035994648 100644 --- a/.github/workflows/flutter-web-deploy.yml +++ b/.github/workflows/flutter-web-deploy.yml @@ -14,7 +14,7 @@ jobs: - uses: actions/checkout@v2.3.1 - uses: subosito/flutter-action@v1 with: - flutter-version: '3.0.0' + flutter-version: '3.3.0' channel: 'stable' - name: "Web Build 🔧" run: | diff --git a/README-EN.md b/README-EN.md index d62ec9311..e3d3b588b 100644 --- a/README-EN.md +++ b/README-EN.md @@ -61,9 +61,9 @@ Web:https://simplezhli.github.io/flutter_deer/ [![Build Status](https://github.com/simplezhli/flutter_deer/workflows/flutter_deer%20driver/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions?query=workflow%3A%22flutter_deer+driver%22+branch%3Amaster) - 1. Flutter version 3.0.1 + 1. Flutter version 3.3.0 - 2. Dart version 2.17.1 + 2. Dart version 2.18.0 ## Precautions diff --git a/README.md b/README.md index 1557b616d..b75908f41 100644 --- a/README.md +++ b/README.md @@ -66,9 +66,9 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ [![Build Status](https://github.com/simplezhli/flutter_deer/workflows/flutter_deer%20driver/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions?query=workflow%3A%22flutter_deer+driver%22+branch%3Amaster) - 1. Flutter version 3.0.4 + 1. Flutter version 3.3.0 - 2. Dart version 2.17.5 + 2. Dart version 2.18.0 ## 注意事项 From 32d2714cec4654cecab2803f04c52b20cbdf82d2 Mon Sep 17 00:00:00 2001 From: weilu Date: Sun, 18 Sep 2022 17:56:22 +0800 Subject: [PATCH 110/206] flutter 3.3.2 --- .github/ISSUE_TEMPLATE/deer-issue-template.md | 2 +- .github/workflows/flutter-drive.yml | 6 +++--- .github/workflows/flutter-web-deploy.yml | 4 ++-- README-EN.md | 4 ++-- README.md | 4 ++-- analysis_options.yaml | 4 ++-- pubspec.yaml | 4 ++-- 7 files changed, 14 insertions(+), 14 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/deer-issue-template.md b/.github/ISSUE_TEMPLATE/deer-issue-template.md index 4e4b95bdf..f932971bc 100644 --- a/.github/ISSUE_TEMPLATE/deer-issue-template.md +++ b/.github/ISSUE_TEMPLATE/deer-issue-template.md @@ -12,7 +12,7 @@ assignees: '' - [x] 电脑系统:如:`Windows 11` - [x] 设备型号:如:`小米12` - [x] 设备系统版本:如 `Android 12` -- [x] Flutter 版本:如 `3.3.0` +- [x] Flutter 版本:如 `3.3.2` ### 具体问题描述 ### diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index 4a762307f..f3004b3f6 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -53,7 +53,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v1 with: - flutter-version: '3.3.0' + flutter-version: '3.3.2' channel: 'stable' # or: 'dev' or 'beta' - run: "flutter clean" - name: "Run Flutter Driver tests" @@ -76,7 +76,7 @@ jobs: java-version: 1.11 - uses: subosito/flutter-action@v1 with: - flutter-version: '3.3.0' + flutter-version: '3.3.2' channel: 'stable' # or: 'dev' or 'beta' - name: "Run Flutter Driver tests" # GitHub Action for installing, configuring and running Android Emulators (work only Mac OS) @@ -101,7 +101,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v1 with: - flutter-version: '3.3.0' + flutter-version: '3.3.2' channel: 'stable' - run: "flutter pub get" - name: "Run Flutter Accessibility Tests" diff --git a/.github/workflows/flutter-web-deploy.yml b/.github/workflows/flutter-web-deploy.yml index 035994648..ee0a3997f 100644 --- a/.github/workflows/flutter-web-deploy.yml +++ b/.github/workflows/flutter-web-deploy.yml @@ -5,7 +5,7 @@ name: flutter_deer web deploy on: push: paths: - - 'pubspec1.yaml' + - 'pubspec.yaml' jobs: web_build_and_deploy: @@ -14,7 +14,7 @@ jobs: - uses: actions/checkout@v2.3.1 - uses: subosito/flutter-action@v1 with: - flutter-version: '3.3.0' + flutter-version: '3.3.2' channel: 'stable' - name: "Web Build 🔧" run: | diff --git a/README-EN.md b/README-EN.md index e3d3b588b..8d0f23c41 100644 --- a/README-EN.md +++ b/README-EN.md @@ -61,9 +61,9 @@ Web:https://simplezhli.github.io/flutter_deer/ [![Build Status](https://github.com/simplezhli/flutter_deer/workflows/flutter_deer%20driver/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions?query=workflow%3A%22flutter_deer+driver%22+branch%3Amaster) - 1. Flutter version 3.3.0 + 1. Flutter version 3.3.2 - 2. Dart version 2.18.0 + 2. Dart version 2.18.1 ## Precautions diff --git a/README.md b/README.md index b75908f41..5f362dfaa 100644 --- a/README.md +++ b/README.md @@ -66,9 +66,9 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ [![Build Status](https://github.com/simplezhli/flutter_deer/workflows/flutter_deer%20driver/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions?query=workflow%3A%22flutter_deer+driver%22+branch%3Amaster) - 1. Flutter version 3.3.0 + 1. Flutter version 3.3.2 - 2. Dart version 2.18.0 + 2. Dart version 2.18.1 ## 注意事项 diff --git a/analysis_options.yaml b/analysis_options.yaml index 789bdec2e..ca8ea507f 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -76,7 +76,7 @@ linter: - avoid_relative_lib_imports - avoid_renaming_method_parameters - avoid_return_types_on_setters - # - avoid_returning_null # still violated by some pre-nnbd code that we haven't yet migrated + - avoid_returning_null - avoid_returning_null_for_future - avoid_returning_null_for_void # - avoid_returning_this # there are enough valid reasons to return `this` that this lint ends up with too many false positives @@ -99,7 +99,7 @@ linter: - cast_nullable_to_non_nullable # - close_sinks # not reliable enough # - comment_references # blocked on https://github.com/dart-lang/linter/issues/1142 - # - conditional_uri_does_not_exist # not yet tested + - conditional_uri_does_not_exist # - constant_identifier_names # needs an opt-out https://github.com/dart-lang/linter/issues/204 - control_flow_in_finally - curly_braces_in_flow_control_structures # not required by flutter style, but developer-facing code should have this on diff --git a/pubspec.yaml b/pubspec.yaml index e5356ce84..ba6ae4c06 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -21,7 +21,7 @@ dependencies: # Localization https://github.com/dart-lang/intl intl: ^0.17.0 # Toast插件 https://github.com/OpenFlutter/flutter_oktoast - oktoast: ^3.2.0 + oktoast: ^3.3.0 # 网络库 https://github.com/flutterchina/dio dio: ^4.0.6 # https://github.com/ReactiveX/rxdart @@ -31,7 +31,7 @@ dependencies: # Flutter 常用工具类库 https://github.com/Sky24n/flustars flustars_flutter3: ^3.0.0 # flustars很久不维护,可以使用这个替代 # Flutter 轮播图 https://github.com/mdddj/flutter_swiper_null_safety - flutter_swiper_null_safety_flutter3: ^2.0.0 # flutter_swiper很久不维护,可以使用这个替代 + flutter_swiper_null_safety_flutter3: ^3.0.0 # flutter_swiper很久不维护,可以使用这个替代 # 启动URL的插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/url_launcher url_launcher: 6.1.5 # 图片选择插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/image_picker From 61609322f6c2e9277955be1fceba70afb469dd9d Mon Sep 17 00:00:00 2001 From: weilu Date: Sun, 18 Sep 2022 19:02:36 +0800 Subject: [PATCH 111/206] fix 'Bad CPU type in executable' --- .github/workflows/flutter-drive.yml | 3 +++ .github/workflows/flutter-web-deploy.yml | 1 + 2 files changed, 4 insertions(+) diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index f3004b3f6..f456e7814 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -55,6 +55,7 @@ jobs: with: flutter-version: '3.3.2' channel: 'stable' # or: 'dev' or 'beta' + architecture: x64 - run: "flutter clean" - name: "Run Flutter Driver tests" run: "flutter drive --target=test_driver/driver.dart" @@ -78,6 +79,7 @@ jobs: with: flutter-version: '3.3.2' channel: 'stable' # or: 'dev' or 'beta' + architecture: x64 - name: "Run Flutter Driver tests" # GitHub Action for installing, configuring and running Android Emulators (work only Mac OS) # https://github.com/marketplace/actions/android-emulator-runner @@ -103,6 +105,7 @@ jobs: with: flutter-version: '3.3.2' channel: 'stable' + architecture: x64 - run: "flutter pub get" - name: "Run Flutter Accessibility Tests" run: "flutter test test/accessibility_test.dart" \ No newline at end of file diff --git a/.github/workflows/flutter-web-deploy.yml b/.github/workflows/flutter-web-deploy.yml index ee0a3997f..5b05e5bd4 100644 --- a/.github/workflows/flutter-web-deploy.yml +++ b/.github/workflows/flutter-web-deploy.yml @@ -16,6 +16,7 @@ jobs: with: flutter-version: '3.3.2' channel: 'stable' + architecture: x64 - name: "Web Build 🔧" run: | flutter pub get From c1a0bc6087a310778111b489e7f86f7e5e8d48ab Mon Sep 17 00:00:00 2001 From: weilu Date: Sun, 18 Sep 2022 19:13:31 +0800 Subject: [PATCH 112/206] fix 'Bad CPU type in executable' --- .github/workflows/flutter-drive.yml | 6 +++--- .github/workflows/flutter-web-deploy.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index f456e7814..9cde52f19 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -51,7 +51,7 @@ jobs: - uses: actions/checkout@v2 # Sets up a flutter environment. # https://github.com/marketplace/actions/flutter-action - - uses: subosito/flutter-action@v1 + - uses: subosito/flutter-action@v2 with: flutter-version: '3.3.2' channel: 'stable' # or: 'dev' or 'beta' @@ -75,7 +75,7 @@ jobs: uses: actions/setup-java@v1 with: java-version: 1.11 - - uses: subosito/flutter-action@v1 + - uses: subosito/flutter-action@v2 with: flutter-version: '3.3.2' channel: 'stable' # or: 'dev' or 'beta' @@ -101,7 +101,7 @@ jobs: - uses: actions/checkout@v2 # Setup a flutter environment. # https://github.com/marketplace/actions/flutter-action - - uses: subosito/flutter-action@v1 + - uses: subosito/flutter-action@v2 with: flutter-version: '3.3.2' channel: 'stable' diff --git a/.github/workflows/flutter-web-deploy.yml b/.github/workflows/flutter-web-deploy.yml index 5b05e5bd4..b5d7008b1 100644 --- a/.github/workflows/flutter-web-deploy.yml +++ b/.github/workflows/flutter-web-deploy.yml @@ -12,7 +12,7 @@ jobs: runs-on: macos-latest steps: - uses: actions/checkout@v2.3.1 - - uses: subosito/flutter-action@v1 + - uses: subosito/flutter-action@v2 with: flutter-version: '3.3.2' channel: 'stable' From 3bfd0acbc574f5885bdf9d05b95b4dd479582b29 Mon Sep 17 00:00:00 2001 From: weilu Date: Thu, 22 Sep 2022 23:15:22 +0800 Subject: [PATCH 113/206] fix #220 --- lib/net/base_entity.dart | 7 ++- lib/setting/page/setting_page.dart | 93 ++++++++++++++++-------------- 2 files changed, 55 insertions(+), 45 deletions(-) diff --git a/lib/net/base_entity.dart b/lib/net/base_entity.dart index 0c9376172..0073e40c0 100644 --- a/lib/net/base_entity.dart +++ b/lib/net/base_entity.dart @@ -9,7 +9,7 @@ class BaseEntity { code = json[Constant.code] as int?; message = json[Constant.message] as String; if (json.containsKey(Constant.data)) { - data = _generateOBJ(json[Constant.data] as Object); + data = _generateOBJ(json[Constant.data] as Object?); } } @@ -17,7 +17,10 @@ class BaseEntity { late String message; T? data; - T? _generateOBJ(Object json) { + T? _generateOBJ(Object? json) { + if (json == null) { + return null; + } if (T.toString() == 'String') { return json.toString() as T; } else if (T.toString() == 'Map') { diff --git a/lib/setting/page/setting_page.dart b/lib/setting/page/setting_page.dart index a375a9047..2ab7f295a 100644 --- a/lib/setting/page/setting_page.dart +++ b/lib/setting/page/setting_page.dart @@ -3,12 +3,15 @@ import 'package:flutter_deer/demo/demo_page.dart'; import 'package:flutter_deer/res/constant.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; +import 'package:flutter_deer/setting/provider/locale_provider.dart'; +import 'package:flutter_deer/setting/provider/theme_provider.dart'; import 'package:flutter_deer/setting/widgets/exit_dialog.dart'; import 'package:flutter_deer/setting/widgets/update_dialog.dart'; import 'package:flutter_deer/util/app_navigator.dart'; import 'package:flutter_deer/util/device_utils.dart'; import 'package:flutter_deer/widgets/click_item.dart'; import 'package:flutter_deer/widgets/my_app_bar.dart'; +import 'package:provider/provider.dart'; import 'package:sp_util/sp_util.dart'; import '../setting_router.dart'; @@ -30,49 +33,53 @@ class _SettingPageState extends State { appBar: const MyAppBar( centerTitle: '设置', ), - body: Column( - children: [ - Gaps.vGap5, - ClickItem( - title: '账号管理', - onTap: () => NavigatorUtils.push(context, SettingRouter.accountManagerPage), - ), - if (Device.isMobile) ClickItem( - title: '清除缓存', - content: '23.5MB', - onTap: () {}, - ), - ClickItem( - title: '夜间模式', - content: _getCurrentTheme(), - onTap: () => NavigatorUtils.push(context, SettingRouter.themePage), - ), - ClickItem( - title: '多语言', - content: _getCurrentLocale(), - onTap: () => NavigatorUtils.push(context, SettingRouter.localePage), - ), - if (Device.isMobile) ClickItem( - title: '检查更新', - onTap: _showUpdateDialog, - ), - ClickItem( - title: '关于我们', - onTap: () => NavigatorUtils.push(context, SettingRouter.aboutPage), - ), - ClickItem( - title: '退出当前账号', - onTap: _showExitDialog, - ), - if (Device.isMobile) ClickItem( - title: 'Deer Web版', - onTap: () => NavigatorUtils.goWebViewPage(context, 'Flutter Deer', 'https://simplezhli.github.io/flutter_deer/'), - ), - ClickItem( - title: '其他Demo', - onTap: () => AppNavigator.push(context, const DemoPage()), - ), - ], + body: Consumer2( + builder: (_, ThemeProvider provider, LocaleProvider localeProvider, __) { + return Column( + children: [ + Gaps.vGap5, + ClickItem( + title: '账号管理', + onTap: () => NavigatorUtils.push(context, SettingRouter.accountManagerPage), + ), + if (Device.isMobile) ClickItem( + title: '清除缓存', + content: '23.5MB', + onTap: () {}, + ), + ClickItem( + title: '夜间模式', + content: _getCurrentTheme(), + onTap: () => NavigatorUtils.push(context, SettingRouter.themePage), + ), + ClickItem( + title: '多语言', + content: _getCurrentLocale(), + onTap: () => NavigatorUtils.push(context, SettingRouter.localePage), + ), + if (Device.isMobile) ClickItem( + title: '检查更新', + onTap: _showUpdateDialog, + ), + ClickItem( + title: '关于我们', + onTap: () => NavigatorUtils.push(context, SettingRouter.aboutPage), + ), + ClickItem( + title: '退出当前账号', + onTap: _showExitDialog, + ), + if (Device.isMobile) ClickItem( + title: 'Deer Web版', + onTap: () => NavigatorUtils.goWebViewPage(context, 'Flutter Deer', 'https://simplezhli.github.io/flutter_deer/'), + ), + ClickItem( + title: '其他Demo', + onTap: () => AppNavigator.push(context, const DemoPage()), + ), + ], + ); + }, ), ); } From 273ef07439fb6c5b341170fbb60db17d4fbb4279 Mon Sep 17 00:00:00 2001 From: weilu Date: Fri, 30 Sep 2022 21:33:22 +0800 Subject: [PATCH 114/206] =?UTF-8?q?=E8=BF=81=E7=A7=BB=E5=BA=9F=E5=BC=83?= =?UTF-8?q?=E7=9A=84Splash=20Screen=20API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- android/app/src/main/AndroidManifest.xml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 8b5cc263b..5be7b7226 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -37,11 +37,6 @@ android:theme="@style/LaunchTheme" android:exported="true" android:windowSoftInputMode="adjustResize"> - - - Date: Sat, 1 Oct 2022 09:42:48 +0800 Subject: [PATCH 115/206] =?UTF-8?q?=E4=BE=9D=E8=B5=96=E5=8D=87=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/flutter-web-deploy.yml | 2 +- pubspec.yaml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/flutter-web-deploy.yml b/.github/workflows/flutter-web-deploy.yml index b5d7008b1..3cc5374f7 100644 --- a/.github/workflows/flutter-web-deploy.yml +++ b/.github/workflows/flutter-web-deploy.yml @@ -5,7 +5,7 @@ name: flutter_deer web deploy on: push: paths: - - 'pubspec.yaml' + - 'pubspec1.yaml' jobs: web_build_and_deploy: diff --git a/pubspec.yaml b/pubspec.yaml index ba6ae4c06..3ccce139c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -21,7 +21,7 @@ dependencies: # Localization https://github.com/dart-lang/intl intl: ^0.17.0 # Toast插件 https://github.com/OpenFlutter/flutter_oktoast - oktoast: ^3.3.0 + oktoast: ^3.3.1 # 网络库 https://github.com/flutterchina/dio dio: ^4.0.6 # https://github.com/ReactiveX/rxdart @@ -41,7 +41,7 @@ dependencies: # WebView插件 https://github.com/flutter/plugins/tree/master/packages/webview_flutter webview_flutter: 3.0.4 # 处理键盘事件 https://github.com/diegoveloper/flutter_keyboard_actions - keyboard_actions: ^4.0.1 + keyboard_actions: ^4.1.0 # 列表悬浮头 https://github.com/fluttercommunity/flutter_sticky_headers sticky_headers: ^0.3.0+2 # 城市选择列表 https://github.com/flutterchina/azlistview @@ -51,7 +51,7 @@ dependencies: # 图片缓存 https://github.com/renefloor/flutter_cached_network_image cached_network_image: ^3.2.1 # 格式化String https://github.com/Naddiseo/dart-sprintf - sprintf: ^6.0.0 + sprintf: ^7.0.0 # 状态管理 https://github.com/rrousselGit/provider provider: ^6.0.3 # 扫码 https://github.com/juliuscanute/qr_code_scanner From a7d5c27f0424f531bb72cde94be846bc2287ccc4 Mon Sep 17 00:00:00 2001 From: weilu Date: Sun, 16 Oct 2022 18:19:13 +0800 Subject: [PATCH 116/206] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=8F=AF=E8=AE=BF?= =?UTF-8?q?=E9=97=AE=E6=80=A7=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pubspec.yaml | 2 +- test/setting/setting_accessibility_test.dart | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/pubspec.yaml b/pubspec.yaml index 3ccce139c..27d2c561a 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -64,7 +64,7 @@ dependencies: # 振动(支持Web) https://github.com/benjamindean/flutter_vibration vibration: ^1.7.5 # 获取当前设备信息 https://github.com/fluttercommunity/plus_plugins/tree/main/packages/device_info_plus - device_info_plus: 4.1.2 + device_info_plus: 6.0.0 # 改变桌面端窗口大小(MacOS/Linux/Windows) https://github.com/mix1009/desktop_window desktop_window: 0.4.0 # 高德2D地图插件(支持Web) https://github.com/simplezhli/flutter_2d_amap diff --git a/test/setting/setting_accessibility_test.dart b/test/setting/setting_accessibility_test.dart index 7b0a18c70..6453e5e43 100644 --- a/test/setting/setting_accessibility_test.dart +++ b/test/setting/setting_accessibility_test.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter_deer/main.dart'; import 'package:flutter_deer/setting/page/about_page.dart'; import 'package:flutter_deer/setting/page/account_manager_page.dart'; import 'package:flutter_deer/setting/page/setting_page.dart'; @@ -18,7 +19,7 @@ void main() { map.forEach((name, page) { testWidgets(name, (WidgetTester tester) async { final SemanticsHandle handle = tester.ensureSemantics(); - await tester.pumpWidget(MaterialApp(home: page)); + await tester.pumpWidget(MyApp(home: page)); await expectLater(tester, meetsGuideline(iOSTapTargetGuideline)); handle.dispose(); }); @@ -29,7 +30,7 @@ void main() { map.forEach((name, page) { testWidgets(name, (WidgetTester tester) async { final SemanticsHandle handle = tester.ensureSemantics(); - await tester.pumpWidget(MaterialApp(home: page)); + await tester.pumpWidget(MyApp(home: page)); await expectLater(tester, meetsGuideline(labeledTapTargetGuideline)); handle.dispose(); }); @@ -54,7 +55,7 @@ void main() { map.forEach((name, page) { testWidgets('$name $themeName', (WidgetTester tester) async { final SemanticsHandle handle = tester.ensureSemantics(); - await tester.pumpWidget(MaterialApp(theme: theme, home: page)); + await tester.pumpWidget(MyApp(theme: theme, home: page)); await expectLater(tester, meetsGuideline(textContrastGuideline)); handle.dispose(); }); From 113b2781f252649f3c52c32529ba6ffae6f580bb Mon Sep 17 00:00:00 2001 From: weilu Date: Sun, 23 Oct 2022 17:08:31 +0800 Subject: [PATCH 117/206] device_info_plus 7.0.1 --- lib/util/device_utils.dart | 2 +- pubspec.yaml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/util/device_utils.dart b/lib/util/device_utils.dart index 7fc118ac0..4f546415b 100644 --- a/lib/util/device_utils.dart +++ b/lib/util/device_utils.dart @@ -31,7 +31,7 @@ class Device { return -1; } if (isAndroid) { - return _androidInfo.version.sdkInt ?? -1; + return _androidInfo.version.sdkInt; } else { return -1; } diff --git a/pubspec.yaml b/pubspec.yaml index 27d2c561a..545c4bca7 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -53,18 +53,18 @@ dependencies: # 格式化String https://github.com/Naddiseo/dart-sprintf sprintf: ^7.0.0 # 状态管理 https://github.com/rrousselGit/provider - provider: ^6.0.3 + provider: ^6.0.4 # 扫码 https://github.com/juliuscanute/qr_code_scanner qr_code_scanner: 1.0.0 # git: # url: https://github.com/xeinebiu/qr_code_scanner.git # ref: fix_break_changes_platform # App Shortcuts https://github.com/flutter/plugins/tree/master/packages/quick_actions - quick_actions: 1.0.0 + quick_actions: 1.0.1 # 振动(支持Web) https://github.com/benjamindean/flutter_vibration vibration: ^1.7.5 # 获取当前设备信息 https://github.com/fluttercommunity/plus_plugins/tree/main/packages/device_info_plus - device_info_plus: 6.0.0 + device_info_plus: 7.0.1 # 改变桌面端窗口大小(MacOS/Linux/Windows) https://github.com/mix1009/desktop_window desktop_window: 0.4.0 # 高德2D地图插件(支持Web) https://github.com/simplezhli/flutter_2d_amap @@ -74,7 +74,7 @@ dependencies: url: 'https://github.com/simplezhli/flutter_2d_amap.git' # demo 用到的库 # 刮刮卡 https://github.com/vintage/scratcher - scratcher: ^2.2.1 + scratcher: ^2.3.0 # 动画效果 https://github.com/xvrh/lottie-flutter lottie: ^1.4.1 From 538894f43811e5d4a2a301356b687efd3ce3b60b Mon Sep 17 00:00:00 2001 From: weilu Date: Sun, 23 Oct 2022 17:38:39 +0800 Subject: [PATCH 118/206] device_info_plus 7.0.1 --- macos/Flutter/GeneratedPluginRegistrant.swift | 2 +- macos/Runner.xcodeproj/project.pbxproj | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index 4bea897a8..058ce1304 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -6,7 +6,7 @@ import FlutterMacOS import Foundation import desktop_window -import device_info_plus_macos +import device_info_plus import path_provider_macos import shared_preferences_macos import sqflite diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj index 87df14ae1..151dcc8b7 100644 --- a/macos/Runner.xcodeproj/project.pbxproj +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -300,7 +300,7 @@ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh", "${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework", "${BUILT_PRODUCTS_DIR}/desktop_window/desktop_window.framework", - "${BUILT_PRODUCTS_DIR}/device_info_plus_macos/device_info_plus_macos.framework", + "${BUILT_PRODUCTS_DIR}/device_info_plus/device_info_plus.framework", "${BUILT_PRODUCTS_DIR}/path_provider_macos/path_provider_macos.framework", "${BUILT_PRODUCTS_DIR}/shared_preferences_macos/shared_preferences_macos.framework", "${BUILT_PRODUCTS_DIR}/sqflite/sqflite.framework", @@ -310,7 +310,7 @@ outputPaths = ( "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FMDB.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/desktop_window.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/device_info_plus_macos.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/device_info_plus.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/path_provider_macos.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/shared_preferences_macos.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sqflite.framework", From 520d6f21a417e3e178cf6040086204ccc5c190d1 Mon Sep 17 00:00:00 2001 From: weilu Date: Thu, 3 Nov 2022 21:36:53 +0800 Subject: [PATCH 119/206] flutter 3.3.7 --- .github/workflows/flutter-drive.yml | 6 +++--- README-EN.md | 4 ++-- README.md | 4 ++-- pubspec.yaml | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index 9cde52f19..8f5ef3658 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -53,7 +53,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v2 with: - flutter-version: '3.3.2' + flutter-version: '3.3.7' channel: 'stable' # or: 'dev' or 'beta' architecture: x64 - run: "flutter clean" @@ -77,7 +77,7 @@ jobs: java-version: 1.11 - uses: subosito/flutter-action@v2 with: - flutter-version: '3.3.2' + flutter-version: '3.3.7' channel: 'stable' # or: 'dev' or 'beta' architecture: x64 - name: "Run Flutter Driver tests" @@ -103,7 +103,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v2 with: - flutter-version: '3.3.2' + flutter-version: '3.3.7' channel: 'stable' architecture: x64 - run: "flutter pub get" diff --git a/README-EN.md b/README-EN.md index 8d0f23c41..779c6c535 100644 --- a/README-EN.md +++ b/README-EN.md @@ -61,9 +61,9 @@ Web:https://simplezhli.github.io/flutter_deer/ [![Build Status](https://github.com/simplezhli/flutter_deer/workflows/flutter_deer%20driver/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions?query=workflow%3A%22flutter_deer+driver%22+branch%3Amaster) - 1. Flutter version 3.3.2 + 1. Flutter version 3.3.7 - 2. Dart version 2.18.1 + 2. Dart version 2.18.4 ## Precautions diff --git a/README.md b/README.md index 5f362dfaa..dedbf0c77 100644 --- a/README.md +++ b/README.md @@ -66,9 +66,9 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ [![Build Status](https://github.com/simplezhli/flutter_deer/workflows/flutter_deer%20driver/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions?query=workflow%3A%22flutter_deer+driver%22+branch%3Amaster) - 1. Flutter version 3.3.2 + 1. Flutter version 3.3.7 - 2. Dart version 2.18.1 + 2. Dart version 2.18.4 ## 注意事项 diff --git a/pubspec.yaml b/pubspec.yaml index 545c4bca7..acc6ca277 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -64,7 +64,7 @@ dependencies: # 振动(支持Web) https://github.com/benjamindean/flutter_vibration vibration: ^1.7.5 # 获取当前设备信息 https://github.com/fluttercommunity/plus_plugins/tree/main/packages/device_info_plus - device_info_plus: 7.0.1 + device_info_plus: 8.0.0 # 改变桌面端窗口大小(MacOS/Linux/Windows) https://github.com/mix1009/desktop_window desktop_window: 0.4.0 # 高德2D地图插件(支持Web) https://github.com/simplezhli/flutter_2d_amap From 74dcf743283ac07072844e0c1b4de4edd7d6e9ef Mon Sep 17 00:00:00 2001 From: weilu Date: Sat, 5 Nov 2022 09:54:12 +0800 Subject: [PATCH 120/206] =?UTF-8?q?log=E6=89=93=E5=8D=B0=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/util/log_utils.dart | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/util/log_utils.dart b/lib/util/log_utils.dart index 2ce4ff910..c3f8c34b9 100644 --- a/lib/util/log_utils.dart +++ b/lib/util/log_utils.dart @@ -7,9 +7,9 @@ import 'package:flutter_deer/res/constant.dart'; class Log { static const String tag = 'DEER-LOG'; - + static void init() { - LogUtil.init(isDebug: !Constant.inProduction); + LogUtil.init(isDebug: !Constant.inProduction, maxLen: 512); } static void d(String msg, {String tag = tag}) { @@ -65,7 +65,7 @@ class Log { _printMap(value, tabs: tabs); } } else if (value is List) { - if (value.isEmpty) { + if (value.isEmpty || value.length > 50) { LogUtil.v('${_indent(tabs)} $key: ${value.toString()}', tag: tag); } else { LogUtil.v('${_indent(tabs)} $key: [', tag: tag); @@ -85,7 +85,7 @@ class Log { list.asMap().forEach((i, dynamic e) { final bool isLast = i == list.length - 1; if (e is Map) { - if (e.isEmpty) { + if (_canFlattenMap(e, list)) { LogUtil.v('${_indent(tabs)} $e${!isLast ? ',' : ''}', tag: tag); } else { _printMap(e, tabs: tabs + 1, isListItem: true, isLast: isLast); @@ -96,5 +96,11 @@ class Log { }); } + /// 避免一秒内输出过多行数的日志被限制显示 + /// Single process limit 250/s drop 66 lines. + static bool _canFlattenMap(Map map, List list) { + return list.length * map.length > 100; + } + static String _indent([int tabCount = 1]) => ' ' * tabCount; } From 699282d6a16ae7b592b13f68d492357af6e0a408 Mon Sep 17 00:00:00 2001 From: weilu Date: Thu, 10 Nov 2022 22:14:51 +0800 Subject: [PATCH 121/206] lottie 2.0.0 --- pubspec.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pubspec.yaml b/pubspec.yaml index acc6ca277..e31206770 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -8,8 +8,8 @@ homepage: https://weilu.blog.csdn.net/ publish_to: 'none' environment: - sdk: ">=2.17.0 <3.0.0" - flutter: ">=3.0.0 <4.0.0" + sdk: ">=2.18.0 <3.0.0" + flutter: ">=3.3.0 <4.0.0" dependencies: flutter: @@ -47,7 +47,7 @@ dependencies: # 城市选择列表 https://github.com/flutterchina/azlistview azlistview: ^2.0.0 # 路由框架 https://github.com/theyakka/fluro - fluro: ^2.0.3 + fluro: ^2.0.4 # 图片缓存 https://github.com/renefloor/flutter_cached_network_image cached_network_image: ^3.2.1 # 格式化String https://github.com/Naddiseo/dart-sprintf @@ -76,7 +76,7 @@ dependencies: # 刮刮卡 https://github.com/vintage/scratcher scratcher: ^2.3.0 # 动画效果 https://github.com/xvrh/lottie-flutter - lottie: ^1.4.1 + lottie: ^2.0.0 # https://github.com/simplezhli/flutter_deer/issues/187 dependency_overrides: From 68609437e42fceac2450adeedc6f7a6537267da9 Mon Sep 17 00:00:00 2001 From: weilu Date: Sat, 26 Nov 2022 13:39:00 +0800 Subject: [PATCH 122/206] clean-up analysis_options.yaml --- analysis_options.yaml | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/analysis_options.yaml b/analysis_options.yaml index ca8ea507f..2f0455c8c 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -20,12 +20,6 @@ analyzer: strict-casts: true strict-raw-types: true errors: - # treat missing required parameters as a warning (not a hint) - missing_required_param: warning - # treat missing returns as a warning (not a hint) - missing_return: warning - # allow having TODO comments in the code - todo: ignore # allow self-reference to deprecated members (we do this because otherwise we have # to annotate every member in every test, assert, etc, when we deprecate something) deprecated_member_use_from_same_package: ignore @@ -102,7 +96,7 @@ linter: - conditional_uri_does_not_exist # - constant_identifier_names # needs an opt-out https://github.com/dart-lang/linter/issues/204 - control_flow_in_finally - - curly_braces_in_flow_control_structures # not required by flutter style, but developer-facing code should have this on + - curly_braces_in_flow_control_structures # - depend_on_referenced_packages - deprecated_consistency # - diagnostic_describe_all_properties # enabled only at the framework level (packages/flutter/lib) @@ -214,6 +208,7 @@ linter: - unnecessary_late - unnecessary_new - unnecessary_null_aware_assignments + - unnecessary_null_aware_operator_on_extension_on_nullable - unnecessary_null_checks - unnecessary_null_in_if_null_operators - unnecessary_nullable_for_final_variable_declarations @@ -224,6 +219,7 @@ linter: - unnecessary_string_escapes - unnecessary_string_interpolations - unnecessary_this + - unnecessary_to_list_in_spreads - unrelated_type_equality_checks - unsafe_html - use_build_context_synchronously From 4cf3203f7e5712e37391447b995512d71947efbe Mon Sep 17 00:00:00 2001 From: weilu Date: Mon, 19 Dec 2022 17:27:28 +0800 Subject: [PATCH 123/206] =?UTF-8?q?vibration=5Fweb=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/flutter-web-deploy.yml | 4 ++-- pubspec.yaml | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/flutter-web-deploy.yml b/.github/workflows/flutter-web-deploy.yml index 3cc5374f7..f7bca20ff 100644 --- a/.github/workflows/flutter-web-deploy.yml +++ b/.github/workflows/flutter-web-deploy.yml @@ -5,7 +5,7 @@ name: flutter_deer web deploy on: push: paths: - - 'pubspec1.yaml' + - 'pubspec.yaml' jobs: web_build_and_deploy: @@ -14,7 +14,7 @@ jobs: - uses: actions/checkout@v2.3.1 - uses: subosito/flutter-action@v2 with: - flutter-version: '3.3.2' + flutter-version: '3.3.7' channel: 'stable' architecture: x64 - name: "Web Build 🔧" diff --git a/pubspec.yaml b/pubspec.yaml index e31206770..1b29bfd53 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -61,8 +61,9 @@ dependencies: # ref: fix_break_changes_platform # App Shortcuts https://github.com/flutter/plugins/tree/master/packages/quick_actions quick_actions: 1.0.1 - # 振动(支持Web) https://github.com/benjamindean/flutter_vibration - vibration: ^1.7.5 + # 振动 https://github.com/benjamindean/flutter_vibration + vibration: 1.7.6 + vibration_web: 1.6.5 # 获取当前设备信息 https://github.com/fluttercommunity/plus_plugins/tree/main/packages/device_info_plus device_info_plus: 8.0.0 # 改变桌面端窗口大小(MacOS/Linux/Windows) https://github.com/mix1009/desktop_window From 2ec062db345eb57f20990092c5d3d087c931ed66 Mon Sep 17 00:00:00 2001 From: weilu Date: Mon, 19 Dec 2022 17:46:02 +0800 Subject: [PATCH 124/206] =?UTF-8?q?=E8=BF=81=E7=A7=BB=E8=87=B3diox?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README-EN.md | 4 ++-- README.md | 4 ++-- lib/main.dart | 2 +- lib/mvp/base_page_presenter.dart | 2 +- lib/net/dio_utils.dart | 14 +++++++------- lib/net/error_handle.dart | 2 +- lib/net/intercept.dart | 2 +- lib/setting/widgets/update_dialog.dart | 2 +- pubspec.yaml | 4 ++-- test/net/dio_test.dart | 2 +- 10 files changed, 19 insertions(+), 19 deletions(-) diff --git a/README-EN.md b/README-EN.md index 779c6c535..8c4d3ef61 100644 --- a/README-EN.md +++ b/README-EN.md @@ -27,7 +27,7 @@ The effect of some pages is as follows: * mvp mode * Use `provider`(version 6.x) for state management -* Network request encapsulation based on `dio` (version 4.x) +* Network request encapsulation based on `diox` (version 5.x) * Driver testing, accessibility testing. * Support dark mode * Localization(Thanks @ghedwards) @@ -117,7 +117,7 @@ Web:https://simplezhli.github.io/flutter_deer/ | 库 | 功能 | | -------------------------- | --------------- | -| [dio](https://github.com/flutterchina/dio) | **Network library** | +| [diox](https://github.com/cfug/diox) | **Network library** | | [provider](https://github.com/rrousselGit/provider) | **State management** | | [flutter_2d_amap](https://github.com/simplezhli/flutter_2d_amap) | **2D AMap** | | [cached_network_image](https://github.com/renefloor/flutter_cached_network_image) | **Image loading** | diff --git a/README.md b/README.md index dedbf0c77..695602bef 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ * mvp模式 * 使用`provider` (6.x 版本)做状态管理 -* 基于`dio` (4.x 版本)的网络请求封装 +* 基于`diox` (5.x 版本)的网络请求封装 * 完整的集成测试、可访问性测试。 * 支持深色模式 * 本地化(感谢 @ghedwards) @@ -128,7 +128,7 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ | 库 | 功能 | | -------------------------- | --------------- | -| [dio](https://github.com/flutterchina/dio) | **网络库** | +| [diox](https://github.com/cfug/diox) | **网络库** | | [provider](https://github.com/rrousselGit/provider) | **状态管理** | | [flutter_2d_amap](https://github.com/simplezhli/flutter_2d_amap) | **高德2D地图** | | [cached_network_image](https://github.com/renefloor/flutter_cached_network_image) | **图片加载** | diff --git a/lib/main.dart b/lib/main.dart index 3e7e5bbb7..4a91d8b78 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,4 +1,4 @@ -import 'package:dio/dio.dart'; +import 'package:diox/diox.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_deer/demo/demo_page.dart'; diff --git a/lib/mvp/base_page_presenter.dart b/lib/mvp/base_page_presenter.dart index cb323dbbf..834df931d 100644 --- a/lib/mvp/base_page_presenter.dart +++ b/lib/mvp/base_page_presenter.dart @@ -1,5 +1,5 @@ import 'dart:io'; -import 'package:dio/dio.dart'; +import 'package:diox/diox.dart'; import 'package:flutter_deer/mvp/base_presenter.dart'; import 'package:flutter_deer/net/net.dart'; diff --git a/lib/net/dio_utils.dart b/lib/net/dio_utils.dart index be01c7d43..b33123780 100644 --- a/lib/net/dio_utils.dart +++ b/lib/net/dio_utils.dart @@ -1,6 +1,6 @@ import 'dart:convert'; -import 'package:dio/dio.dart'; +import 'package:diox/diox.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter_deer/res/constant.dart'; import 'package:flutter_deer/util/log_utils.dart'; @@ -8,17 +8,17 @@ import 'base_entity.dart'; import 'error_handle.dart'; /// 默认dio配置 -int _connectTimeout = 15000; -int _receiveTimeout = 15000; -int _sendTimeout = 10000; +Duration _connectTimeout = const Duration(seconds: 15); +Duration _receiveTimeout = const Duration(seconds: 15); +Duration _sendTimeout = const Duration(seconds: 10); String _baseUrl = ''; List _interceptors = []; /// 初始化Dio配置 void configDio({ - int? connectTimeout, - int? receiveTimeout, - int? sendTimeout, + Duration? connectTimeout, + Duration? receiveTimeout, + Duration? sendTimeout, String? baseUrl, List? interceptors, }) { diff --git a/lib/net/error_handle.dart b/lib/net/error_handle.dart index ee847158a..ba40e9328 100644 --- a/lib/net/error_handle.dart +++ b/lib/net/error_handle.dart @@ -1,5 +1,5 @@ import 'dart:io'; -import 'package:dio/dio.dart'; +import 'package:diox/diox.dart'; import 'package:flutter/foundation.dart'; class ExceptionHandle { diff --git a/lib/net/intercept.dart b/lib/net/intercept.dart index 0056aee33..83ae695a0 100644 --- a/lib/net/intercept.dart +++ b/lib/net/intercept.dart @@ -1,7 +1,7 @@ import 'dart:convert'; -import 'package:dio/dio.dart'; +import 'package:diox/diox.dart'; import 'package:flutter_deer/res/constant.dart'; import 'package:flutter_deer/util/device_utils.dart'; import 'package:flutter_deer/util/log_utils.dart'; diff --git a/lib/setting/widgets/update_dialog.dart b/lib/setting/widgets/update_dialog.dart index d4eddbda5..1557301dc 100644 --- a/lib/setting/widgets/update_dialog.dart +++ b/lib/setting/widgets/update_dialog.dart @@ -1,6 +1,6 @@ import 'dart:io'; -import 'package:dio/dio.dart'; +import 'package:diox/diox.dart'; import 'package:flustars_flutter3/flustars_flutter3.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; diff --git a/pubspec.yaml b/pubspec.yaml index 1b29bfd53..4e11f1b1e 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -22,8 +22,8 @@ dependencies: intl: ^0.17.0 # Toast插件 https://github.com/OpenFlutter/flutter_oktoast oktoast: ^3.3.1 - # 网络库 https://github.com/flutterchina/dio - dio: ^4.0.6 + # 网络库 https://github.com/cfug/diox + diox: ^5.0.0-dev.1 # https://github.com/ReactiveX/rxdart rxdart: ^0.27.5 # Dart 常用工具类库 https://github.com/Sky24n/common_utils diff --git a/test/net/dio_test.dart b/test/net/dio_test.dart index 9f56a6b42..081d446de 100644 --- a/test/net/dio_test.dart +++ b/test/net/dio_test.dart @@ -1,4 +1,4 @@ -import 'package:dio/dio.dart'; +import 'package:diox/diox.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter_deer/net/net.dart'; import 'package:flutter_deer/shop/models/user_entity.dart'; From fa299060bb1dd5a2f3b8b469d67c6fcce4a44a98 Mon Sep 17 00:00:00 2001 From: weilu Date: Fri, 23 Dec 2022 15:31:55 +0800 Subject: [PATCH 125/206] =?UTF-8?q?webview=5Fflutter=E5=8D=87=E7=BA=A7?= =?UTF-8?q?=E8=87=B34.0.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/flutter-web-deploy.yml | 2 +- lib/home/webview_page.dart | 93 +++++++++++------------- pubspec.yaml | 12 +-- 3 files changed, 50 insertions(+), 57 deletions(-) diff --git a/.github/workflows/flutter-web-deploy.yml b/.github/workflows/flutter-web-deploy.yml index f7bca20ff..bcde060fa 100644 --- a/.github/workflows/flutter-web-deploy.yml +++ b/.github/workflows/flutter-web-deploy.yml @@ -5,7 +5,7 @@ name: flutter_deer web deploy on: push: paths: - - 'pubspec.yaml' + - 'pubspec1.yaml' jobs: web_build_and_deploy: diff --git a/lib/home/webview_page.dart b/lib/home/webview_page.dart index e0eebe4ed..06e2dfd74 100644 --- a/lib/home/webview_page.dart +++ b/lib/home/webview_page.dart @@ -2,7 +2,6 @@ import 'dart:async'; import 'package:flutter/material.dart'; import 'package:flutter_deer/res/gaps.dart'; -import 'package:flutter_deer/util/device_utils.dart'; import 'package:flutter_deer/widgets/my_app_bar.dart'; import 'package:webview_flutter/webview_flutter.dart'; @@ -23,65 +22,59 @@ class WebViewPage extends StatefulWidget { class _WebViewPageState extends State { - final Completer _controller = Completer(); + late final WebViewController _controller; int _progressValue = 0; @override void initState() { super.initState(); - // Enable hybrid composition. - if (Device.isAndroid) { - WebView.platform = SurfaceAndroidWebView(); - } + _controller = WebViewController() + ..setJavaScriptMode(JavaScriptMode.unrestricted) + ..setNavigationDelegate( + NavigationDelegate( + onProgress: (int progress) { + if (!mounted) { + return; + } + debugPrint('WebView is loading (progress : $progress%)'); + setState(() { + _progressValue = progress; + }); + }, + ), + ) + ..loadRequest(Uri.parse(widget.url)); } @override Widget build(BuildContext context) { - return FutureBuilder( - future: _controller.future, - builder: (context, snapshot) { - return WillPopScope( - onWillPop: () async { - if (snapshot.hasData) { - final bool canGoBack = await snapshot.data!.canGoBack(); - if (canGoBack) { - // 网页可以返回时,优先返回上一页 - await snapshot.data!.goBack(); - return Future.value(false); - } - } - return Future.value(true); - }, - child: Scaffold( - appBar: MyAppBar( - centerTitle: widget.title, - ), - body: Stack( - children: [ - WebView( - initialUrl: widget.url, - javascriptMode: JavascriptMode.unrestricted, - allowsInlineMediaPlayback: true, - onWebViewCreated: (WebViewController webViewController) { - _controller.complete(webViewController); - }, - onProgress: (int progress) { - debugPrint('WebView is loading (progress : $progress%)'); - setState(() { - _progressValue = progress; - }); - }, - ), - if (_progressValue != 100) LinearProgressIndicator( - value: _progressValue / 100, - backgroundColor: Colors.transparent, - minHeight: 2, - ) else Gaps.empty, - ], + return WillPopScope( + onWillPop: () async { + final bool canGoBack = await _controller.canGoBack(); + if (canGoBack) { + // 网页可以返回时,优先返回上一页 + await _controller.goBack(); + return Future.value(false); + } + return Future.value(true); + }, + child: Scaffold( + appBar: MyAppBar( + centerTitle: widget.title, + ), + body: Stack( + children: [ + WebViewWidget( + controller: _controller, ), - ), - ); - } + if (_progressValue != 100) LinearProgressIndicator( + value: _progressValue / 100, + backgroundColor: Colors.transparent, + minHeight: 2, + ) else Gaps.empty, + ], + ), + ), ); } diff --git a/pubspec.yaml b/pubspec.yaml index 4e11f1b1e..85fca550c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -23,7 +23,7 @@ dependencies: # Toast插件 https://github.com/OpenFlutter/flutter_oktoast oktoast: ^3.3.1 # 网络库 https://github.com/cfug/diox - diox: ^5.0.0-dev.1 + diox: ^5.0.0-dev.2 # https://github.com/ReactiveX/rxdart rxdart: ^0.27.5 # Dart 常用工具类库 https://github.com/Sky24n/common_utils @@ -35,11 +35,11 @@ dependencies: # 启动URL的插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/url_launcher url_launcher: 6.1.5 # 图片选择插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/image_picker - image_picker: 0.8.5+3 + image_picker: 0.8.6 # 侧滑删除 https://github.com/letsar/flutter_slidable flutter_slidable: ^2.0.0 # WebView插件 https://github.com/flutter/plugins/tree/master/packages/webview_flutter - webview_flutter: 3.0.4 + webview_flutter: 4.0.0 # 处理键盘事件 https://github.com/diegoveloper/flutter_keyboard_actions keyboard_actions: ^4.1.0 # 列表悬浮头 https://github.com/fluttercommunity/flutter_sticky_headers @@ -49,11 +49,11 @@ dependencies: # 路由框架 https://github.com/theyakka/fluro fluro: ^2.0.4 # 图片缓存 https://github.com/renefloor/flutter_cached_network_image - cached_network_image: ^3.2.1 + cached_network_image: ^3.2.3 # 格式化String https://github.com/Naddiseo/dart-sprintf sprintf: ^7.0.0 # 状态管理 https://github.com/rrousselGit/provider - provider: ^6.0.4 + provider: ^6.0.5 # 扫码 https://github.com/juliuscanute/qr_code_scanner qr_code_scanner: 1.0.0 # git: @@ -77,7 +77,7 @@ dependencies: # 刮刮卡 https://github.com/vintage/scratcher scratcher: ^2.3.0 # 动画效果 https://github.com/xvrh/lottie-flutter - lottie: ^2.0.0 + lottie: ^2.1.0 # https://github.com/simplezhli/flutter_deer/issues/187 dependency_overrides: From bee192eae1ed3fd4f96acdecebbe13a0362f712f Mon Sep 17 00:00:00 2001 From: weilu Date: Wed, 4 Jan 2023 20:34:21 +0800 Subject: [PATCH 126/206] Enable depend_on_referenced_packages/sized_box_shrink_expand/use_colored_box/use_enums --- analysis_options.yaml | 6 ++++-- lib/demo/overlay/page/overlay_demo_page.dart | 2 +- lib/goods/widgets/goods_item.dart | 2 +- lib/goods/widgets/goods_sort_bottom_sheet.dart | 2 +- pubspec.yaml | 5 +++-- 5 files changed, 10 insertions(+), 7 deletions(-) diff --git a/analysis_options.yaml b/analysis_options.yaml index 2f0455c8c..606938833 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -97,7 +97,7 @@ linter: # - constant_identifier_names # needs an opt-out https://github.com/dart-lang/linter/issues/204 - control_flow_in_finally - curly_braces_in_flow_control_structures -# - depend_on_referenced_packages + - depend_on_referenced_packages - deprecated_consistency # - diagnostic_describe_all_properties # enabled only at the framework level (packages/flutter/lib) - directives_ordering @@ -186,7 +186,7 @@ linter: # - require_trailing_commas # blocked on https://github.com/dart-lang/sdk/issues/47441 - secure_pubspec_urls - sized_box_for_whitespace - # - sized_box_shrink_expand # not yet tested + - sized_box_shrink_expand - slash_for_doc_comments - sort_child_properties_last - sort_constructors_first @@ -223,7 +223,9 @@ linter: - unrelated_type_equality_checks - unsafe_html - use_build_context_synchronously + - use_colored_box # - use_decorated_box # not yet tested + - use_enums - use_full_hex_values_for_flutter_colors - use_function_type_syntax_for_parameters - use_if_null_to_convert_nulls_to_bools diff --git a/lib/demo/overlay/page/overlay_demo_page.dart b/lib/demo/overlay/page/overlay_demo_page.dart index 8e7b59faf..d2e465fce 100644 --- a/lib/demo/overlay/page/overlay_demo_page.dart +++ b/lib/demo/overlay/page/overlay_demo_page.dart @@ -47,7 +47,7 @@ class _OverlayDemoPageState extends State { appBar: AppBar( title: const Text('Overlay Demo'), ), - body: Container( + body: ColoredBox( color: Colors.amber, child: Center( child: GestureDetector( diff --git a/lib/goods/widgets/goods_item.dart b/lib/goods/widgets/goods_item.dart index 7fa5eb124..eebf2ae43 100644 --- a/lib/goods/widgets/goods_item.dart +++ b/lib/goods/widgets/goods_item.dart @@ -160,7 +160,7 @@ class GoodsItem extends StatelessWidget { return InkWell( onTap: onTapMenuClose, - child: Container( + child: ColoredBox( color: isDark ? const Color(0xB34D4D4D) : const Color(0x4D000000), child: Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, diff --git a/lib/goods/widgets/goods_sort_bottom_sheet.dart b/lib/goods/widgets/goods_sort_bottom_sheet.dart index ef02e6b0b..b3b752522 100644 --- a/lib/goods/widgets/goods_sort_bottom_sheet.dart +++ b/lib/goods/widgets/goods_sort_bottom_sheet.dart @@ -63,7 +63,7 @@ class GoodsSortBottomSheetState extends State with SingleT children: [ child!, Gaps.line, - Container( + ColoredBox( // 隐藏点击效果 color: context.dialogBackgroundColor, child: TabBar( diff --git a/pubspec.yaml b/pubspec.yaml index 85fca550c..118993052 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -23,11 +23,12 @@ dependencies: # Toast插件 https://github.com/OpenFlutter/flutter_oktoast oktoast: ^3.3.1 # 网络库 https://github.com/cfug/diox - diox: ^5.0.0-dev.2 + diox: ^5.0.0-dev.3 # https://github.com/ReactiveX/rxdart rxdart: ^0.27.5 # Dart 常用工具类库 https://github.com/Sky24n/common_utils common_utils: 2.1.0 + sp_util: 2.0.3 # Flutter 常用工具类库 https://github.com/Sky24n/flustars flustars_flutter3: ^3.0.0 # flustars很久不维护,可以使用这个替代 # Flutter 轮播图 https://github.com/mdddj/flutter_swiper_null_safety @@ -39,7 +40,7 @@ dependencies: # 侧滑删除 https://github.com/letsar/flutter_slidable flutter_slidable: ^2.0.0 # WebView插件 https://github.com/flutter/plugins/tree/master/packages/webview_flutter - webview_flutter: 4.0.0 + webview_flutter: 4.0.1 # 处理键盘事件 https://github.com/diegoveloper/flutter_keyboard_actions keyboard_actions: ^4.1.0 # 列表悬浮头 https://github.com/fluttercommunity/flutter_sticky_headers From f9f00c6f58394df41a9fe84e8b4168114027af21 Mon Sep 17 00:00:00 2001 From: weilu Date: Fri, 6 Jan 2023 21:56:57 +0800 Subject: [PATCH 127/206] =?UTF-8?q?ThemeData=E9=83=A8=E5=88=86=E5=BA=9F?= =?UTF-8?q?=E5=BC=83=E5=B1=9E=E6=80=A7=E8=BF=81=E7=A7=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/account/page/account_record_list_page.dart | 6 +++--- .../page/add_withdrawal_account_page.dart | 4 ++-- lib/account/page/bank_select_page.dart | 4 ++-- lib/account/page/city_select_page.dart | 2 +- lib/account/page/withdrawal_account_page.dart | 2 +- lib/account/page/withdrawal_page.dart | 8 ++++---- .../page/withdrawal_record_list_page.dart | 4 ++-- lib/account/page/withdrawal_result_page.dart | 4 ++-- .../widgets/withdrawal_password_setting.dart | 2 +- .../navigator/screen/book_details_screen.dart | 4 ++-- lib/goods/page/goods_edit_page.dart | 2 +- lib/goods/page/goods_size_edit_page.dart | 2 +- lib/goods/page/goods_size_page.dart | 6 +++--- lib/goods/widgets/goods_add_menu.dart | 8 ++++---- lib/goods/widgets/goods_delete_bottom_sheet.dart | 2 +- lib/goods/widgets/goods_item.dart | 4 ++-- lib/login/page/login_page.dart | 2 +- lib/login/page/sms_login_page.dart | 6 +++--- lib/login/page/update_password_page.dart | 2 +- lib/order/page/order_info_page.dart | 14 +++++++------- lib/order/page/order_page.dart | 2 +- lib/order/page/order_track_page.dart | 4 ++-- lib/order/widgets/order_item.dart | 16 ++++++++-------- lib/setting/provider/theme_provider.dart | 10 +++++----- lib/shop/page/freight_config_page.dart | 4 ++-- lib/shop/page/message_page.dart | 2 +- lib/statistics/page/goods_statistics_page.dart | 10 +++++----- lib/statistics/page/order_statistics_page.dart | 4 ++-- lib/statistics/page/statistics_page.dart | 2 +- lib/store/page/store_audit_page.dart | 2 +- lib/store/page/store_audit_result_page.dart | 4 ++-- lib/widgets/click_item.dart | 2 +- lib/widgets/state_layout.dart | 2 +- 33 files changed, 76 insertions(+), 76 deletions(-) diff --git a/lib/account/page/account_record_list_page.dart b/lib/account/page/account_record_list_page.dart index dcc818e41..fbc0cc038 100644 --- a/lib/account/page/account_record_list_page.dart +++ b/lib/account/page/account_record_list_page.dart @@ -62,7 +62,7 @@ class _AccountRecordListPageState extends State { right: 0.0, child: Text(i.isEven ? '+10.00' : '-10.00', style: i.isEven ? TextStyle( - color: Theme.of(context).errorColor, + color: Theme.of(context).colorScheme.error, fontWeight: FontWeight.bold, ) : TextStyles.textBold14, ), @@ -70,12 +70,12 @@ class _AccountRecordListPageState extends State { Positioned( bottom: 0.0, left: 0.0, - child: Text(i.isEven ? '18:20:10' : '08:20:11', style: Theme.of(context).textTheme.subtitle2), + child: Text(i.isEven ? '18:20:10' : '08:20:11', style: Theme.of(context).textTheme.titleSmall), ), Positioned( bottom: 0.0, right: 0.0, - child: Text('余额:20.00', style: Theme.of(context).textTheme.subtitle2), + child: Text('余额:20.00', style: Theme.of(context).textTheme.titleSmall), ), ], ), diff --git a/lib/account/page/add_withdrawal_account_page.dart b/lib/account/page/add_withdrawal_account_page.dart index a62ebb7bc..607fd2673 100644 --- a/lib/account/page/add_withdrawal_account_page.dart +++ b/lib/account/page/add_withdrawal_account_page.dart @@ -31,7 +31,7 @@ class _AddWithdrawalAccountPageState extends State { @override Widget build(BuildContext context) { - final TextStyle? style = Theme.of(context).textTheme.subtitle2?.copyWith(fontSize: Dimens.font_sp14); + final TextStyle? style = Theme.of(context).textTheme.titleSmall?.copyWith(fontSize: Dimens.font_sp14); final List children = [ Gaps.vGap5, SelectedItem( @@ -99,7 +99,7 @@ class _AddWithdrawalAccountPageState extends State { padding: const EdgeInsets.only(top: 8.0, left: 16.0), child: Text( _isWechat ? '绑定本机当前登录的微信号' : '绑定持卡人本人的银行卡', - style: Theme.of(context).textTheme.subtitle2, + style: Theme.of(context).textTheme.titleSmall, ), ), ]; diff --git a/lib/account/page/bank_select_page.dart b/lib/account/page/bank_select_page.dart index c52c1f6f4..7a834e7e0 100644 --- a/lib/account/page/bank_select_page.dart +++ b/lib/account/page/bank_select_page.dart @@ -96,7 +96,7 @@ class _BankSelectPageState extends State { indexHintWidth: 96, indexHintHeight: 96, indexHintTextStyle: const TextStyle(fontSize: 26.0, color: Colors.white), - textStyle: Theme.of(context).textTheme.subtitle2!, + textStyle: Theme.of(context).textTheme.titleSmall!, downTextStyle: context.isDark ? TextStyles.textSize12 : const TextStyle(fontSize: 12.0, color: Colors.black), ), ), @@ -112,7 +112,7 @@ class _BankSelectPageState extends State { children: [ Padding( padding: const EdgeInsets.only(top: 5.0, bottom: 5.0, left: 16.0), - child: Text('常用', style: Theme.of(context).textTheme.subtitle2), + child: Text('常用', style: Theme.of(context).textTheme.titleSmall), ), Expanded( child: ListView.builder( diff --git a/lib/account/page/city_select_page.dart b/lib/account/page/city_select_page.dart index 7f9fe298c..da381e39a 100644 --- a/lib/account/page/city_select_page.dart +++ b/lib/account/page/city_select_page.dart @@ -82,7 +82,7 @@ class _CitySelectPageState extends State { indexHintWidth: 96, indexHintHeight: 96, indexHintTextStyle: const TextStyle(fontSize: 26.0, color: Colors.white), - textStyle: Theme.of(context).textTheme.subtitle2!, + textStyle: Theme.of(context).textTheme.titleSmall!, downTextStyle: context.isDark ? TextStyles.textSize12 : const TextStyle(fontSize: 12.0, color: Colors.black), ), ), diff --git a/lib/account/page/withdrawal_account_page.dart b/lib/account/page/withdrawal_account_page.dart index f1beee2de..e49ff9a37 100644 --- a/lib/account/page/withdrawal_account_page.dart +++ b/lib/account/page/withdrawal_account_page.dart @@ -122,7 +122,7 @@ class _WithdrawalAccountPageState extends State { Gaps.line, MyButton( minHeight: 54.0, - textColor: Theme.of(context).errorColor, + textColor: Theme.of(context).colorScheme.error, text: '确认解绑', backgroundColor: Colors.transparent, onPressed: () { diff --git a/lib/account/page/withdrawal_page.dart b/lib/account/page/withdrawal_page.dart index d261040b0..667fe92f9 100644 --- a/lib/account/page/withdrawal_page.dart +++ b/lib/account/page/withdrawal_page.dart @@ -92,7 +92,7 @@ class _WithdrawalPageState extends State { children: [ Text(_data.typeName), Gaps.vGap8, - Text(_data.name, style: Theme.of(context).textTheme.subtitle2), + Text(_data.name, style: Theme.of(context).textTheme.titleSmall), ], ), ), @@ -150,7 +150,7 @@ class _WithdrawalPageState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Text('最多可提现70元', style: Theme.of(context).textTheme.subtitle2), + Text('最多可提现70元', style: Theme.of(context).textTheme.titleSmall), GestureDetector( onTap: () { _controller.text = '70'; @@ -219,14 +219,14 @@ class _WithdrawalPageState extends State { child: RichText( text: type == 0 ? TextSpan( text: '手续费按', - style: Theme.of(context).textTheme.bodyText2?.copyWith(fontSize: Dimens.font_sp12), + style: Theme.of(context).textTheme.bodyMedium?.copyWith(fontSize: Dimens.font_sp12), children: const [ TextSpan(text: '0.3%', style: TextStyle(color: Colours.orange)), TextSpan(text: '收取'), ], ) : TextSpan( text: '预计', - style: Theme.of(context).textTheme.bodyText2?.copyWith(fontSize: Dimens.font_sp12), + style: Theme.of(context).textTheme.bodyMedium?.copyWith(fontSize: Dimens.font_sp12), children: const [ TextSpan(text: 'T+1天到账(免手续费,T为工作日)', style: TextStyle(color: Colours.orange)), ], diff --git a/lib/account/page/withdrawal_record_list_page.dart b/lib/account/page/withdrawal_record_list_page.dart index cda9c618b..c9fd22cf9 100644 --- a/lib/account/page/withdrawal_record_list_page.dart +++ b/lib/account/page/withdrawal_record_list_page.dart @@ -56,7 +56,7 @@ class _WithdrawalRecordListPageState extends State { Positioned( bottom: 0.0, left: 0.0, - child: Text(i.isEven ? '12:40:20' : '12:50:20', style: Theme.of(context).textTheme.subtitle2), + child: Text(i.isEven ? '12:40:20' : '12:50:20', style: Theme.of(context).textTheme.titleSmall), ), Positioned( bottom: 0.0, @@ -65,7 +65,7 @@ class _WithdrawalRecordListPageState extends State { i.isEven ? '审核失败' : '待审核', style: i.isEven ? TextStyle( fontSize: Dimens.font_sp12, - color: Theme.of(context).errorColor, + color: Theme.of(context).colorScheme.error, ) : const TextStyle( fontSize: Dimens.font_sp12, color: Colours.orange, diff --git a/lib/account/page/withdrawal_result_page.dart b/lib/account/page/withdrawal_result_page.dart index 7fca24291..313d62da5 100644 --- a/lib/account/page/withdrawal_result_page.dart +++ b/lib/account/page/withdrawal_result_page.dart @@ -38,12 +38,12 @@ class _WithdrawalResultPageState extends State { Gaps.vGap8, Text( '2021-02-21 15:20:10', - style: Theme.of(context).textTheme.subtitle2, + style: Theme.of(context).textTheme.titleSmall, ), Gaps.vGap8, Text( '5秒后返回提现页面', - style: Theme.of(context).textTheme.subtitle2, + style: Theme.of(context).textTheme.titleSmall, ), Gaps.vGap24, MyButton( diff --git a/lib/account/widgets/withdrawal_password_setting.dart b/lib/account/widgets/withdrawal_password_setting.dart index 12cb77625..d51b60039 100644 --- a/lib/account/widgets/withdrawal_password_setting.dart +++ b/lib/account/widgets/withdrawal_password_setting.dart @@ -76,7 +76,7 @@ class _WithdrawalPasswordSettingState extends State { ), ), Gaps.vGap10, - Text('提现密码不可为连续、重复的数字。', style: Theme.of(context).textTheme.subtitle2), + Text('提现密码不可为连续、重复的数字。', style: Theme.of(context).textTheme.titleSmall), ], ), ), diff --git a/lib/demo/navigator/screen/book_details_screen.dart b/lib/demo/navigator/screen/book_details_screen.dart index c38702e37..1c44aa930 100644 --- a/lib/demo/navigator/screen/book_details_screen.dart +++ b/lib/demo/navigator/screen/book_details_screen.dart @@ -24,8 +24,8 @@ class BookDetailsScreen extends StatelessWidget { }, child: const Text('Back'), ), - Text(book.title, style: Theme.of(context).textTheme.headline6), - Text(book.author, style: Theme.of(context).textTheme.subtitle1), + Text(book.title, style: Theme.of(context).textTheme.titleLarge), + Text(book.author, style: Theme.of(context).textTheme.titleMedium), ], ), ), diff --git a/lib/goods/page/goods_edit_page.dart b/lib/goods/page/goods_edit_page.dart index b0b68fdc8..ad3c6ca5d 100644 --- a/lib/goods/page/goods_edit_page.dart +++ b/lib/goods/page/goods_edit_page.dart @@ -102,7 +102,7 @@ class _GoodsEditPageState extends State { Center( child: Text( '点击添加商品图片', - style: Theme.of(context).textTheme.subtitle2?.copyWith(fontSize: Dimens.font_sp14), + style: Theme.of(context).textTheme.titleSmall?.copyWith(fontSize: Dimens.font_sp14), ), ), Gaps.vGap16, diff --git a/lib/goods/page/goods_size_edit_page.dart b/lib/goods/page/goods_size_edit_page.dart index 55af77057..94acb3ce1 100644 --- a/lib/goods/page/goods_size_edit_page.dart +++ b/lib/goods/page/goods_size_edit_page.dart @@ -49,7 +49,7 @@ class _GoodsSizeEditPageState extends State { Center( child: Text( '点击添加分类图片', - style: Theme.of(context).textTheme.subtitle2?.copyWith(fontSize: Dimens.font_sp14), + style: Theme.of(context).textTheme.titleSmall?.copyWith(fontSize: Dimens.font_sp14), ), ), Gaps.vGap16, diff --git a/lib/goods/page/goods_size_page.dart b/lib/goods/page/goods_size_page.dart index 67e1de43c..5c17a8553 100644 --- a/lib/goods/page/goods_size_page.dart +++ b/lib/goods/page/goods_size_page.dart @@ -105,7 +105,7 @@ class _GoodsSizePageState extends State { key: const Key('name_edit'), text: TextSpan( text: '先对名称进行', - style: Theme.of(context).textTheme.subtitle2?.copyWith(fontSize: Dimens.font_sp14), + style: Theme.of(context).textTheme.titleSmall?.copyWith(fontSize: Dimens.font_sp14), children: [ TextSpan( text: '编辑', @@ -179,7 +179,7 @@ class _GoodsSizePageState extends State { children: [ Offstage( offstage: _goodsSizeList[index].reducePrice.isEmpty, - child: _buildGoodsTag(Theme.of(context).errorColor, '立减${_goodsSizeList[index].reducePrice}元'), + child: _buildGoodsTag(Theme.of(context).colorScheme.error, '立减${_goodsSizeList[index].reducePrice}元'), ), Opacity( opacity: _goodsSizeList[index].currencyPrice.isEmpty ? 0.0 : 1.0, @@ -237,7 +237,7 @@ class _GoodsSizePageState extends State { extentRatio: 0.20, children: [ CustomSlidableAction( - backgroundColor: Theme.of(context).errorColor, + backgroundColor: Theme.of(context).colorScheme.error, child: Semantics( label: '删除', child: LoadAssetImage( diff --git a/lib/goods/widgets/goods_add_menu.dart b/lib/goods/widgets/goods_add_menu.dart index dc6a4718d..56e90e302 100644 --- a/lib/goods/widgets/goods_add_menu.dart +++ b/lib/goods/widgets/goods_add_menu.dart @@ -62,8 +62,8 @@ class _GoodsAddMenuState extends State with SingleTickerProviderSt icon: LoadAssetImage('goods/scanning', width: 16.0, height: 16.0, color: iconColor,), label: const Text('扫码添加'), style: TextButton.styleFrom( - foregroundColor: Theme.of(context).textTheme.bodyText2?.color, - disabledForegroundColor: Theme.of(context).textTheme.bodyText2?.color?.withOpacity(0.12), + foregroundColor: Theme.of(context).textTheme.bodyMedium?.color, + disabledForegroundColor: Theme.of(context).textTheme.bodyMedium?.color?.withOpacity(0.12), backgroundColor: backgroundColor, shape: const RoundedRectangleBorder( borderRadius: BorderRadius.only(topLeft: Radius.circular(8.0), topRight: Radius.circular(8.0)), @@ -82,8 +82,8 @@ class _GoodsAddMenuState extends State with SingleTickerProviderSt icon: LoadAssetImage('goods/add2', width: 16.0, height: 16.0, color: iconColor,), label: const Text('添加商品'), style: TextButton.styleFrom( - foregroundColor: Theme.of(context).textTheme.bodyText2?.color, - disabledForegroundColor: Theme.of(context).textTheme.bodyText2?.color?.withOpacity(0.12), + foregroundColor: Theme.of(context).textTheme.bodyMedium?.color, + disabledForegroundColor: Theme.of(context).textTheme.bodyMedium?.color?.withOpacity(0.12), backgroundColor: backgroundColor, shape: const RoundedRectangleBorder( borderRadius: BorderRadius.only(bottomLeft: Radius.circular(8.0), bottomRight: Radius.circular(8.0)), diff --git a/lib/goods/widgets/goods_delete_bottom_sheet.dart b/lib/goods/widgets/goods_delete_bottom_sheet.dart index 76ad0068f..7118667fd 100644 --- a/lib/goods/widgets/goods_delete_bottom_sheet.dart +++ b/lib/goods/widgets/goods_delete_bottom_sheet.dart @@ -32,7 +32,7 @@ class GoodsDeleteBottomSheet extends StatelessWidget { Gaps.line, MyButton( minHeight: 54.0, - textColor: Theme.of(context).errorColor, + textColor: Theme.of(context).colorScheme.error, text: '确认删除', backgroundColor: Colors.transparent, onPressed: () { diff --git a/lib/goods/widgets/goods_item.dart b/lib/goods/widgets/goods_item.dart index eebf2ae43..752d2df0a 100644 --- a/lib/goods/widgets/goods_item.dart +++ b/lib/goods/widgets/goods_item.dart @@ -68,7 +68,7 @@ class GoodsItem extends StatelessWidget { visible: item.type % 3 == 0, child: _GoodsItemTag( text: '立减', - color: Theme.of(context).errorColor, + color: Theme.of(context).colorScheme.error, ), ), Opacity( @@ -109,7 +109,7 @@ class GoodsItem extends StatelessWidget { padding: const EdgeInsets.only(top: 10.0), child: Text( '特产美味', - style: Theme.of(context).textTheme.subtitle2, + style: Theme.of(context).textTheme.titleSmall, ), ) ], diff --git a/lib/login/page/login_page.dart b/lib/login/page/login_page.dart index 63f139151..7e4fe15d3 100644 --- a/lib/login/page/login_page.dart +++ b/lib/login/page/login_page.dart @@ -132,7 +132,7 @@ class _LoginPageState extends State with ChangeNotifierMixin NavigatorUtils.push(context, LoginRouter.resetPasswordPage), ), diff --git a/lib/login/page/sms_login_page.dart b/lib/login/page/sms_login_page.dart index 9e0df1c97..50a8b6aa8 100644 --- a/lib/login/page/sms_login_page.dart +++ b/lib/login/page/sms_login_page.dart @@ -105,12 +105,12 @@ class _SMSLoginPageState extends State with ChangeNotifierMixin[ TextSpan( text: DeerLocalizations.of(context)!.register, style: TextStyle( - color: Theme.of(context).errorColor, + color: Theme.of(context).colorScheme.error, ), recognizer: TapGestureRecognizer() ..onTap = () { @@ -133,7 +133,7 @@ class _SMSLoginPageState extends State with ChangeNotifierMixin NavigatorUtils.push(context, LoginRouter.resetPasswordPage), ), diff --git a/lib/login/page/update_password_page.dart b/lib/login/page/update_password_page.dart index 8c6362663..188d6bf0c 100644 --- a/lib/login/page/update_password_page.dart +++ b/lib/login/page/update_password_page.dart @@ -78,7 +78,7 @@ class _UpdatePasswordPageState extends State with ChangeNoti Gaps.vGap8, Text( '设置账号 15000000000', - style: Theme.of(context).textTheme.subtitle2?.copyWith(fontSize: Dimens.font_sp12), + style: Theme.of(context).textTheme.titleSmall?.copyWith(fontSize: Dimens.font_sp12), ), Gaps.vGap32, MyTextField( diff --git a/lib/order/page/order_info_page.dart b/lib/order/page/order_info_page.dart index 70d8d865e..0755f35fd 100644 --- a/lib/order/page/order_info_page.dart +++ b/lib/order/page/order_info_page.dart @@ -26,7 +26,7 @@ class _OrderInfoPageState extends State { @override Widget build(BuildContext context) { - final Color red = Theme.of(context).errorColor; + final Color red = Theme.of(context).colorScheme.error; final bool isDark = context.isDark; final Widget bottomMenu = Container( @@ -176,7 +176,7 @@ class _OrderInfoPageState extends State { padding: const EdgeInsets.symmetric(vertical: 4.0), child: Row( children: [ - Text(title, style: Theme.of(context).textTheme.subtitle2?.copyWith(fontSize: Dimens.font_sp14)), + Text(title, style: Theme.of(context).textTheme.titleSmall?.copyWith(fontSize: Dimens.font_sp14)), Gaps.hGap8, Text(content) ], @@ -204,11 +204,11 @@ class _OrderInfoPageState extends State { overflow: TextOverflow.ellipsis, ), Gaps.vGap4, - Text(index.isEven ? '玫瑰香 520ml' : '125ml', style: Theme.of(context).textTheme.subtitle2), + Text(index.isEven ? '玫瑰香 520ml' : '125ml', style: Theme.of(context).textTheme.titleSmall), Gaps.vGap8, Row( children: [ - _buildGoodsTag(Theme.of(context).errorColor, '立减2.50元'), + _buildGoodsTag(Theme.of(context).colorScheme.error, '立减2.50元'), Gaps.hGap4, Offstage( offstage: index % 2 != 0, @@ -264,7 +264,7 @@ class _OrderInfoPageState extends State { children: [ Text(title), Text(content, style: TextStyle( - color: contentTextColor ?? Theme.of(context).textTheme.bodyText2?.color, + color: contentTextColor ?? Theme.of(context).textTheme.bodyMedium?.color, fontWeight: FontWeight.bold )) ], @@ -293,9 +293,9 @@ class _OrderInfoPageState extends State { }, style: ButtonStyle( // 按下高亮颜色 - overlayColor: MaterialStateProperty.all(Theme.of(context).errorColor.withOpacity(0.2)), + overlayColor: MaterialStateProperty.all(Theme.of(context).colorScheme.error.withOpacity(0.2)), ), - child: Text('拨打', style: TextStyle(color: Theme.of(context).errorColor),), + child: Text('拨打', style: TextStyle(color: Theme.of(context).colorScheme.error),), ), ], ); diff --git a/lib/order/page/order_page.dart b/lib/order/page/order_page.dart index 4e682b897..f840ef1b9 100644 --- a/lib/order/page/order_page.dart +++ b/lib/order/page/order_page.dart @@ -260,7 +260,7 @@ class _TabView extends StatelessWidget { right: 0.0, child: index < 3 ? DecoratedBox( decoration: BoxDecoration( - color: Theme.of(context).errorColor, + color: Theme.of(context).colorScheme.error, borderRadius: BorderRadius.circular(11.0), ), child: const Padding( diff --git a/lib/order/page/order_track_page.dart b/lib/order/page/order_track_page.dart index edfa87232..fdc03dc10 100644 --- a/lib/order/page/order_track_page.dart +++ b/lib/order/page/order_track_page.dart @@ -62,12 +62,12 @@ class _OrderTrackPageState extends State { child: Text(_titleList[index], style: index == 0 ? TextStyle( fontSize: Dimens.font_sp14, color: primaryColor, - ) : Theme.of(context).textTheme.bodyText2), + ) : Theme.of(context).textTheme.bodyMedium), ), subtitle: Text(_timeList[index], style: index == 0 ? TextStyle( fontSize: Dimens.font_sp12, color: primaryColor, - ) : Theme.of(context).textTheme.subtitle2), + ) : Theme.of(context).textTheme.titleSmall), content: const Text(''), isActive: index == 0, // TODO(weilu): 这里的状态图标无法修改,暂时使用原生的。应该可以复制Step代码修改一下。 diff --git a/lib/order/widgets/order_item.dart b/lib/order/widgets/order_item.dart index 37f4e1583..dc03995e3 100644 --- a/lib/order/widgets/order_item.dart +++ b/lib/order/widgets/order_item.dart @@ -42,7 +42,7 @@ class OrderItem extends StatelessWidget { } Widget _buildContent(BuildContext context) { - final TextStyle? textTextStyle = Theme.of(context).textTheme.bodyText2?.copyWith(fontSize: Dimens.font_sp12); + final TextStyle? textTextStyle = Theme.of(context).textTheme.bodyMedium?.copyWith(fontSize: Dimens.font_sp12); final bool isDark = context.isDark; return Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -56,7 +56,7 @@ class OrderItem extends StatelessWidget { '货到付款', style: TextStyle( fontSize: Dimens.font_sp12, - color: Theme.of(context).errorColor, + color: Theme.of(context).colorScheme.error, ), ), ], @@ -64,7 +64,7 @@ class OrderItem extends StatelessWidget { Gaps.vGap8, Text( '西安市雁塔区 鱼化寨街道唐兴路唐兴数码3楼318', - style: Theme.of(context).textTheme.subtitle2, + style: Theme.of(context).textTheme.titleSmall, ), Gaps.vGap8, Gaps.line, @@ -74,7 +74,7 @@ class OrderItem extends StatelessWidget { style: textTextStyle, children: [ const TextSpan(text: '清凉一度抽纸'), - TextSpan(text: ' x1', style: Theme.of(context).textTheme.subtitle2), + TextSpan(text: ' x1', style: Theme.of(context).textTheme.titleSmall), ], ), ), @@ -84,7 +84,7 @@ class OrderItem extends StatelessWidget { style: textTextStyle, children: [ const TextSpan(text: '清凉一度抽纸'), - TextSpan(text: ' x2', style: Theme.of(context).textTheme.subtitle2), + TextSpan(text: ' x2', style: Theme.of(context).textTheme.titleSmall), ], ), ), @@ -97,7 +97,7 @@ class OrderItem extends StatelessWidget { style: textTextStyle, children: [ TextSpan(text: Utils.formatPrice('20.00', format: MoneyFormat.NORMAL)), - TextSpan(text: ' 共3件商品', style: Theme.of(context).textTheme.subtitle2?.copyWith(fontSize: Dimens.font_sp10)), + TextSpan(text: ' 共3件商品', style: Theme.of(context).textTheme.titleSmall?.copyWith(fontSize: Dimens.font_sp10)), ], ), ), @@ -172,9 +172,9 @@ class OrderItem extends StatelessWidget { }, style: ButtonStyle( // 按下高亮颜色 - overlayColor: MaterialStateProperty.all(Theme.of(context).errorColor.withOpacity(0.2)), + overlayColor: MaterialStateProperty.all(Theme.of(context).colorScheme.error.withOpacity(0.2)), ), - child: Text('拨打', style: TextStyle(color: Theme.of(context).errorColor),), + child: Text('拨打', style: TextStyle(color: Theme.of(context).colorScheme.error),), ), ], ); diff --git a/lib/setting/provider/theme_provider.dart b/lib/setting/provider/theme_provider.dart index 9fd864458..e53c1ba3e 100644 --- a/lib/setting/provider/theme_provider.dart +++ b/lib/setting/provider/theme_provider.dart @@ -11,7 +11,7 @@ extension ThemeModeExtension on ThemeMode { } class ThemeProvider extends ChangeNotifier { - + void syncTheme() { final String theme = SpUtil.getString(Constant.theme) ?? ''; if (theme.isNotEmpty && theme != ThemeMode.system.value) { @@ -38,11 +38,11 @@ class ThemeProvider extends ChangeNotifier { ThemeData getTheme({bool isDarkMode = false}) { return ThemeData( - errorColor: isDarkMode ? Colours.dark_red : Colours.red, primaryColor: isDarkMode ? Colours.dark_app_main : Colours.app_main, colorScheme: ColorScheme.fromSwatch().copyWith( brightness: isDarkMode ? Brightness.dark : Brightness.light, secondary: isDarkMode ? Colours.dark_app_main : Colours.app_main, + error: isDarkMode ? Colours.dark_red : Colours.red, ), // Tab指示器颜色 indicatorColor: isDarkMode ? Colours.dark_app_main : Colours.app_main, @@ -61,10 +61,10 @@ class ThemeProvider extends ChangeNotifier { ), textTheme: TextTheme( // TextField输入文字颜色 - subtitle1: isDarkMode ? TextStyles.textDark : TextStyles.text, + titleMedium: isDarkMode ? TextStyles.textDark : TextStyles.text, // Text文字样式 - bodyText2: isDarkMode ? TextStyles.textDark : TextStyles.text, - subtitle2: isDarkMode ? TextStyles.textDarkGray12 : TextStyles.textGray12, + bodyMedium: isDarkMode ? TextStyles.textDark : TextStyles.text, + titleSmall: isDarkMode ? TextStyles.textDarkGray12 : TextStyles.textGray12, ), inputDecorationTheme: InputDecorationTheme( hintStyle: isDarkMode ? TextStyles.textHint14 : TextStyles.textDarkGray14, diff --git a/lib/shop/page/freight_config_page.dart b/lib/shop/page/freight_config_page.dart index 511bc556e..8830ea571 100644 --- a/lib/shop/page/freight_config_page.dart +++ b/lib/shop/page/freight_config_page.dart @@ -137,7 +137,7 @@ class _FreightConfigPageState extends State { _getPriceText(index).isEmpty ? '订单金额' : _getPriceText(index), key: Key('订单金额$index'), textAlign: TextAlign.end, - style: _getPriceText(index).isEmpty ? Theme.of(context).textTheme.subtitle2?.copyWith(fontSize: Dimens.font_sp14) : null, + style: _getPriceText(index).isEmpty ? Theme.of(context).textTheme.titleSmall?.copyWith(fontSize: Dimens.font_sp14) : null, ), ), )), @@ -195,7 +195,7 @@ class _FreightConfigPageState extends State { child: Text( _list[index].price.isEmpty ? (_list[index].type == 1 ? '运费比率' : '运费金额'): _list[index].price, textAlign: TextAlign.end, - style: _list[index].price.isEmpty ? Theme.of(context).textTheme.subtitle2?.copyWith(fontSize: Dimens.font_sp14) : null, + style: _list[index].price.isEmpty ? Theme.of(context).textTheme.titleSmall?.copyWith(fontSize: Dimens.font_sp14) : null, ), ), )), diff --git a/lib/shop/page/message_page.dart b/lib/shop/page/message_page.dart index 4f3cb5909..993850d32 100644 --- a/lib/shop/page/message_page.dart +++ b/lib/shop/page/message_page.dart @@ -56,7 +56,7 @@ class _MessageItemState extends State<_MessageItem> { return Column( children: [ Gaps.vGap15, - Text('2021-5-31 17:19:36', style: Theme.of(context).textTheme.subtitle2), + Text('2021-5-31 17:19:36', style: Theme.of(context).textTheme.titleSmall), Gaps.vGap8, MyCard( child: Padding( diff --git a/lib/statistics/page/goods_statistics_page.dart b/lib/statistics/page/goods_statistics_page.dart index 1b51f79c2..2fca564fe 100644 --- a/lib/statistics/page/goods_statistics_page.dart +++ b/lib/statistics/page/goods_statistics_page.dart @@ -175,7 +175,7 @@ class _GoodsStatisticsPageState extends State { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ const Text('那鲁火多饮料', maxLines: 1, overflow: TextOverflow.ellipsis, style: TextStyle(fontWeight: FontWeight.bold, fontSize: Dimens.font_sp12)), - Text('250ml', style: Theme.of(context).textTheme.subtitle2), + Text('250ml', style: Theme.of(context).textTheme.titleSmall), ], ), ), @@ -186,8 +186,8 @@ class _GoodsStatisticsPageState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Text('100件', style: Theme.of(context).textTheme.subtitle2), - Text('未支付', style: Theme.of(context).textTheme.subtitle2), + Text('100件', style: Theme.of(context).textTheme.titleSmall), + Text('未支付', style: Theme.of(context).textTheme.titleSmall), ], ), ), @@ -196,8 +196,8 @@ class _GoodsStatisticsPageState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: _type ? MainAxisAlignment.center : MainAxisAlignment.spaceBetween, children: [ - Text('400件', style: Theme.of(context).textTheme.subtitle2), - Visibility(visible: !_type, child: Text('已支付', style: Theme.of(context).textTheme.subtitle2)), + Text('400件', style: Theme.of(context).textTheme.titleSmall), + Visibility(visible: !_type, child: Text('已支付', style: Theme.of(context).textTheme.titleSmall)), ], ), ], diff --git a/lib/statistics/page/order_statistics_page.dart b/lib/statistics/page/order_statistics_page.dart index bea1a6004..421dc62bc 100644 --- a/lib/statistics/page/order_statistics_page.dart +++ b/lib/statistics/page/order_statistics_page.dart @@ -139,7 +139,7 @@ class _OrderStatisticsPageState extends State with TickerPr Gaps.vGap16, _buildChart(const Color(0xFFFFAA33), const Color(0x80FFAA33), '完成订单', '2000'), Gaps.vGap16, - _buildChart(Theme.of(context).errorColor, const Color(0x80FF4759), '取消订单', '1000'), + _buildChart(Theme.of(context).colorScheme.error, const Color(0x80FF4759), '取消订单', '1000'), Gaps.vGap16, ], ) @@ -274,7 +274,7 @@ class _OrderStatisticsPageState extends State with TickerPr final List widgets = []; void addWidget(String str) { widgets.add(Center( - child: Text(str, style: Theme.of(context).textTheme.subtitle2), + child: Text(str, style: Theme.of(context).textTheme.titleSmall), )); } _weeks.forEach(addWidget); diff --git a/lib/statistics/page/statistics_page.dart b/lib/statistics/page/statistics_page.dart index ca28ab859..4f608e089 100644 --- a/lib/statistics/page/statistics_page.dart +++ b/lib/statistics/page/statistics_page.dart @@ -172,7 +172,7 @@ class _StatisticsTab extends StatelessWidget { children: [ LoadAssetImage('statistic/$img', width: 40.0, height: 40.0), Gaps.vGap4, - Text(title, style: Theme.of(context).textTheme.subtitle2), + Text(title, style: Theme.of(context).textTheme.titleSmall), Gaps.vGap8, Text(content, style: const TextStyle(fontSize: Dimens.font_sp18)), ], diff --git a/lib/store/page/store_audit_page.dart b/lib/store/page/store_audit_page.dart index 8733ff6bd..121c65490 100644 --- a/lib/store/page/store_audit_page.dart +++ b/lib/store/page/store_audit_page.dart @@ -111,7 +111,7 @@ class _StoreAuditPageState extends State { Center( child: Text( '店主手持身份证或营业执照', - style: Theme.of(context).textTheme.subtitle2?.copyWith(fontSize: Dimens.font_sp14), + style: Theme.of(context).textTheme.titleSmall?.copyWith(fontSize: Dimens.font_sp14), ), ), Gaps.vGap16, diff --git a/lib/store/page/store_audit_result_page.dart b/lib/store/page/store_audit_result_page.dart index 5258d4f3a..05672e8f0 100644 --- a/lib/store/page/store_audit_result_page.dart +++ b/lib/store/page/store_audit_result_page.dart @@ -39,12 +39,12 @@ class _StoreAuditResultPageState extends State { Gaps.vGap8, Text( '2021-02-21 15:20:10', - style: Theme.of(context).textTheme.subtitle2, + style: Theme.of(context).textTheme.titleSmall, ), Gaps.vGap8, Text( '预计完成时间:02月28日', - style: Theme.of(context).textTheme.subtitle2, + style: Theme.of(context).textTheme.titleSmall, ), Gaps.vGap24, MyButton( diff --git a/lib/widgets/click_item.dart b/lib/widgets/click_item.dart index adcb8c53e..eece1f2ca 100644 --- a/lib/widgets/click_item.dart +++ b/lib/widgets/click_item.dart @@ -34,7 +34,7 @@ class ClickItem extends StatelessWidget { maxLines: maxLines, textAlign: maxLines == 1 ? TextAlign.right : textAlign, overflow: TextOverflow.ellipsis, - style: Theme.of(context).textTheme.subtitle2?.copyWith(fontSize: Dimens.font_sp14), + style: Theme.of(context).textTheme.titleSmall?.copyWith(fontSize: Dimens.font_sp14), ), ), Gaps.hGap8, diff --git a/lib/widgets/state_layout.dart b/lib/widgets/state_layout.dart index 6fd4464f4..9e76afa9e 100644 --- a/lib/widgets/state_layout.dart +++ b/lib/widgets/state_layout.dart @@ -35,7 +35,7 @@ class StateLayout extends StatelessWidget { const SizedBox(width: double.infinity, height: Dimens.gap_dp16,), Text( hintText ?? type.hintText, - style: Theme.of(context).textTheme.subtitle2?.copyWith(fontSize: Dimens.font_sp14), + style: Theme.of(context).textTheme.titleSmall?.copyWith(fontSize: Dimens.font_sp14), ), Gaps.vGap50, ], From 9b6bfa275edc6adb58d7facad1d2289293a05239 Mon Sep 17 00:00:00 2001 From: weilu Date: Wed, 25 Jan 2023 21:50:39 +0800 Subject: [PATCH 128/206] =?UTF-8?q?=E9=80=82=E9=85=8Dflutter=203.7.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ios/Runner.xcodeproj/project.pbxproj | 10 ++++++---- ios/Runner/Info.plist | 2 ++ lib/demo/overlay/page/overlay_demo_page.dart | 2 +- lib/net/intercept.dart | 2 +- lib/statistics/page/goods_statistics_page.dart | 4 ++-- lib/statistics/page/order_statistics_page.dart | 2 +- lib/util/log_utils.dart | 2 +- lib/widgets/my_flexible_space_bar.dart | 2 +- lib/widgets/popup_window.dart | 2 +- pubspec.yaml | 8 ++++---- 10 files changed, 20 insertions(+), 16 deletions(-) diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 83ac4e64d..db43885e3 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 50; + objectVersion = 54; objects = { /* Begin PBXBuildFile section */ @@ -200,6 +200,7 @@ /* Begin PBXShellScriptBuildPhase section */ 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); @@ -296,6 +297,7 @@ }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); @@ -383,7 +385,7 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; DEVELOPMENT_TEAM = ""; - ENABLE_BITCODE = YES; + ENABLE_BITCODE = NO; "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "i386 arm64"; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -522,7 +524,7 @@ CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; DEVELOPMENT_TEAM = ""; - ENABLE_BITCODE = YES; + ENABLE_BITCODE = NO; "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "i386 arm64"; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -557,7 +559,7 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; DEVELOPMENT_TEAM = ""; - ENABLE_BITCODE = YES; + ENABLE_BITCODE = NO; "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "i386 arm64"; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index 6563bbae4..cbc408b3f 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -56,5 +56,7 @@ CADisableMinimumFrameDurationOnPhone + UIApplicationSupportsIndirectInputEvents + diff --git a/lib/demo/overlay/page/overlay_demo_page.dart b/lib/demo/overlay/page/overlay_demo_page.dart index d2e465fce..11839c734 100644 --- a/lib/demo/overlay/page/overlay_demo_page.dart +++ b/lib/demo/overlay/page/overlay_demo_page.dart @@ -29,7 +29,7 @@ class _OverlayDemoPageState extends State { builder: (context) => _buildBottomNavigation(context), ); /// 添加悬浮 - Overlay.of(context)?.insert(_overlayEntry!); + Overlay.of(context).insert(_overlayEntry!); }); } diff --git a/lib/net/intercept.dart b/lib/net/intercept.dart index 83ae695a0..53dc91823 100644 --- a/lib/net/intercept.dart +++ b/lib/net/intercept.dart @@ -104,7 +104,7 @@ class LoggingInterceptor extends Interceptor{ Log.d('RequestMethod: ${options.method}'); Log.d('RequestHeaders:${options.headers}'); Log.d('RequestContentType: ${options.contentType}'); - Log.d('RequestData: ${options.data.toString()}'); + Log.d('RequestData: ${options.data}'); super.onRequest(options, handler); } diff --git a/lib/statistics/page/goods_statistics_page.dart b/lib/statistics/page/goods_statistics_page.dart index 2fca564fe..a9add263a 100644 --- a/lib/statistics/page/goods_statistics_page.dart +++ b/lib/statistics/page/goods_statistics_page.dart @@ -42,11 +42,11 @@ class _GoodsStatisticsPageState extends State { Gaps.hGap12, Gaps.vLine, Gaps.hGap12, - _buildSelectedText('${_initialDay.month.toString()}月', 1), + _buildSelectedText('${_initialDay.month}月', 1), Gaps.hGap12, Gaps.vLine, Gaps.hGap12, - _buildSelectedText(_type ? '${date.DateUtils.previousWeekToString(_initialDay)} -${date.DateUtils.apiDayFormat2(_initialDay)}' : '${_initialDay.day.toString()}日', 2), + _buildSelectedText(_type ? '${date.DateUtils.previousWeekToString(_initialDay)} -${date.DateUtils.apiDayFormat2(_initialDay)}' : '${_initialDay.day}日', 2), ], ); diff --git a/lib/statistics/page/order_statistics_page.dart b/lib/statistics/page/order_statistics_page.dart index 421dc62bc..b11b2ac35 100644 --- a/lib/statistics/page/order_statistics_page.dart +++ b/lib/statistics/page/order_statistics_page.dart @@ -78,7 +78,7 @@ class _OrderStatisticsPageState extends State with TickerPr Gaps.hGap12, Gaps.vLine, Gaps.hGap12, - _buildButton('${_initialDay.month.toString()}月', const Key('month'), 1), + _buildButton('${_initialDay.month}月', const Key('month'), 1), Gaps.hGap12, Gaps.vLine, Gaps.hGap12, diff --git a/lib/util/log_utils.dart b/lib/util/log_utils.dart index c3f8c34b9..d2f3c56ca 100644 --- a/lib/util/log_utils.dart +++ b/lib/util/log_utils.dart @@ -66,7 +66,7 @@ class Log { } } else if (value is List) { if (value.isEmpty || value.length > 50) { - LogUtil.v('${_indent(tabs)} $key: ${value.toString()}', tag: tag); + LogUtil.v('${_indent(tabs)} $key: $value', tag: tag); } else { LogUtil.v('${_indent(tabs)} $key: [', tag: tag); _printList(value, tabs: tabs); diff --git a/lib/widgets/my_flexible_space_bar.dart b/lib/widgets/my_flexible_space_bar.dart index 2e90b30dd..ce0b15512 100644 --- a/lib/widgets/my_flexible_space_bar.dart +++ b/lib/widgets/my_flexible_space_bar.dart @@ -209,7 +209,7 @@ class _FlexibleSpaceBarState extends State { final double opacity = settings.toolbarOpacity; if (opacity > 0.0) { - TextStyle titleStyle = theme.primaryTextTheme.headline6!; + TextStyle titleStyle = theme.primaryTextTheme.titleLarge!; titleStyle = titleStyle.copyWith( color: titleStyle.color!.withOpacity(opacity), fontWeight: t != 0 ? FontWeight.normal : FontWeight.bold diff --git a/lib/widgets/popup_window.dart b/lib/widgets/popup_window.dart index 74d744066..136e9407e 100644 --- a/lib/widgets/popup_window.dart +++ b/lib/widgets/popup_window.dart @@ -31,7 +31,7 @@ Future showPopupWindow({ case TargetPlatform.windows: semanticLabel ??= MaterialLocalizations.of(context).popupMenuLabel; } - final RenderBox? overlay = Overlay.of(context)!.context.findRenderObject() as RenderBox?; + final RenderBox? overlay = Overlay.of(context).context.findRenderObject() as RenderBox?; // 默认位置锚点下方 final Offset defaultOffset = Offset(0, anchor.size.height); diff --git a/pubspec.yaml b/pubspec.yaml index 118993052..3e59e8b0c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -25,7 +25,7 @@ dependencies: # 网络库 https://github.com/cfug/diox diox: ^5.0.0-dev.3 # https://github.com/ReactiveX/rxdart - rxdart: ^0.27.5 + rxdart: ^0.27.7 # Dart 常用工具类库 https://github.com/Sky24n/common_utils common_utils: 2.1.0 sp_util: 2.0.3 @@ -34,13 +34,13 @@ dependencies: # Flutter 轮播图 https://github.com/mdddj/flutter_swiper_null_safety flutter_swiper_null_safety_flutter3: ^3.0.0 # flutter_swiper很久不维护,可以使用这个替代 # 启动URL的插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/url_launcher - url_launcher: 6.1.5 + url_launcher: 6.1.8 # 图片选择插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/image_picker image_picker: 0.8.6 # 侧滑删除 https://github.com/letsar/flutter_slidable flutter_slidable: ^2.0.0 # WebView插件 https://github.com/flutter/plugins/tree/master/packages/webview_flutter - webview_flutter: 4.0.1 + webview_flutter: 4.0.2 # 处理键盘事件 https://github.com/diegoveloper/flutter_keyboard_actions keyboard_actions: ^4.1.0 # 列表悬浮头 https://github.com/fluttercommunity/flutter_sticky_headers @@ -78,7 +78,7 @@ dependencies: # 刮刮卡 https://github.com/vintage/scratcher scratcher: ^2.3.0 # 动画效果 https://github.com/xvrh/lottie-flutter - lottie: ^2.1.0 + lottie: ^2.2.0 # https://github.com/simplezhli/flutter_deer/issues/187 dependency_overrides: From f277a1b6b2f6b73411ab2074772ddd00222371e6 Mon Sep 17 00:00:00 2001 From: weilu Date: Thu, 26 Jan 2023 10:43:12 +0800 Subject: [PATCH 129/206] flutter 3.7.0 --- .github/workflows/flutter-drive.yml | 8 ++++---- .github/workflows/flutter-web-deploy.yml | 4 ++-- README-EN.md | 4 ++-- README.md | 4 ++-- docs/CHANGELOG.md | 4 ++++ pubspec.yaml | 6 +++--- 6 files changed, 17 insertions(+), 13 deletions(-) diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index 8f5ef3658..33c1e1b56 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -18,7 +18,7 @@ jobs: matrix: device: - "iPhone 8" - - "iPhone 12 Pro Max" + - "iPhone 14 Pro Max" # When set to true, GitHub cancels all in-progress jobs if any matrix job # fails. fail-fast: false @@ -53,7 +53,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v2 with: - flutter-version: '3.3.7' + flutter-version: '3.7.0' channel: 'stable' # or: 'dev' or 'beta' architecture: x64 - run: "flutter clean" @@ -77,7 +77,7 @@ jobs: java-version: 1.11 - uses: subosito/flutter-action@v2 with: - flutter-version: '3.3.7' + flutter-version: '3.7.0' channel: 'stable' # or: 'dev' or 'beta' architecture: x64 - name: "Run Flutter Driver tests" @@ -103,7 +103,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v2 with: - flutter-version: '3.3.7' + flutter-version: '3.7.0' channel: 'stable' architecture: x64 - run: "flutter pub get" diff --git a/.github/workflows/flutter-web-deploy.yml b/.github/workflows/flutter-web-deploy.yml index bcde060fa..734bd7f71 100644 --- a/.github/workflows/flutter-web-deploy.yml +++ b/.github/workflows/flutter-web-deploy.yml @@ -5,7 +5,7 @@ name: flutter_deer web deploy on: push: paths: - - 'pubspec1.yaml' + - 'pubspec.yaml' jobs: web_build_and_deploy: @@ -14,7 +14,7 @@ jobs: - uses: actions/checkout@v2.3.1 - uses: subosito/flutter-action@v2 with: - flutter-version: '3.3.7' + flutter-version: '3.7.0' channel: 'stable' architecture: x64 - name: "Web Build 🔧" diff --git a/README-EN.md b/README-EN.md index 8c4d3ef61..5708f9541 100644 --- a/README-EN.md +++ b/README-EN.md @@ -61,9 +61,9 @@ Web:https://simplezhli.github.io/flutter_deer/ [![Build Status](https://github.com/simplezhli/flutter_deer/workflows/flutter_deer%20driver/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions?query=workflow%3A%22flutter_deer+driver%22+branch%3Amaster) - 1. Flutter version 3.3.7 + 1. Flutter version 3.7.0 - 2. Dart version 2.18.4 + 2. Dart version 2.19.0 ## Precautions diff --git a/README.md b/README.md index 695602bef..6cee07efd 100644 --- a/README.md +++ b/README.md @@ -66,9 +66,9 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ [![Build Status](https://github.com/simplezhli/flutter_deer/workflows/flutter_deer%20driver/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions?query=workflow%3A%22flutter_deer+driver%22+branch%3Amaster) - 1. Flutter version 3.3.7 + 1. Flutter version 3.7.0 - 2. Dart version 2.18.4 + 2. Dart version 2.19.0 ## 注意事项 diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 600d56587..076731c6f 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,5 +1,9 @@ # Change Log: +## 1.2.3 + +* Flutter SDK升至3.7.0。 + ## 1.2.2 * 适配Android 12。 diff --git a/pubspec.yaml b/pubspec.yaml index 3e59e8b0c..124163cba 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,15 +1,15 @@ name: flutter_deer description: Flutter Deer -version: 1.2.2+20 +version: 1.2.3+21 # 唯鹿 homepage: https://weilu.blog.csdn.net/ publish_to: 'none' environment: - sdk: ">=2.18.0 <3.0.0" - flutter: ">=3.3.0 <4.0.0" + sdk: ">=2.19.0 <3.0.0" + flutter: ">=3.7.0 <4.0.0" dependencies: flutter: From aa724d2eb98185d47f050adcd9dcbd52c9726ee9 Mon Sep 17 00:00:00 2001 From: weilu Date: Thu, 26 Jan 2023 10:51:06 +0800 Subject: [PATCH 130/206] flutter 3.7.0 --- .github/workflows/flutter-web-deploy.yml | 2 +- macos/Podfile | 2 +- macos/Runner.xcodeproj/project.pbxproj | 11 ++++++----- .../xcshareddata/xcschemes/Runner.xcscheme | 2 +- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/.github/workflows/flutter-web-deploy.yml b/.github/workflows/flutter-web-deploy.yml index 734bd7f71..e304bec34 100644 --- a/.github/workflows/flutter-web-deploy.yml +++ b/.github/workflows/flutter-web-deploy.yml @@ -5,7 +5,7 @@ name: flutter_deer web deploy on: push: paths: - - 'pubspec.yaml' + - 'pubspec1.yaml' jobs: web_build_and_deploy: diff --git a/macos/Podfile b/macos/Podfile index 2a6864b04..968dea068 100644 --- a/macos/Podfile +++ b/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.11' +platform :osx, '10.14' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj index 151dcc8b7..2ec4ad4d1 100644 --- a/macos/Runner.xcodeproj/project.pbxproj +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 51; + objectVersion = 54; objects = { /* Begin PBXAggregateTarget section */ @@ -203,7 +203,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0920; - LastUpgradeCheck = 0930; + LastUpgradeCheck = 1300; ORGANIZATIONNAME = "The Flutter Authors"; TargetAttributes = { 33CC10EC2044A3C60003C045 = { @@ -256,6 +256,7 @@ /* Begin PBXShellScriptBuildPhase section */ 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); @@ -417,7 +418,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.11; + MACOSX_DEPLOYMENT_TARGET = 10.14; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -500,7 +501,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.11; + MACOSX_DEPLOYMENT_TARGET = 10.14; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -547,7 +548,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.11; + MACOSX_DEPLOYMENT_TARGET = 10.14; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index f49abc7d7..6e740f2af 100644 --- a/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ Date: Thu, 26 Jan 2023 12:43:41 +0800 Subject: [PATCH 131/206] =?UTF-8?q?=E9=9B=86=E6=88=90=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/ISSUE_TEMPLATE/deer-issue-template.md | 6 +++--- lib/home/home_page.dart | 2 ++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/deer-issue-template.md b/.github/ISSUE_TEMPLATE/deer-issue-template.md index f932971bc..0c880f12e 100644 --- a/.github/ISSUE_TEMPLATE/deer-issue-template.md +++ b/.github/ISSUE_TEMPLATE/deer-issue-template.md @@ -10,9 +10,9 @@ assignees: '' ### 运行环境 ### - [x] 电脑系统:如:`Windows 11` -- [x] 设备型号:如:`小米12` -- [x] 设备系统版本:如 `Android 12` -- [x] Flutter 版本:如 `3.3.2` +- [x] 设备型号:如:`小米13` +- [x] 设备系统版本:如 `Android 13` +- [x] Flutter 版本:如 `3.7.0` ### 具体问题描述 ### diff --git a/lib/home/home_page.dart b/lib/home/home_page.dart index 9eeb00f8d..91722e8ac 100644 --- a/lib/home/home_page.dart +++ b/lib/home/home_page.dart @@ -77,6 +77,7 @@ class _HomeState extends State with RestorationMixin{ icon: tabImages[i][0], activeIcon: tabImages[i][1], label: _appBarTitles[i], + tooltip: _appBarTitles[i], ); }); } @@ -109,6 +110,7 @@ class _HomeState extends State with RestorationMixin{ icon: tabImagesDark[i][0], activeIcon: tabImagesDark[i][1], label: _appBarTitles[i], + tooltip: _appBarTitles[i], ); }); } From e95a33505d376b4000e3047074a3c322471d6fde Mon Sep 17 00:00:00 2001 From: weilu Date: Sat, 4 Feb 2023 10:15:07 +0800 Subject: [PATCH 132/206] =?UTF-8?q?=E6=9B=BF=E6=8D=A2desktop=5Fwindow?= =?UTF-8?q?=E6=8F=92=E4=BB=B6=E4=B8=BAwindow=5Fmanager?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/home/splash_page.dart | 6 +----- lib/main.dart | 20 +++++++++++++++++++ macos/Flutter/GeneratedPluginRegistrant.swift | 6 ++++-- macos/Runner.xcodeproj/project.pbxproj | 6 ++++-- pubspec.yaml | 4 ++-- .../flutter/generated_plugin_registrant.cc | 9 ++++++--- windows/flutter/generated_plugins.cmake | 3 ++- 7 files changed, 39 insertions(+), 15 deletions(-) diff --git a/lib/home/splash_page.dart b/lib/home/splash_page.dart index 92c19c54c..1a0b378a9 100644 --- a/lib/home/splash_page.dart +++ b/lib/home/splash_page.dart @@ -1,6 +1,5 @@ import 'dart:async'; -import 'package:desktop_window/desktop_window.dart'; import 'package:flutter/material.dart'; import 'package:flutter_deer/demo/demo_page.dart'; import 'package:flutter_deer/login/login_router.dart'; @@ -46,10 +45,7 @@ class _SplashPageState extends State { } _initSplash(); }); - /// 设置桌面端窗口大小 - if (Device.isDesktop) { - DesktopWindow.setWindowSize(const Size(400, 800)); - } + if (Device.isAndroid) { const QuickActions quickActions = QuickActions(); quickActions.initialize((String shortcutType) async { diff --git a/lib/main.dart b/lib/main.dart index 4a91d8b78..b70affea9 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -20,6 +20,7 @@ import 'package:provider/provider.dart'; import 'package:quick_actions/quick_actions.dart'; import 'package:sp_util/sp_util.dart'; import 'package:url_strategy/url_strategy.dart'; +import 'package:window_manager/window_manager.dart'; Future main() async { // debugProfileBuildsEnabled = true; @@ -30,6 +31,25 @@ Future main() async { /// 确保初始化完成 WidgetsFlutterBinding.ensureInitialized(); + if (Device.isDesktop) { + await WindowManager.instance.ensureInitialized(); + windowManager.waitUntilReadyToShow().then((_) async { + /// 隐藏标题栏及操作按钮 + // await windowManager.setTitleBarStyle( + // TitleBarStyle.hidden, + // windowButtonVisibility: false, + // ); + /// 设置桌面端窗口大小 + await windowManager.setSize(const Size(400, 800)); + await windowManager.setMinimumSize(const Size(400, 800)); + /// 居中显示 + await windowManager.center(); + await windowManager.show(); + await windowManager.setPreventClose(false); + await windowManager.setSkipTaskbar(false); + }); + } + /// 去除URL中的“#”(hash),仅针对Web。默认为setHashUrlStrategy /// 注意本地部署和远程部署时`web/index.html`中的base标签,https://github.com/flutter/flutter/issues/69760 setPathUrlStrategy(); diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index 058ce1304..2ba836907 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,18 +5,20 @@ import FlutterMacOS import Foundation -import desktop_window import device_info_plus import path_provider_macos +import screen_retriever import shared_preferences_macos import sqflite import url_launcher_macos +import window_manager func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { - DesktopWindowPlugin.register(with: registry.registrar(forPlugin: "DesktopWindowPlugin")) DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) + ScreenRetrieverPlugin.register(with: registry.registrar(forPlugin: "ScreenRetrieverPlugin")) SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin")) UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) + WindowManagerPlugin.register(with: registry.registrar(forPlugin: "WindowManagerPlugin")) } diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj index 2ec4ad4d1..06e594795 100644 --- a/macos/Runner.xcodeproj/project.pbxproj +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -300,22 +300,24 @@ inputPaths = ( "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh", "${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework", - "${BUILT_PRODUCTS_DIR}/desktop_window/desktop_window.framework", "${BUILT_PRODUCTS_DIR}/device_info_plus/device_info_plus.framework", "${BUILT_PRODUCTS_DIR}/path_provider_macos/path_provider_macos.framework", + "${BUILT_PRODUCTS_DIR}/screen_retriever/screen_retriever.framework", "${BUILT_PRODUCTS_DIR}/shared_preferences_macos/shared_preferences_macos.framework", "${BUILT_PRODUCTS_DIR}/sqflite/sqflite.framework", "${BUILT_PRODUCTS_DIR}/url_launcher_macos/url_launcher_macos.framework", + "${BUILT_PRODUCTS_DIR}/window_manager/window_manager.framework", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FMDB.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/desktop_window.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/device_info_plus.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/path_provider_macos.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/screen_retriever.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/shared_preferences_macos.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sqflite.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/url_launcher_macos.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/window_manager.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; diff --git a/pubspec.yaml b/pubspec.yaml index 124163cba..1d46887b7 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -67,8 +67,8 @@ dependencies: vibration_web: 1.6.5 # 获取当前设备信息 https://github.com/fluttercommunity/plus_plugins/tree/main/packages/device_info_plus device_info_plus: 8.0.0 - # 改变桌面端窗口大小(MacOS/Linux/Windows) https://github.com/mix1009/desktop_window - desktop_window: 0.4.0 + # 桌面应用调整窗口的大小和位置 https://github.com/leanflutter/window_manager + window_manager: 0.3.0 # 高德2D地图插件(支持Web) https://github.com/simplezhli/flutter_2d_amap flutter_2d_amap: git: diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index 33bc361ef..fe7ec1cb9 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -6,12 +6,15 @@ #include "generated_plugin_registrant.h" -#include +#include #include +#include void RegisterPlugins(flutter::PluginRegistry* registry) { - DesktopWindowPluginRegisterWithRegistrar( - registry->GetRegistrarForPlugin("DesktopWindowPlugin")); + ScreenRetrieverPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("ScreenRetrieverPlugin")); UrlLauncherWindowsRegisterWithRegistrar( registry->GetRegistrarForPlugin("UrlLauncherWindows")); + WindowManagerPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("WindowManagerPlugin")); } diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index d3bb57851..fb2dea6b4 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -3,8 +3,9 @@ # list(APPEND FLUTTER_PLUGIN_LIST - desktop_window + screen_retriever url_launcher_windows + window_manager ) list(APPEND FLUTTER_FFI_PLUGIN_LIST From d3f1bdd56d73c171b39f64110df97f6fa0b630b9 Mon Sep 17 00:00:00 2001 From: weilu Date: Sat, 11 Feb 2023 16:20:44 +0800 Subject: [PATCH 133/206] =?UTF-8?q?=E8=AE=A9Windows=E5=BA=94=E7=94=A8?= =?UTF-8?q?=E6=88=90=E4=B8=BA=E5=8D=95=E5=AE=9E=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- windows/runner/main.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/windows/runner/main.cpp b/windows/runner/main.cpp index 0c33461fb..b2c9cacbf 100644 --- a/windows/runner/main.cpp +++ b/windows/runner/main.cpp @@ -8,6 +8,15 @@ int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev, _In_ wchar_t *command_line, _In_ int show_command) { + + // Flutter Windows 应用默认是多实例,让应用成为单实例 + // https://leanflutter.org/zh/blog/making-the-app-single-instanced + HWND hwnd = ::FindWindow(L"FLUTTER_RUNNER_WIN32_WINDOW", L"flutter_deer"); + if (hwnd != NULL) { + ::ShowWindow(hwnd, SW_NORMAL); + ::SetForegroundWindow(hwnd); + return EXIT_FAILURE; + } // Attach to console when present (e.g., 'flutter run') or create a // new console when running with a debugger. if (!::AttachConsole(ATTACH_PARENT_PROCESS) && ::IsDebuggerPresent()) { From f131a2f52057e19dedaa7236edadfa35872b69d5 Mon Sep 17 00:00:00 2001 From: weilu Date: Tue, 14 Feb 2023 20:59:14 +0800 Subject: [PATCH 134/206] dio 5.0.0 --- README-EN.md | 4 ++-- README.md | 4 ++-- lib/main.dart | 2 +- lib/mvp/base_page_presenter.dart | 2 +- lib/net/dio_utils.dart | 2 +- lib/net/error_handle.dart | 2 +- lib/net/intercept.dart | 2 +- lib/setting/widgets/update_dialog.dart | 2 +- pubspec.yaml | 6 +++--- test/net/dio_test.dart | 2 +- 10 files changed, 14 insertions(+), 14 deletions(-) diff --git a/README-EN.md b/README-EN.md index 5708f9541..3e4baa2e3 100644 --- a/README-EN.md +++ b/README-EN.md @@ -27,7 +27,7 @@ The effect of some pages is as follows: * mvp mode * Use `provider`(version 6.x) for state management -* Network request encapsulation based on `diox` (version 5.x) +* Network request encapsulation based on `dio` (version 5.x) * Driver testing, accessibility testing. * Support dark mode * Localization(Thanks @ghedwards) @@ -117,7 +117,7 @@ Web:https://simplezhli.github.io/flutter_deer/ | 库 | 功能 | | -------------------------- | --------------- | -| [diox](https://github.com/cfug/diox) | **Network library** | +| [dio](https://github.com/cfug/dio) | **Network library** | | [provider](https://github.com/rrousselGit/provider) | **State management** | | [flutter_2d_amap](https://github.com/simplezhli/flutter_2d_amap) | **2D AMap** | | [cached_network_image](https://github.com/renefloor/flutter_cached_network_image) | **Image loading** | diff --git a/README.md b/README.md index 6cee07efd..bfc8af607 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ * mvp模式 * 使用`provider` (6.x 版本)做状态管理 -* 基于`diox` (5.x 版本)的网络请求封装 +* 基于`dio` (5.x 版本)的网络请求封装 * 完整的集成测试、可访问性测试。 * 支持深色模式 * 本地化(感谢 @ghedwards) @@ -128,7 +128,7 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ | 库 | 功能 | | -------------------------- | --------------- | -| [diox](https://github.com/cfug/diox) | **网络库** | +| [dio](https://github.com/cfug/dio) | **网络库** | | [provider](https://github.com/rrousselGit/provider) | **状态管理** | | [flutter_2d_amap](https://github.com/simplezhli/flutter_2d_amap) | **高德2D地图** | | [cached_network_image](https://github.com/renefloor/flutter_cached_network_image) | **图片加载** | diff --git a/lib/main.dart b/lib/main.dart index b70affea9..8205b6a37 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,4 +1,4 @@ -import 'package:diox/diox.dart'; +import 'package:dio/dio.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_deer/demo/demo_page.dart'; diff --git a/lib/mvp/base_page_presenter.dart b/lib/mvp/base_page_presenter.dart index 834df931d..cb323dbbf 100644 --- a/lib/mvp/base_page_presenter.dart +++ b/lib/mvp/base_page_presenter.dart @@ -1,5 +1,5 @@ import 'dart:io'; -import 'package:diox/diox.dart'; +import 'package:dio/dio.dart'; import 'package:flutter_deer/mvp/base_presenter.dart'; import 'package:flutter_deer/net/net.dart'; diff --git a/lib/net/dio_utils.dart b/lib/net/dio_utils.dart index b33123780..3a3c6827e 100644 --- a/lib/net/dio_utils.dart +++ b/lib/net/dio_utils.dart @@ -1,6 +1,6 @@ import 'dart:convert'; -import 'package:diox/diox.dart'; +import 'package:dio/dio.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter_deer/res/constant.dart'; import 'package:flutter_deer/util/log_utils.dart'; diff --git a/lib/net/error_handle.dart b/lib/net/error_handle.dart index ba40e9328..ee847158a 100644 --- a/lib/net/error_handle.dart +++ b/lib/net/error_handle.dart @@ -1,5 +1,5 @@ import 'dart:io'; -import 'package:diox/diox.dart'; +import 'package:dio/dio.dart'; import 'package:flutter/foundation.dart'; class ExceptionHandle { diff --git a/lib/net/intercept.dart b/lib/net/intercept.dart index 53dc91823..285b1d7b4 100644 --- a/lib/net/intercept.dart +++ b/lib/net/intercept.dart @@ -1,7 +1,7 @@ import 'dart:convert'; -import 'package:diox/diox.dart'; +import 'package:dio/dio.dart'; import 'package:flutter_deer/res/constant.dart'; import 'package:flutter_deer/util/device_utils.dart'; import 'package:flutter_deer/util/log_utils.dart'; diff --git a/lib/setting/widgets/update_dialog.dart b/lib/setting/widgets/update_dialog.dart index 1557301dc..d4eddbda5 100644 --- a/lib/setting/widgets/update_dialog.dart +++ b/lib/setting/widgets/update_dialog.dart @@ -1,6 +1,6 @@ import 'dart:io'; -import 'package:diox/diox.dart'; +import 'package:dio/dio.dart'; import 'package:flustars_flutter3/flustars_flutter3.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; diff --git a/pubspec.yaml b/pubspec.yaml index 1d46887b7..def228809 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -22,8 +22,8 @@ dependencies: intl: ^0.17.0 # Toast插件 https://github.com/OpenFlutter/flutter_oktoast oktoast: ^3.3.1 - # 网络库 https://github.com/cfug/diox - diox: ^5.0.0-dev.3 + # 网络库 https://github.com/cfug/dio + dio: ^5.0.0 # https://github.com/ReactiveX/rxdart rxdart: ^0.27.7 # Dart 常用工具类库 https://github.com/Sky24n/common_utils @@ -66,7 +66,7 @@ dependencies: vibration: 1.7.6 vibration_web: 1.6.5 # 获取当前设备信息 https://github.com/fluttercommunity/plus_plugins/tree/main/packages/device_info_plus - device_info_plus: 8.0.0 + device_info_plus: 8.1.0 # 桌面应用调整窗口的大小和位置 https://github.com/leanflutter/window_manager window_manager: 0.3.0 # 高德2D地图插件(支持Web) https://github.com/simplezhli/flutter_2d_amap diff --git a/test/net/dio_test.dart b/test/net/dio_test.dart index 081d446de..9f56a6b42 100644 --- a/test/net/dio_test.dart +++ b/test/net/dio_test.dart @@ -1,4 +1,4 @@ -import 'package:diox/diox.dart'; +import 'package:dio/dio.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter_deer/net/net.dart'; import 'package:flutter_deer/shop/models/user_entity.dart'; From ff118f71d5cde168b965a2ac4f6877e4629e3d10 Mon Sep 17 00:00:00 2001 From: weilu Date: Fri, 24 Feb 2023 23:21:51 +0800 Subject: [PATCH 135/206] =?UTF-8?q?=E4=BE=9D=E8=B5=96=E5=8D=87=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pubspec.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pubspec.yaml b/pubspec.yaml index def228809..b7731109a 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -23,7 +23,7 @@ dependencies: # Toast插件 https://github.com/OpenFlutter/flutter_oktoast oktoast: ^3.3.1 # 网络库 https://github.com/cfug/dio - dio: ^5.0.0 + dio: ^5.0.1 # https://github.com/ReactiveX/rxdart rxdart: ^0.27.7 # Dart 常用工具类库 https://github.com/Sky24n/common_utils @@ -40,15 +40,15 @@ dependencies: # 侧滑删除 https://github.com/letsar/flutter_slidable flutter_slidable: ^2.0.0 # WebView插件 https://github.com/flutter/plugins/tree/master/packages/webview_flutter - webview_flutter: 4.0.2 + webview_flutter: 4.0.5 # 处理键盘事件 https://github.com/diegoveloper/flutter_keyboard_actions - keyboard_actions: ^4.1.0 + keyboard_actions: ^4.2.0 # 列表悬浮头 https://github.com/fluttercommunity/flutter_sticky_headers sticky_headers: ^0.3.0+2 # 城市选择列表 https://github.com/flutterchina/azlistview azlistview: ^2.0.0 # 路由框架 https://github.com/theyakka/fluro - fluro: ^2.0.4 + fluro: ^2.0.5 # 图片缓存 https://github.com/renefloor/flutter_cached_network_image cached_network_image: ^3.2.3 # 格式化String https://github.com/Naddiseo/dart-sprintf From 11094717eef98244f2ce9946484fc687a3303b52 Mon Sep 17 00:00:00 2001 From: weilu Date: Sun, 26 Feb 2023 17:10:58 +0800 Subject: [PATCH 136/206] flutter 3.7.5 --- .github/workflows/flutter-drive.yml | 6 +++--- .github/workflows/flutter-web-deploy.yml | 2 +- README-EN.md | 4 ++-- README.md | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index 33c1e1b56..ae11e99b9 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -53,7 +53,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v2 with: - flutter-version: '3.7.0' + flutter-version: '3.7.5' channel: 'stable' # or: 'dev' or 'beta' architecture: x64 - run: "flutter clean" @@ -77,7 +77,7 @@ jobs: java-version: 1.11 - uses: subosito/flutter-action@v2 with: - flutter-version: '3.7.0' + flutter-version: '3.7.5' channel: 'stable' # or: 'dev' or 'beta' architecture: x64 - name: "Run Flutter Driver tests" @@ -103,7 +103,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v2 with: - flutter-version: '3.7.0' + flutter-version: '3.7.5' channel: 'stable' architecture: x64 - run: "flutter pub get" diff --git a/.github/workflows/flutter-web-deploy.yml b/.github/workflows/flutter-web-deploy.yml index e304bec34..0d678b260 100644 --- a/.github/workflows/flutter-web-deploy.yml +++ b/.github/workflows/flutter-web-deploy.yml @@ -14,7 +14,7 @@ jobs: - uses: actions/checkout@v2.3.1 - uses: subosito/flutter-action@v2 with: - flutter-version: '3.7.0' + flutter-version: '3.7.5' channel: 'stable' architecture: x64 - name: "Web Build 🔧" diff --git a/README-EN.md b/README-EN.md index 3e4baa2e3..afd4e4a51 100644 --- a/README-EN.md +++ b/README-EN.md @@ -61,9 +61,9 @@ Web:https://simplezhli.github.io/flutter_deer/ [![Build Status](https://github.com/simplezhli/flutter_deer/workflows/flutter_deer%20driver/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions?query=workflow%3A%22flutter_deer+driver%22+branch%3Amaster) - 1. Flutter version 3.7.0 + 1. Flutter version 3.7.5 - 2. Dart version 2.19.0 + 2. Dart version 2.19.2 ## Precautions diff --git a/README.md b/README.md index bfc8af607..14607d074 100644 --- a/README.md +++ b/README.md @@ -66,9 +66,9 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ [![Build Status](https://github.com/simplezhli/flutter_deer/workflows/flutter_deer%20driver/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions?query=workflow%3A%22flutter_deer+driver%22+branch%3Amaster) - 1. Flutter version 3.7.0 + 1. Flutter version 3.7.5 - 2. Dart version 2.19.0 + 2. Dart version 2.19.2 ## 注意事项 From 35f35e591ad043f17b7311a9cecc37cc6f3e6a46 Mon Sep 17 00:00:00 2001 From: weilu Date: Sat, 11 Mar 2023 22:43:15 +0800 Subject: [PATCH 137/206] =?UTF-8?q?=E4=BE=9D=E8=B5=96=E5=8D=87=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/net/dio_utils.dart | 16 +++++++--------- pubspec.yaml | 4 ++-- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/lib/net/dio_utils.dart b/lib/net/dio_utils.dart index 3a3c6827e..014cf93f9 100644 --- a/lib/net/dio_utils.dart +++ b/lib/net/dio_utils.dart @@ -54,15 +54,13 @@ class DioUtils { ); _dio = Dio(options); /// Fiddler抓包代理配置 https://www.jianshu.com/p/d831b1f7c45b -// (_dio.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate = -// (HttpClient client) { -// client.findProxy = (uri) { -// //proxy all request to localhost:8888 -// return 'PROXY 10.41.0.132:8888'; -// }; -// client.badCertificateCallback = -// (X509Certificate cert, String host, int port) => true; -// }; + // _dio.httpClientAdapter = IOHttpClientAdapter()..onHttpClientCreate = (HttpClient client) { + // client.findProxy = (uri) { + // //proxy all request to localhost:8888 + // return 'PROXY 10.41.0.132:8888'; + // }; + // return client; + // }; /// 添加拦截器 void addInterceptor(Interceptor interceptor) { diff --git a/pubspec.yaml b/pubspec.yaml index b7731109a..93b8aa6f5 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -23,7 +23,7 @@ dependencies: # Toast插件 https://github.com/OpenFlutter/flutter_oktoast oktoast: ^3.3.1 # 网络库 https://github.com/cfug/dio - dio: ^5.0.1 + dio: ^5.0.2 # https://github.com/ReactiveX/rxdart rxdart: ^0.27.7 # Dart 常用工具类库 https://github.com/Sky24n/common_utils @@ -32,7 +32,7 @@ dependencies: # Flutter 常用工具类库 https://github.com/Sky24n/flustars flustars_flutter3: ^3.0.0 # flustars很久不维护,可以使用这个替代 # Flutter 轮播图 https://github.com/mdddj/flutter_swiper_null_safety - flutter_swiper_null_safety_flutter3: ^3.0.0 # flutter_swiper很久不维护,可以使用这个替代 + flutter_swiper_null_safety_flutter3: ^3.0.1 # flutter_swiper很久不维护,可以使用这个替代 # 启动URL的插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/url_launcher url_launcher: 6.1.8 # 图片选择插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/image_picker From 6e3fa4f96e1ec09135c9c95e7e2d10d8c4d9e2a1 Mon Sep 17 00:00:00 2001 From: weilu Date: Sun, 19 Mar 2023 20:19:14 +0800 Subject: [PATCH 138/206] Enable implicit_call_tearoffs lint --- analysis_options.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/analysis_options.yaml b/analysis_options.yaml index 606938833..9dee00628 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -24,7 +24,7 @@ analyzer: # to annotate every member in every test, assert, etc, when we deprecate something) deprecated_member_use_from_same_package: ignore # Turned off until null-safe rollout is complete. - unnecessary_null_comparison: ignore +# unnecessary_null_comparison: ignore exclude: # the following two are relative to the stocks example and the flutter package respectively # see https://github.com/dart-lang/sdk/issues/28463 @@ -111,6 +111,7 @@ linter: - flutter_style_todos - hash_and_equals - implementation_imports + - implicit_call_tearoffs # - invariant_booleans # too many false positives: https://github.com/dart-lang/linter/issues/811 - iterable_contains_unrelated_type # - join_return_with_assignment # not required by flutter style @@ -153,7 +154,6 @@ linter: # - prefer_constructors_over_static_methods # far too many false positives - prefer_contains # - prefer_double_quotes # opposite of prefer_single_quotes - - prefer_equal_for_default_values # - prefer_expression_function_bodies # conflicts with https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#consider-using--for-short-functions-and-methods - prefer_final_fields - prefer_final_in_for_each From fd793cd1653735b97d7c1ca781cbc803aa2e4806 Mon Sep 17 00:00:00 2001 From: weilu Date: Tue, 4 Apr 2023 22:53:35 +0800 Subject: [PATCH 139/206] =?UTF-8?q?=E4=BE=9D=E8=B5=96=E5=8D=87=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pubspec.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pubspec.yaml b/pubspec.yaml index 93b8aa6f5..790b9cb11 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -23,7 +23,7 @@ dependencies: # Toast插件 https://github.com/OpenFlutter/flutter_oktoast oktoast: ^3.3.1 # 网络库 https://github.com/cfug/dio - dio: ^5.0.2 + dio: ^5.1.1 # https://github.com/ReactiveX/rxdart rxdart: ^0.27.7 # Dart 常用工具类库 https://github.com/Sky24n/common_utils @@ -40,7 +40,7 @@ dependencies: # 侧滑删除 https://github.com/letsar/flutter_slidable flutter_slidable: ^2.0.0 # WebView插件 https://github.com/flutter/plugins/tree/master/packages/webview_flutter - webview_flutter: 4.0.5 + webview_flutter: 4.0.7 # 处理键盘事件 https://github.com/diegoveloper/flutter_keyboard_actions keyboard_actions: ^4.2.0 # 列表悬浮头 https://github.com/fluttercommunity/flutter_sticky_headers @@ -68,7 +68,7 @@ dependencies: # 获取当前设备信息 https://github.com/fluttercommunity/plus_plugins/tree/main/packages/device_info_plus device_info_plus: 8.1.0 # 桌面应用调整窗口的大小和位置 https://github.com/leanflutter/window_manager - window_manager: 0.3.0 + window_manager: 0.3.1 # 高德2D地图插件(支持Web) https://github.com/simplezhli/flutter_2d_amap flutter_2d_amap: git: @@ -78,7 +78,7 @@ dependencies: # 刮刮卡 https://github.com/vintage/scratcher scratcher: ^2.3.0 # 动画效果 https://github.com/xvrh/lottie-flutter - lottie: ^2.2.0 + lottie: ^2.3.1 # https://github.com/simplezhli/flutter_deer/issues/187 dependency_overrides: From 96fcfcc5de7039178659611ca2388b4c498cbffc Mon Sep 17 00:00:00 2001 From: weilu Date: Fri, 28 Apr 2023 10:09:55 +0800 Subject: [PATCH 140/206] =?UTF-8?q?SearchBar=E6=94=B9=E4=B8=BAMySearchBar?= =?UTF-8?q?=EF=BC=8C=E9=81=BF=E5=85=8D=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/goods/page/goods_search_page.dart | 4 ++-- lib/order/page/order_search_page.dart | 4 ++-- lib/shop/page/select_address_page.dart | 4 ++-- lib/widgets/{search_bar.dart => my_search_bar.dart} | 8 ++++---- pubspec.yaml | 4 ++-- 5 files changed, 12 insertions(+), 12 deletions(-) rename lib/widgets/{search_bar.dart => my_search_bar.dart} (96%) diff --git a/lib/goods/page/goods_search_page.dart b/lib/goods/page/goods_search_page.dart index 3c931460a..7a19e6c34 100644 --- a/lib/goods/page/goods_search_page.dart +++ b/lib/goods/page/goods_search_page.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_deer/util/toast_utils.dart'; -import 'package:flutter_deer/widgets/search_bar.dart'; +import 'package:flutter_deer/widgets/my_search_bar.dart'; class GoodsSearchPage extends StatefulWidget { @@ -15,7 +15,7 @@ class _GoodsSearchPageState extends State { @override Widget build(BuildContext context) { return Scaffold( - appBar: SearchBar( + appBar: MySearchBar( hintText: '请输入商品名称查询', onPressed: (text) => Toast.show('搜索内容:$text'), ), diff --git a/lib/order/page/order_search_page.dart b/lib/order/page/order_search_page.dart index 5a549ca51..567abda1c 100644 --- a/lib/order/page/order_search_page.dart +++ b/lib/order/page/order_search_page.dart @@ -10,7 +10,7 @@ import 'package:flutter_deer/shop/models/user_entity.dart'; import 'package:flutter_deer/shop/presenter/shop_presenter.dart'; import 'package:flutter_deer/util/other_utils.dart'; import 'package:flutter_deer/widgets/my_refresh_list.dart'; -import 'package:flutter_deer/widgets/search_bar.dart'; +import 'package:flutter_deer/widgets/my_search_bar.dart'; import 'package:flutter_deer/widgets/state_layout.dart'; import 'package:provider/provider.dart'; @@ -43,7 +43,7 @@ class _OrderSearchPageState extends State with BasePageMixin>( create: (_) => provider, child: Scaffold( - appBar: SearchBar( + appBar: MySearchBar( hintText: '请输入手机号或姓名查询', onPressed: (text) { if (text.isEmpty) { diff --git a/lib/shop/page/select_address_page.dart b/lib/shop/page/select_address_page.dart index 2a0d7cbd2..44c5e5d81 100644 --- a/lib/shop/page/select_address_page.dart +++ b/lib/shop/page/select_address_page.dart @@ -4,7 +4,7 @@ import 'package:flutter_deer/routers/fluro_navigator.dart'; import 'package:flutter_deer/util/other_utils.dart'; import 'package:flutter_deer/util/toast_utils.dart'; import 'package:flutter_deer/widgets/my_button.dart'; -import 'package:flutter_deer/widgets/search_bar.dart'; +import 'package:flutter_deer/widgets/my_search_bar.dart'; class AddressSelectPage extends StatefulWidget { @@ -42,7 +42,7 @@ class _AddressSelectPageState extends State { Widget build(BuildContext context) { return Scaffold( resizeToAvoidBottomInset: false, - appBar: SearchBar( + appBar: MySearchBar( hintText: '搜索地址', onPressed: (text) { _controller.animateTo(0.0, duration: const Duration(milliseconds: 10), curve: Curves.ease); diff --git a/lib/widgets/search_bar.dart b/lib/widgets/my_search_bar.dart similarity index 96% rename from lib/widgets/search_bar.dart rename to lib/widgets/my_search_bar.dart index 48b4c0144..87dc583bc 100644 --- a/lib/widgets/search_bar.dart +++ b/lib/widgets/my_search_bar.dart @@ -8,9 +8,9 @@ import 'package:flutter_deer/widgets/my_button.dart'; import 'load_image.dart'; /// 搜索页的AppBar -class SearchBar extends StatefulWidget implements PreferredSizeWidget { +class MySearchBar extends StatefulWidget implements PreferredSizeWidget { - const SearchBar({ + const MySearchBar({ super.key, this.hintText = '', this.backImg = 'assets/images/ic_back_black.png', @@ -22,13 +22,13 @@ class SearchBar extends StatefulWidget implements PreferredSizeWidget { final Function(String)? onPressed; @override - _SearchBarState createState() => _SearchBarState(); + _MySearchBarState createState() => _MySearchBarState(); @override Size get preferredSize => const Size.fromHeight(48.0); } -class _SearchBarState extends State { +class _MySearchBarState extends State { final TextEditingController _controller = TextEditingController(); final FocusNode _focus = FocusNode(); diff --git a/pubspec.yaml b/pubspec.yaml index 790b9cb11..f4e13f587 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -38,7 +38,7 @@ dependencies: # 图片选择插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/image_picker image_picker: 0.8.6 # 侧滑删除 https://github.com/letsar/flutter_slidable - flutter_slidable: ^2.0.0 + flutter_slidable: ^3.0.0 # WebView插件 https://github.com/flutter/plugins/tree/master/packages/webview_flutter webview_flutter: 4.0.7 # 处理键盘事件 https://github.com/diegoveloper/flutter_keyboard_actions @@ -66,7 +66,7 @@ dependencies: vibration: 1.7.6 vibration_web: 1.6.5 # 获取当前设备信息 https://github.com/fluttercommunity/plus_plugins/tree/main/packages/device_info_plus - device_info_plus: 8.1.0 + device_info_plus: 8.2.0 # 桌面应用调整窗口的大小和位置 https://github.com/leanflutter/window_manager window_manager: 0.3.1 # 高德2D地图插件(支持Web) https://github.com/simplezhli/flutter_2d_amap From a8bf023fec4da439819ae8e9bcc75f5c043fca40 Mon Sep 17 00:00:00 2001 From: weilu Date: Fri, 28 Apr 2023 10:37:42 +0800 Subject: [PATCH 141/206] =?UTF-8?q?compileSdkVersion=E5=8D=87=E8=87=B333?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- android/app/build.gradle | 4 ++-- android/build.gradle | 4 ++-- android/gradle/wrapper/gradle-wrapper.properties | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 4ae10cc7a..3ee561bc0 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -31,7 +31,7 @@ def keystoreProperties = new Properties() keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) android { - compileSdkVersion 32 + compileSdkVersion 33 lintOptions { disable 'InvalidPackage' @@ -40,7 +40,7 @@ android { defaultConfig { applicationId "com.weilu.deer" minSdkVersion 21 - targetSdkVersion 31 + targetSdkVersion 32 versionCode flutterVersionCode.toInteger() versionName flutterVersionName } diff --git a/android/build.gradle b/android/build.gradle index 30fce1679..c24f03550 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,5 +1,5 @@ buildscript { - ext.kotlin_version = '1.6.10' + ext.kotlin_version = '1.7.0' repositories { maven { url 'https://maven.aliyun.com/repository/public' }//jcenter maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }//gradle-plugin @@ -11,7 +11,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:7.0.0' + classpath 'com.android.tools.build:gradle:7.2.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index b7923987d..94a95f4ce 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip From 9eda809b214a961ad24c581945176a9657f1d70a Mon Sep 17 00:00:00 2001 From: weilu Date: Thu, 11 May 2023 21:53:42 +0800 Subject: [PATCH 142/206] =?UTF-8?q?=E9=80=82=E9=85=8Dflutter=203.10.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/flutter-drive.yml | 6 +++--- .github/workflows/flutter-web-deploy.yml | 4 ++-- README-EN.md | 4 ++-- README.md | 4 ++-- lib/account/page/account_page.dart | 6 +++--- lib/account/page/withdrawal_page.dart | 8 ++++---- lib/order/page/order_info_page.dart | 8 ++++---- lib/shop/page/shop_page.dart | 4 ++-- lib/statistics/page/statistics_page.dart | 10 +++++----- lib/util/other_utils.dart | 2 +- lib/util/theme_utils.dart | 4 ++-- 11 files changed, 30 insertions(+), 30 deletions(-) diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index ae11e99b9..3b4b914af 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -53,7 +53,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v2 with: - flutter-version: '3.7.5' + flutter-version: '3.10.0' channel: 'stable' # or: 'dev' or 'beta' architecture: x64 - run: "flutter clean" @@ -77,7 +77,7 @@ jobs: java-version: 1.11 - uses: subosito/flutter-action@v2 with: - flutter-version: '3.7.5' + flutter-version: '3.10.0' channel: 'stable' # or: 'dev' or 'beta' architecture: x64 - name: "Run Flutter Driver tests" @@ -103,7 +103,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v2 with: - flutter-version: '3.7.5' + flutter-version: '3.10.0' channel: 'stable' architecture: x64 - run: "flutter pub get" diff --git a/.github/workflows/flutter-web-deploy.yml b/.github/workflows/flutter-web-deploy.yml index 0d678b260..f85b0e529 100644 --- a/.github/workflows/flutter-web-deploy.yml +++ b/.github/workflows/flutter-web-deploy.yml @@ -5,7 +5,7 @@ name: flutter_deer web deploy on: push: paths: - - 'pubspec1.yaml' + - 'pubspec.yaml' jobs: web_build_and_deploy: @@ -14,7 +14,7 @@ jobs: - uses: actions/checkout@v2.3.1 - uses: subosito/flutter-action@v2 with: - flutter-version: '3.7.5' + flutter-version: '3.10.0' channel: 'stable' architecture: x64 - name: "Web Build 🔧" diff --git a/README-EN.md b/README-EN.md index afd4e4a51..f9f2b81d7 100644 --- a/README-EN.md +++ b/README-EN.md @@ -61,9 +61,9 @@ Web:https://simplezhli.github.io/flutter_deer/ [![Build Status](https://github.com/simplezhli/flutter_deer/workflows/flutter_deer%20driver/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions?query=workflow%3A%22flutter_deer+driver%22+branch%3Amaster) - 1. Flutter version 3.7.5 + 1. Flutter version 3.10.0 - 2. Dart version 2.19.2 + 2. Dart version 3.0.0 ## Precautions diff --git a/README.md b/README.md index 14607d074..339d07a8e 100644 --- a/README.md +++ b/README.md @@ -66,9 +66,9 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ [![Build Status](https://github.com/simplezhli/flutter_deer/workflows/flutter_deer%20driver/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions?query=workflow%3A%22flutter_deer+driver%22+branch%3Amaster) - 1. Flutter version 3.7.5 + 1. Flutter version 3.10.0 - 2. Dart version 2.19.2 + 2. Dart version 3.0.0 ## 注意事项 diff --git a/lib/account/page/account_page.dart b/lib/account/page/account_page.dart index a446a8fa1..dde65345d 100644 --- a/lib/account/page/account_page.dart +++ b/lib/account/page/account_page.dart @@ -61,9 +61,9 @@ class _AccountPageState extends State { fit: BoxFit.fill, ), ), - child: Column( + child: const Column( children: [ - const _AccountMoney( + _AccountMoney( title: '当前余额(元)', money: '30.12', alignment: MainAxisAlignment.end, @@ -71,7 +71,7 @@ class _AccountPageState extends State { ), Expanded( child: Row( - children: const [ + children: [ _AccountMoney(title: '累计结算金额', money: '20000'), _AccountMoney(title: '累计发放佣金', money: '0.02'), ], diff --git a/lib/account/page/withdrawal_page.dart b/lib/account/page/withdrawal_page.dart index 667fe92f9..d576c834b 100644 --- a/lib/account/page/withdrawal_page.dart +++ b/lib/account/page/withdrawal_page.dart @@ -102,9 +102,9 @@ class _WithdrawalPageState extends State { ), ), Gaps.vGap16, - Row( + const Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: const [ + children: [ Text('提现金额', style: TextStyles.textBold14), Text('单笔2万,单日2万', style: TextStyle(fontSize: Dimens.font_sp12, color: Colours.orange)) ], @@ -165,9 +165,9 @@ class _WithdrawalPageState extends State { ) ], ), - Row( + const Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: const [ + children: [ Text('转出方式', style: TextStyles.textBold14), LoadAssetImage('account/sm', width: 16.0) ], diff --git a/lib/order/page/order_info_page.dart b/lib/order/page/order_info_page.dart index 0755f35fd..8cedfd60b 100644 --- a/lib/order/page/order_info_page.dart +++ b/lib/order/page/order_info_page.dart @@ -80,12 +80,12 @@ class _OrderInfoPageState extends State { child: LoadAssetImage('order/icon_avatar', width: 44.0, height: 44.0), ), Gaps.hGap8, - Expanded( + const Expanded( // 合并Text的语义 child: MergeSemantics( child: Column( crossAxisAlignment: CrossAxisAlignment.start, - children: const [ + children: [ Text('郭李'), Gaps.vGap8, Text('15000000000'), @@ -108,9 +108,9 @@ class _OrderInfoPageState extends State { ], ), Gaps.vGap10, - Row( + const Row( crossAxisAlignment: CrossAxisAlignment.start, - children: const [ + children: [ LoadAssetImage('order/icon_address', width: 16.0, height: 20.0), Gaps.hGap4, Expanded(child: Text('西安市雁塔区 鱼化寨街道唐兴路唐兴数码3楼318', maxLines: 2)), diff --git a/lib/shop/page/shop_page.dart b/lib/shop/page/shop_page.dart index fbd218017..6517db1d8 100644 --- a/lib/shop/page/shop_page.dart +++ b/lib/shop/page/shop_page.dart @@ -118,11 +118,11 @@ class _ShopPageState extends State with BasePageMixin[ + children: [ LoadAssetImage('shop/zybq', width: 40.0, height: 16.0,), Gaps.hGap8, Text('店铺账号:15000000000', style: TextStyles.textSize12) diff --git a/lib/statistics/page/statistics_page.dart b/lib/statistics/page/statistics_page.dart index 4f608e089..e34898777 100644 --- a/lib/statistics/page/statistics_page.dart +++ b/lib/statistics/page/statistics_page.dart @@ -73,9 +73,9 @@ class _StatisticsPageState extends State { margin: const EdgeInsets.symmetric(horizontal: 16.0), alignment: Alignment.center, height: 120.0, - child: MyCard( + child: const MyCard( child: Row( - children: const [ + children: [ _StatisticsTab('新订单(单)', 'xdd', '80'), _StatisticsTab('待配送(单)', 'dps', '80'), _StatisticsTab('今日交易额(元)', 'jrjye', '8000.00'), @@ -87,12 +87,12 @@ class _StatisticsPageState extends State { , 120.0, ), ), - SliverToBoxAdapter( + const SliverToBoxAdapter( child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 16.0), + padding: EdgeInsets.symmetric(horizontal: 16.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, - children: const [ + children: [ Gaps.vGap32, Text('数据走势', style: TextStyles.textBold18), Gaps.vGap16, diff --git a/lib/util/other_utils.dart b/lib/util/other_utils.dart index 0e777224d..7e0bc2ab2 100644 --- a/lib/util/other_utils.dart +++ b/lib/util/other_utils.dart @@ -59,7 +59,7 @@ class Utils { static String? getCurrLocale() { final String locale = SpUtil.getString(Constant.locale)!; if (locale == '') { - return window.locale.languageCode; + return PlatformDispatcher.instance.locale.languageCode; } return locale; } diff --git a/lib/util/theme_utils.dart b/lib/util/theme_utils.dart index a73efd817..e302acbe3 100644 --- a/lib/util/theme_utils.dart +++ b/lib/util/theme_utils.dart @@ -41,7 +41,7 @@ class ThemeUtils { _subscription?.cancel(); _subscription = Stream.value(1).delay(const Duration(milliseconds: 200)).listen((_) { bool isDark = false; - if (mode == ThemeMode.dark || (mode == ThemeMode.system && window.platformBrightness == Brightness.dark)) { + if (mode == ThemeMode.dark || (mode == ThemeMode.system && PlatformDispatcher.instance.platformBrightness == Brightness.dark)) { isDark = true; } setSystemBarStyle(isDark: isDark); @@ -53,7 +53,7 @@ class ThemeUtils { static void setSystemBarStyle({bool? isDark}) { if (Device.isAndroid) { - final bool isDarkMode = isDark ?? window.platformBrightness == Brightness.dark; + final bool isDarkMode = isDark ?? PlatformDispatcher.instance.platformBrightness == Brightness.dark; debugPrint('isDark: $isDarkMode'); final SystemUiOverlayStyle systemUiOverlayStyle = SystemUiOverlayStyle( /// 透明状态栏 From 435adc39b6ae3afe9f635e55577be003d44f5703 Mon Sep 17 00:00:00 2001 From: weilu Date: Thu, 11 May 2023 22:04:10 +0800 Subject: [PATCH 143/206] =?UTF-8?q?=E9=80=82=E9=85=8Dflutter=203.10.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- android/build.gradle | 2 +- ios/Flutter/Flutter.podspec | 4 ++-- ios/Runner.xcodeproj/project.pbxproj | 1 + pubspec.yaml | 2 +- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index c24f03550..dc3d7f970 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -36,6 +36,6 @@ subprojects { project.evaluationDependsOn(':app') } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/ios/Flutter/Flutter.podspec b/ios/Flutter/Flutter.podspec index 8ce439439..29758b70d 100644 --- a/ios/Flutter/Flutter.podspec +++ b/ios/Flutter/Flutter.podspec @@ -1,6 +1,6 @@ # -# NOTE: This podspec is NOT to be published. It is only used as a local source! -# This is a generated file; do not edit or check into version control. +# This podspec is NOT to be published. It is only used as a local source! +# This is a generated file; do not edit or check into version control. # Pod::Spec.new do |s| diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index db43885e3..48dc386bf 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -205,6 +205,7 @@ files = ( ); inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); name = "Thin Binary"; outputPaths = ( diff --git a/pubspec.yaml b/pubspec.yaml index f4e13f587..222a0d2e3 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -19,7 +19,7 @@ dependencies: # 去除网页URL中的“#”(hash) https://flutter.cn/docs/development/ui/navigation/url-strategies url_strategy: 0.2.0 # Localization https://github.com/dart-lang/intl - intl: ^0.17.0 + intl: ^0.18.0 # Toast插件 https://github.com/OpenFlutter/flutter_oktoast oktoast: ^3.3.1 # 网络库 https://github.com/cfug/dio From b1122b7d1dc7b24798259c653e0e7e51049e7745 Mon Sep 17 00:00:00 2001 From: weilu Date: Sat, 13 May 2023 09:46:44 +0800 Subject: [PATCH 144/206] =?UTF-8?q?runZonedGuarded=E4=B8=8EWidgetsFlutterB?= =?UTF-8?q?inding.ensureInitialized=E5=BC=82=E5=B8=B8=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/main.dart | 62 ++++++++++++++++++++++++++------------------------- 1 file changed, 32 insertions(+), 30 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 8205b6a37..ef134bbeb 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -28,39 +28,41 @@ Future main() async { // debugProfilePaintsEnabled = true; // debugRepaintRainbowEnabled = true; - /// 确保初始化完成 - WidgetsFlutterBinding.ensureInitialized(); - - if (Device.isDesktop) { - await WindowManager.instance.ensureInitialized(); - windowManager.waitUntilReadyToShow().then((_) async { - /// 隐藏标题栏及操作按钮 - // await windowManager.setTitleBarStyle( - // TitleBarStyle.hidden, - // windowButtonVisibility: false, - // ); - /// 设置桌面端窗口大小 - await windowManager.setSize(const Size(400, 800)); - await windowManager.setMinimumSize(const Size(400, 800)); - /// 居中显示 - await windowManager.center(); - await windowManager.show(); - await windowManager.setPreventClose(false); - await windowManager.setSkipTaskbar(false); - }); - } + /// 异常处理 + handleError(() async { + /// 确保初始化完成 + WidgetsFlutterBinding.ensureInitialized(); + + if (Device.isDesktop) { + await WindowManager.instance.ensureInitialized(); + windowManager.waitUntilReadyToShow().then((_) async { + /// 隐藏标题栏及操作按钮 + // await windowManager.setTitleBarStyle( + // TitleBarStyle.hidden, + // windowButtonVisibility: false, + // ); + /// 设置桌面端窗口大小 + await windowManager.setSize(const Size(400, 800)); + await windowManager.setMinimumSize(const Size(400, 800)); + /// 居中显示 + await windowManager.center(); + await windowManager.show(); + await windowManager.setPreventClose(false); + await windowManager.setSkipTaskbar(false); + }); + } - /// 去除URL中的“#”(hash),仅针对Web。默认为setHashUrlStrategy - /// 注意本地部署和远程部署时`web/index.html`中的base标签,https://github.com/flutter/flutter/issues/69760 - setPathUrlStrategy(); + /// 去除URL中的“#”(hash),仅针对Web。默认为setHashUrlStrategy + /// 注意本地部署和远程部署时`web/index.html`中的base标签,https://github.com/flutter/flutter/issues/69760 + setPathUrlStrategy(); - /// sp初始化 - await SpUtil.getInstance(); + /// sp初始化 + await SpUtil.getInstance(); - /// 1.22 预览功能: 在输入频率与显示刷新率不匹配情况下提供平滑的滚动效果 - // GestureBinding.instance?.resamplingEnabled = true; - /// 异常处理 - handleError(() => runApp(MyApp())); + /// 1.22 预览功能: 在输入频率与显示刷新率不匹配情况下提供平滑的滚动效果 + // GestureBinding.instance?.resamplingEnabled = true; + runApp(MyApp()); + }); /// 隐藏状态栏。为启动页、引导页设置。完成后修改回显示状态栏。 SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: [SystemUiOverlay.bottom]); From acd8685676ea22977e99453c336d0329b93899e3 Mon Sep 17 00:00:00 2001 From: weilu Date: Sat, 13 May 2023 09:48:13 +0800 Subject: [PATCH 145/206] =?UTF-8?q?desktop=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/flutter-web-deploy.yml | 2 +- macos/Podfile | 2 +- pubspec.yaml | 14 +++++++------- windows/runner/Runner.rc | 10 +++++----- windows/runner/main.cpp | 1 - 5 files changed, 14 insertions(+), 15 deletions(-) diff --git a/.github/workflows/flutter-web-deploy.yml b/.github/workflows/flutter-web-deploy.yml index f85b0e529..d056df75e 100644 --- a/.github/workflows/flutter-web-deploy.yml +++ b/.github/workflows/flutter-web-deploy.yml @@ -5,7 +5,7 @@ name: flutter_deer web deploy on: push: paths: - - 'pubspec.yaml' + - 'pubspec1.yaml' jobs: web_build_and_deploy: diff --git a/macos/Podfile b/macos/Podfile index 968dea068..f063117c2 100644 --- a/macos/Podfile +++ b/macos/Podfile @@ -38,7 +38,7 @@ post_install do |installer| flutter_additional_macos_build_settings(target) target.build_configurations.each do |config| if config.build_settings['MACOSX_DEPLOYMENT_TARGET'].to_f < 10.9 - config.build_settings['MACOSX_DEPLOYMENT_TARGET'] = '10.11' + config.build_settings['MACOSX_DEPLOYMENT_TARGET'] = '10.14' end # https://github.com/flutter/flutter/issues/94914 config.build_settings['ONLY_ACTIVE_ARCH'] = 'NO' diff --git a/pubspec.yaml b/pubspec.yaml index 222a0d2e3..1006d337c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -8,7 +8,7 @@ homepage: https://weilu.blog.csdn.net/ publish_to: 'none' environment: - sdk: ">=2.19.0 <3.0.0" + sdk: ">=3.0.0-0 <4.0.0" flutter: ">=3.7.0 <4.0.0" dependencies: @@ -33,14 +33,14 @@ dependencies: flustars_flutter3: ^3.0.0 # flustars很久不维护,可以使用这个替代 # Flutter 轮播图 https://github.com/mdddj/flutter_swiper_null_safety flutter_swiper_null_safety_flutter3: ^3.0.1 # flutter_swiper很久不维护,可以使用这个替代 - # 启动URL的插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/url_launcher + # 启动URL的插件(支持Web) https://github.com/flutter/packages/tree/main/packages/url_launcher url_launcher: 6.1.8 - # 图片选择插件(支持Web) https://github.com/flutter/plugins/tree/master/packages/image_picker + # 图片选择插件(支持Web) https://github.com/flutter/packages/tree/main/packages/image_picker image_picker: 0.8.6 # 侧滑删除 https://github.com/letsar/flutter_slidable flutter_slidable: ^3.0.0 - # WebView插件 https://github.com/flutter/plugins/tree/master/packages/webview_flutter - webview_flutter: 4.0.7 + # WebView插件 https://github.com/flutter/packages/tree/main/packages/webview_flutter + webview_flutter: 4.2.0 # 处理键盘事件 https://github.com/diegoveloper/flutter_keyboard_actions keyboard_actions: ^4.2.0 # 列表悬浮头 https://github.com/fluttercommunity/flutter_sticky_headers @@ -60,8 +60,8 @@ dependencies: # git: # url: https://github.com/xeinebiu/qr_code_scanner.git # ref: fix_break_changes_platform - # App Shortcuts https://github.com/flutter/plugins/tree/master/packages/quick_actions - quick_actions: 1.0.1 + # App Shortcuts https://github.com/flutter/packages/tree/main/packages/quick_actions + quick_actions: 1.0.3 # 振动 https://github.com/benjamindean/flutter_vibration vibration: 1.7.6 vibration_web: 1.6.5 diff --git a/windows/runner/Runner.rc b/windows/runner/Runner.rc index f266417ca..1cf425438 100644 --- a/windows/runner/Runner.rc +++ b/windows/runner/Runner.rc @@ -60,14 +60,14 @@ IDI_APP_ICON ICON "resources\\app_icon.ico" // Version // -#ifdef FLUTTER_BUILD_NUMBER -#define VERSION_AS_NUMBER FLUTTER_BUILD_NUMBER +#if defined(FLUTTER_VERSION_MAJOR) && defined(FLUTTER_VERSION_MINOR) && defined(FLUTTER_VERSION_PATCH) && defined(FLUTTER_VERSION_BUILD) +#define VERSION_AS_NUMBER FLUTTER_VERSION_MAJOR,FLUTTER_VERSION_MINOR,FLUTTER_VERSION_PATCH,FLUTTER_VERSION_BUILD #else -#define VERSION_AS_NUMBER 1,0,0 +#define VERSION_AS_NUMBER 1,0,0,0 #endif -#ifdef FLUTTER_BUILD_NAME -#define VERSION_AS_STRING #FLUTTER_BUILD_NAME +#if defined(FLUTTER_VERSION) +#define VERSION_AS_STRING FLUTTER_VERSION #else #define VERSION_AS_STRING "1.0.0" #endif diff --git a/windows/runner/main.cpp b/windows/runner/main.cpp index b2c9cacbf..d50e1317a 100644 --- a/windows/runner/main.cpp +++ b/windows/runner/main.cpp @@ -9,7 +9,6 @@ int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev, _In_ wchar_t *command_line, _In_ int show_command) { - // Flutter Windows 应用默认是多实例,让应用成为单实例 // https://leanflutter.org/zh/blog/making-the-app-single-instanced HWND hwnd = ::FindWindow(L"FLUTTER_RUNNER_WIN32_WINDOW", L"flutter_deer"); if (hwnd != NULL) { From 5ea6231bd94dc20dc550ac0498e7a7cdb8bd84e4 Mon Sep 17 00:00:00 2001 From: weilu Date: Sun, 14 May 2023 10:06:13 +0800 Subject: [PATCH 146/206] =?UTF-8?q?=E9=80=82=E9=85=8DAndroid=2013?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/flutter-drive.yml | 2 +- android/app/build.gradle | 2 +- android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml | 1 + docs/CHANGELOG.md | 5 +++++ pubspec.yaml | 4 ++-- 5 files changed, 10 insertions(+), 4 deletions(-) diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index 3b4b914af..f860b5df8 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -67,7 +67,7 @@ jobs: strategy: # set of different configurations of the virtual environment. matrix: - api-level: [21, 31] + api-level: [21, 33] target: [default] steps: - uses: actions/checkout@v2 diff --git a/android/app/build.gradle b/android/app/build.gradle index 3ee561bc0..6886aa839 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -40,7 +40,7 @@ android { defaultConfig { applicationId "com.weilu.deer" minSdkVersion 21 - targetSdkVersion 32 + targetSdkVersion 33 versionCode flutterVersionCode.toInteger() versionName flutterVersionName } diff --git a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml index bbd3e0212..50ec88623 100644 --- a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +++ b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -2,4 +2,5 @@ + \ No newline at end of file diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 076731c6f..9f518d951 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,5 +1,10 @@ # Change Log: +## 1.3.0 + +* 适配Android 13。 +* Flutter SDK升至3.10.0。 + ## 1.2.3 * Flutter SDK升至3.7.0。 diff --git a/pubspec.yaml b/pubspec.yaml index 1006d337c..93b37461f 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,7 +1,7 @@ name: flutter_deer description: Flutter Deer -version: 1.2.3+21 +version: 1.3.0+22 # 唯鹿 homepage: https://weilu.blog.csdn.net/ @@ -9,7 +9,7 @@ publish_to: 'none' environment: sdk: ">=3.0.0-0 <4.0.0" - flutter: ">=3.7.0 <4.0.0" + flutter: ">=3.7.0" dependencies: flutter: From 6a30aca44a109581f36f67ec878cf621a439e798 Mon Sep 17 00:00:00 2001 From: weilu Date: Sun, 14 May 2023 11:20:53 +0800 Subject: [PATCH 147/206] fix CI --- .github/workflows/flutter-drive.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index f860b5df8..37090394c 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -41,14 +41,14 @@ jobs: # xcrun simctl boot "${UDID:?No Simulator with this name found}" - name: "Start Simulator" # https://github.com/futureware-tech/simulator-action - uses: futureware-tech/simulator-action@v1 + uses: futureware-tech/simulator-action@v2 with: model: ${{ matrix.device }} erase_before_boot: true shutdown_after_job: true # The branch or tag ref that triggered the workflow will be checked out. # https://github.com/marketplace/actions/checkout - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 # Sets up a flutter environment. # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v2 @@ -68,13 +68,13 @@ jobs: # set of different configurations of the virtual environment. matrix: api-level: [21, 33] - target: [default] + target: [google_apis] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: set up JDK 11 - uses: actions/setup-java@v1 + uses: actions/setup-java@v2 with: - java-version: 1.11 + java-version: '11' - uses: subosito/flutter-action@v2 with: flutter-version: '3.10.0' @@ -98,7 +98,7 @@ jobs: steps: # The branch or tag ref that triggered the workflow will be checked out. # https://github.com/actions/checkout - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 # Setup a flutter environment. # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v2 From 61578637abf5f7e4eab980b098bcef486232b4dd Mon Sep 17 00:00:00 2001 From: weilu Date: Sun, 14 May 2023 11:26:06 +0800 Subject: [PATCH 148/206] fix CI --- .github/workflows/flutter-drive.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index 37090394c..29e54e07b 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -74,6 +74,7 @@ jobs: - name: set up JDK 11 uses: actions/setup-java@v2 with: + distribution: 'zulu' java-version: '11' - uses: subosito/flutter-action@v2 with: From abf3a3d35cb06cb1ce7bcdc18a08b13dcdf979ad Mon Sep 17 00:00:00 2001 From: weilu Date: Sun, 14 May 2023 12:37:17 +0800 Subject: [PATCH 149/206] fix CI --- test_driver/account/account_test.dart | 1 + test_driver/login/login_page_test.dart | 10 ++++++++-- test_driver/order/order_test.dart | 2 ++ test_driver/setting/setting_test.dart | 2 ++ test_driver/statistic/statistic_test.dart | 2 ++ test_driver/store/store_test.dart | 2 ++ 6 files changed, 17 insertions(+), 2 deletions(-) diff --git a/test_driver/account/account_test.dart b/test_driver/account/account_test.dart index e631465c7..fc5da86c6 100644 --- a/test_driver/account/account_test.dart +++ b/test_driver/account/account_test.dart @@ -127,6 +127,7 @@ void main() { await delayed(); /// 进入设置页,便于执行设置模块测试操作 await driver.tap(find.byValueKey('setting')); + await delayed(); }); }); } diff --git a/test_driver/login/login_page_test.dart b/test_driver/login/login_page_test.dart index 942037cc6..bee38aa57 100644 --- a/test_driver/login/login_page_test.dart +++ b/test_driver/login/login_page_test.dart @@ -32,17 +32,20 @@ void main() { await driver.tap(find.byTooltip('Back')); await delayed(); await driver.tap(find.byValueKey('noAccountRegister')); + await delayed(); }); test('注册页测试',() async { await driver.tap(find.byValueKey('getVerificationCode'));/// 无法成功触发事件,需要输入手机号 - + await delayed(); + final SerializableFinder textField = find.byValueKey('phone'); await driver.tap(textField); // 点击输入框,给予焦点 await driver.enterText('15000000000'); // 输入内容 await delayed(); await driver.tap(find.byValueKey('getVerificationCode')); + await delayed(); final SerializableFinder textField2 = find.byValueKey('vcode'); await driver.tap(textField2); @@ -55,12 +58,14 @@ void main() { await delayed(); await driver.tap(find.byValueKey('register')); // 点击注册 - + await delayed(); + // 清除输入框文字 await driver.tap(find.byValueKey('password_delete')); await delayed(); await driver.tap(find.byTooltip('Back')); + await delayed(); }, timeout: const Timeout(Duration(seconds: 30))); test('登录页测试',() async { @@ -78,6 +83,7 @@ void main() { await driver.tap(find.byValueKey('password_showPwd')); await delayed(); await driver.tap(find.byValueKey('login')); // 点击登录 + await delayed(); }, timeout: const Timeout(Duration(seconds: 30))); }); } diff --git a/test_driver/order/order_test.dart b/test_driver/order/order_test.dart index c4c5d96dc..1a5665acb 100644 --- a/test_driver/order/order_test.dart +++ b/test_driver/order/order_test.dart @@ -55,6 +55,7 @@ void main() { await delayed(); await driver.tap(find.text('确定')); await driver.scroll(find.byValueKey('order_list'), 0.0, 500.0, scrollDuration); + await delayed(); }); test('订单详情页',() async { @@ -72,6 +73,7 @@ void main() { test('订单搜索页测试',() async { await driver.tap(find.byTooltip('搜索')); + await delayed(); await driver.tap(find.byValueKey('search_text_field'), timeout: const Duration(minutes: 1),); await driver.enterText('flutter'); await driver.tap(find.text('搜索')); diff --git a/test_driver/setting/setting_test.dart b/test_driver/setting/setting_test.dart index 3f98242ea..812c48c9e 100644 --- a/test_driver/setting/setting_test.dart +++ b/test_driver/setting/setting_test.dart @@ -68,6 +68,7 @@ void main([List args = const []]) { await driver.tap(find.byTooltip('店铺')); await delayed(); await driver.tap(find.byValueKey('setting')); + await delayed(); } }); @@ -94,6 +95,7 @@ void main([List args = const []]) { await driver.tap(find.byTooltip('Back')); await delayed(); await driver.tap(find.byValueKey('noAccountRegister')); + await delayed(); }); }); } diff --git a/test_driver/statistic/statistic_test.dart b/test_driver/statistic/statistic_test.dart index 42cdec5f0..7e8c3ae24 100644 --- a/test_driver/statistic/statistic_test.dart +++ b/test_driver/statistic/statistic_test.dart @@ -42,6 +42,7 @@ void main() { await driver.scroll(find.byValueKey('goods_statistics_list'), 0, 300, scrollDuration); await delayed(); await driver.tap(find.byTooltip('Back')); + await delayed(); }); test('订单统计页测试',() async { @@ -54,6 +55,7 @@ void main() { await driver.tap(find.byValueKey('year')); await delayed(); await driver.tap(find.byTooltip('Back')); + await delayed(); }); }); } diff --git a/test_driver/store/store_test.dart b/test_driver/store/store_test.dart index cab255be0..f382febb5 100644 --- a/test_driver/store/store_test.dart +++ b/test_driver/store/store_test.dart @@ -34,11 +34,13 @@ void main() { await delayed(); await driver.tap(find.text('提交')); + await delayed(); }); test('审核结果页测试',() async { await delayed(); await driver.tap(find.text('进入')); + await delayed(); }); }); } From 117c13645b1e99ca5b775f2d35db6e59b06e88c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=94=AF=E9=B9=BF?= Date: Mon, 15 May 2023 10:34:53 +0800 Subject: [PATCH 150/206] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=B8=8B=E8=BD=BD?= =?UTF-8?q?=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 339d07a8e..229c109f2 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ 具体可以下载体验: -Android版安装包:[点击下载](https://www.pgyer.com/gYXj),下载密码:`111111`。 +Android版安装包:[点击下载](https://www.pgyer.com/oEm8me),下载密码:`111111`。 iOS需要自行下载代码运行。 From a1769c6d301844ef13a2b0918f0a8cd3923397aa Mon Sep 17 00:00:00 2001 From: weilu Date: Sun, 21 May 2023 17:10:07 +0800 Subject: [PATCH 151/206] =?UTF-8?q?README-EN=20=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README-EN.md | 119 +++++++++++++++++++++++++++------------------------ pubspec.yaml | 2 +- 2 files changed, 64 insertions(+), 57 deletions(-) diff --git a/README-EN.md b/README-EN.md index f9f2b81d7..be72e320e 100644 --- a/README-EN.md +++ b/README-EN.md @@ -4,15 +4,15 @@ ## English | [中文](README.md) -This project is an exercise project for individuals to learn Flutter. +This project is an exercise in learning Flutter for personal growth and development. -Realize specific design effects by setting, modifying, combining self-contained widgets and customizing to meet the needs of daily development. +To achieve specific design outcomes and meet the demands of daily development, one may employ the methods of configuring, modifying, combining pre-existing components, and customizing. -See the design catalog for the design drawings of this project. +The design plans for this project can be found in the "design" directory. You may utilize these plans to practice with a specific goal in mind. Any implementation is solely based on personal comprehension and learning. Should there be any superior implementation strategies, I welcome the opportunity for discussion. ## Preview -The effect of some pages is as follows: +Some of the page effects are as follows: | ![](./preview/Screenshot_1.png) | ![](./preview/Screenshot_2.png) | ![](./preview/Screenshot_3.png) | ![](./preview/Screenshot_4.png) | | :--------------------------------: | :---------------------------------: | :-------------------------------: | :-------------------------------: | @@ -23,41 +23,46 @@ The effect of some pages is as follows: | ![](./preview/Screenshot_22.jpg) | ![](./preview/Screenshot_23.jpg) | ![](./preview/Screenshot_24.jpg) | ![](./preview/Screenshot_25.jpg) | | ![](./preview/Screenshot_26.jpg) | ![](./preview/Screenshot_27.jpg) | ![](./preview/lottie.gif) | | -## Content +**If you find this project satisfactory, kindly show your support by giving it a Star or Fork. Rest assured, this project is being continuously maintained and any issues can be brought to our attention by submitting an Issue.** -* mvp mode -* Use `provider`(version 6.x) for state management +## Realizing the content. + +* MVP pattern +* State management using `provider` (version 6.x) * Network request encapsulation based on `dio` (version 5.x) -* Driver testing, accessibility testing. -* Support dark mode -* Localization(Thanks @ghedwards) -* Use `Sliver` series of components to achieve complex scrolling effects -* Use amap Positioning to select address -* Pull down to refresh + pull up to load more -* Check update +* Integration testing and accessibility testing +* Support for dark mode +* Localization(Thanks to @ghedwards) +* Implementation of complex scrolling effects using `Sliver` series components +* Location selection using AMap (supports Web) +* Encapsulation of common widgets handling +* Pull-to-refresh and load-more functionality +* Application update check * PopupWindow -* Scan code(qr_code_scanner plugin) -* Menu switching animation (circular diffusion, 3D flip) -* Sliding delete +* QR code scanning functionality (using the qr_code_scanner plugin) +* Menu switching animations (circular expansion, 3D flip) +* Swipe-to-delete * City selection -* Similar to the three-level linkage of Jingdong's choice of cities -* Custom Dialog -* Sticky headers +* Three-level linkage selection similar to JD's city selection +* Various custom dialogs +* Sticky header for lists * Password input keyboard -* Verification code input -* Custom Simple Calendar -* Graphs and [pie charts](https://dartpad.cn/d06f8f737d6eb2d87978eb2d14b87864) -* Modular routing management -* More optimization +* Verification code input box +* Custom simple calendar +* Line chart and [pie charts](https://dartpad.cn/d06f8f737d6eb2d87978eb2d14b87864) +* Modularized route management +* More demos (ripple animation, scratch card, lottie) +* More detailed optimizations +You may download and experience it specifically by accessing the following links: -Android package:[Click to download](https://www.pgyer.com/gYXj),Password: `111111`。 +For the Android version, kindly click on the link provided: [Download here](https://www.pgyer.com/oEm8me), and enter the password: `111111`. -iOS and Web needs to download the code to run. +As for iOS, you will need to download and run the code on your own. -Web:https://simplezhli.github.io/flutter_deer/ +For web experience, please visit: https://simplezhli.github.io/flutter_deer/ -## Project environment +## The project's operational environment. [![Build Status](https://github.com/simplezhli/flutter_deer/workflows/flutter_deer%20driver/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions?query=workflow%3A%22flutter_deer+driver%22+branch%3Amaster) @@ -65,21 +70,23 @@ Web:https://simplezhli.github.io/flutter_deer/ 2. Dart version 3.0.0 -## Precautions +## Precautions to be taken. -- iOS can execute commands `flutter build ios` to create `release` versions. Android can execute commands `flutter build apk` to create `release` versions. +- In debug mode, there may be some lagging, which is considered a normal occurrence. A satisfactory experience requires the creation of a release package. To create a release version for iOS, execute the command `flutter build ios`. For Android, execute the command `flutter build apk`. -- If there is a problem with the project, you can try to find a solution in the [iOS problem summary](./docs/iOS问题汇总.md) and [Android problem summary](./docs/Android问题汇总.md). +- If there are any issues with the project's execution, please refer to the [iOS issue summary](./docs/iOS问题汇总.md) and [Android issue summary](./docs/Android问题汇总.md) for possible solutions. -- Due to some plug-ins, this project has imperfect support on the Windows and macOS. Those who are interested can run the experience by themselves. +- Due to certain plugin limitations, this project is only available for preview on Windows and macOS. Those interested may run and experience it themselves. -- You can execute integration test commands to `flutter drive --target=test_driver/driver.dart` view function demonstrations. +- To view the functionality demonstration, execute the integration test command `flutter drive --target=test_driver/driver.dart`. + +- Due to the abundance of pages, it may be difficult to match the design at first. However, I have added the relative path of the design in the code comments, which can be searched or located for the corresponding page. I hope this will be helpful to you. -- I have added a relative path to the design drawings in the page notes. I can search or find the corresponding page. I hope it will help you. +- This project uses the [FlutterJsonBeanFactory](https://github.com/zhangruiyu/FlutterJsonBeanFactory) plugin to generate Beans. -- This project uses the [FlutterJsonBeanFactory](https://github.com/zhangruiyu/FlutterJsonBeanFactory) plugin to generate beans. +- Web performance may be slower due to large resource files such as js and deployment on Github. -## Summary of experience +## Summary of Experience - [Flutter开发中的一些Tips(一)](https://weilu.blog.csdn.net/article/details/90546727) @@ -115,33 +122,33 @@ Web:https://simplezhli.github.io/flutter_deer/ ## Tripartite library used -| 库 | 功能 | +| library | Functionality | | -------------------------- | --------------- | -| [dio](https://github.com/cfug/dio) | **Network library** | +| [dio](https://github.com/cfug/dio) | **Networking library** | | [provider](https://github.com/rrousselGit/provider) | **State management** | -| [flutter_2d_amap](https://github.com/simplezhli/flutter_2d_amap) | **2D AMap** | +| [flutter_2d_amap](https://github.com/simplezhli/flutter_2d_amap) | **2D map from Amap** | | [cached_network_image](https://github.com/renefloor/flutter_cached_network_image) | **Image loading** | -| [fluro](https://github.com/theyakka/fluro) | **Route** | -| [flutter_oktoast](https://github.com/OpenFlutter/flutter_oktoast) | **Toast** | -| [common_utils](https://github.com/Sky24n/common_utils) | **Dart common utils library** | -| [flutter_slidable](https://github.com/letsar/flutter_slidable) | **Sliding delete** | -| [flustars](https://github.com/Sky24n/flustars) | **Flutter common utils library** | -| [flutter_swiper](https://github.com/best-flutter/flutter_swiper) | **Flutter banner component** | -| [url_launcher](https://github.com/flutter/plugins/tree/master/packages/url_launcher) | **Launch URL plugin** | -| [image_picker](https://github.com/flutter/plugins/tree/master/packages/image_picker) | **Picture selection plugin** | -| [rxdart](https://github.com/ReactiveX/rxdart) | **Dart responsive extension** | +| [fluro](https://github.com/theyakka/fluro) | **Routing management** | +| [flutter_oktoast](https://github.com/OpenFlutter/flutter_oktoast) | **Toast notifications** | +| [common_utils](https://github.com/Sky24n/common_utils) | **Common Dart utility library** | +| [flutter_slidable](https://github.com/letsar/flutter_slidable) | **Swipe-to-delete** | +| [flustars](https://github.com/Sky24n/flustars) | **Common Flutter utility library** | +| [flutter_swiper](https://github.com/best-flutter/flutter_swiper) | **Flutter carousel component** | +| [url_launcher](https://github.com/flutter/plugins/tree/master/packages/url_launcher) | **Plugin for launching URLs** | +| [image_picker](https://github.com/flutter/plugins/tree/master/packages/image_picker) | **Plugin for selecting images** | +| [rxdart](https://github.com/ReactiveX/rxdart) | **Reactive extensions for Dart** | | [webview_flutter](https://github.com/flutter/plugins/tree/master/packages/webview_flutter) | **WebView plugin** | -| [keyboard_actions](https://github.com/diegoveloper/flutter_keyboard_actions) | **Keyboard actions** | -| [sticky_headers](https://github.com/fluttercommunity/flutter_sticky_headers) | **Sticky headers** | +| [keyboard_actions](https://github.com/diegoveloper/flutter_keyboard_actions) | **Handling keyboard events** | +| [sticky_headers](https://github.com/fluttercommunity/flutter_sticky_headers) | **Sticky headers for lists** | | [azlistview](https://github.com/flutterchina/azlistview) | **City selection list** | -| [date_utils](https://github.com/apptreesoftware/date_utils) | **Commonly used date tools** | +| [date_utils](https://github.com/apptreesoftware/date_utils) | **Common date utility classes** | | [bezier_chart](https://github.com/aeyrium/bezier-chart) | **Bezier chart** | -| [sprintf](https://github.com/Naddiseo/dart-sprintf) | **Format String** | -| [qr_code_scanner](https://github.com/juliuscanute/qr_code_scanner) | **Scan code** | +| [sprintf](https://github.com/Naddiseo/dart-sprintf) | **String formatting** | +| [qr_code_scanner](https://github.com/juliuscanute/qr_code_scanner) | **Scanning QR codes** | | [intl](https://github.com/dart-lang/intl) | **Localization** | -| [device_info_plus](https://github.com/fluttercommunity/plus_plugins/tree/main/packages/device_info_plus) | **Device info** | +| [device_info_plus](https://github.com/fluttercommunity/plus_plugins/tree/main/packages/device_info_plus) | **Getting device information** | | [vibration](https://github.com/benjamindean/flutter_vibration) | **Vibration** | -| [lottie](https://github.com/xvrh/lottie-flutter) | **lottie** | +| [lottie](https://github.com/xvrh/lottie-flutter) | **Animation effects** | For details, please refer to the [pubspec.yaml](https://github.com/simplezhli/flutter_deer/blob/master/pubspec.yaml) file. diff --git a/pubspec.yaml b/pubspec.yaml index 93b37461f..b48328735 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -72,7 +72,7 @@ dependencies: # 高德2D地图插件(支持Web) https://github.com/simplezhli/flutter_2d_amap flutter_2d_amap: git: - ref: '9e1d22ec' + ref: '3850a4dc' url: 'https://github.com/simplezhli/flutter_2d_amap.git' # demo 用到的库 # 刮刮卡 https://github.com/vintage/scratcher From 0caae0a1c8d59a1ec9186f37722d14f93f5fe5a0 Mon Sep 17 00:00:00 2001 From: weilu Date: Thu, 8 Jun 2023 22:24:48 +0800 Subject: [PATCH 152/206] =?UTF-8?q?dio=E5=8D=87=E8=87=B35.2.0+1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/net/dio_utils.dart | 2 +- lib/net/error_handle.dart | 6 ++++-- lib/net/intercept.dart | 6 +++--- pubspec.yaml | 6 +++--- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/lib/net/dio_utils.dart b/lib/net/dio_utils.dart index 014cf93f9..3a7a40178 100644 --- a/lib/net/dio_utils.dart +++ b/lib/net/dio_utils.dart @@ -169,7 +169,7 @@ class DioUtils { } void _cancelLogPrint(dynamic e, String url) { - if (e is DioError && CancelToken.isCancel(e)) { + if (e is DioException && CancelToken.isCancel(e)) { Log.e('取消请求接口: $url'); } } diff --git a/lib/net/error_handle.dart b/lib/net/error_handle.dart index ee847158a..dcd2cb9aa 100644 --- a/lib/net/error_handle.dart +++ b/lib/net/error_handle.dart @@ -34,7 +34,7 @@ class ExceptionHandle { static NetError handleException(dynamic error) { debugPrint(error.toString()); - if (error is DioError) { + if (error is DioException) { if (error.type.errorCode == 0) { return _handleException(error.error); } else { @@ -68,13 +68,15 @@ class NetError{ String msg; } -extension DioErrorTypeExtension on DioErrorType { +extension DioErrorTypeExtension on DioExceptionType { int get errorCode => [ ExceptionHandle.connect_timeout_error, ExceptionHandle.send_timeout_error, ExceptionHandle.receive_timeout_error, 0, + 0, ExceptionHandle.cancel_error, 0, + ExceptionHandle.unknown_error, ][index]; } diff --git a/lib/net/intercept.dart b/lib/net/intercept.dart index 285b1d7b4..3668c9be8 100644 --- a/lib/net/intercept.dart +++ b/lib/net/intercept.dart @@ -78,7 +78,7 @@ class TokenInterceptor extends QueuedInterceptor { onReceiveProgress: request.onReceiveProgress, ); return handler.next(response); - } on DioError catch (e) { + } on DioException catch (e) { return handler.reject(e); } } @@ -124,7 +124,7 @@ class LoggingInterceptor extends Interceptor{ } @override - void onError(DioError err, ErrorInterceptorHandler handler) { + void onError(DioException err, ErrorInterceptorHandler handler) { Log.d('----------Error-----------'); super.onError(err, handler); } @@ -149,7 +149,7 @@ class AdapterInterceptor extends Interceptor{ } @override - void onError(DioError err, ErrorInterceptorHandler handler) { + void onError(DioException err, ErrorInterceptorHandler handler) { if (err.response != null) { adapterData(err.response!); } diff --git a/pubspec.yaml b/pubspec.yaml index b48328735..d248d312b 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -23,7 +23,7 @@ dependencies: # Toast插件 https://github.com/OpenFlutter/flutter_oktoast oktoast: ^3.3.1 # 网络库 https://github.com/cfug/dio - dio: ^5.1.1 + dio: ^5.2.0+1 # https://github.com/ReactiveX/rxdart rxdart: ^0.27.7 # Dart 常用工具类库 https://github.com/Sky24n/common_utils @@ -66,7 +66,7 @@ dependencies: vibration: 1.7.6 vibration_web: 1.6.5 # 获取当前设备信息 https://github.com/fluttercommunity/plus_plugins/tree/main/packages/device_info_plus - device_info_plus: 8.2.0 + device_info_plus: 9.0.2 # 桌面应用调整窗口的大小和位置 https://github.com/leanflutter/window_manager window_manager: 0.3.1 # 高德2D地图插件(支持Web) https://github.com/simplezhli/flutter_2d_amap @@ -78,7 +78,7 @@ dependencies: # 刮刮卡 https://github.com/vintage/scratcher scratcher: ^2.3.0 # 动画效果 https://github.com/xvrh/lottie-flutter - lottie: ^2.3.1 + lottie: ^2.4.0 # https://github.com/simplezhli/flutter_deer/issues/187 dependency_overrides: From 72256dee46fc37fe3091553c6e13e71311a331dd Mon Sep 17 00:00:00 2001 From: weilu Date: Sun, 11 Jun 2023 14:07:43 +0800 Subject: [PATCH 153/206] =?UTF-8?q?image=5Fpicker=E6=94=AF=E6=8C=81Windows?= =?UTF-8?q?=E3=80=81macOS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- macos/Flutter/GeneratedPluginRegistrant.swift | 2 ++ macos/Runner.xcodeproj/project.pbxproj | 2 ++ macos/Runner/DebugProfile.entitlements | 2 ++ macos/Runner/Release.entitlements | 2 ++ pubspec.yaml | 8 ++++---- windows/flutter/generated_plugin_registrant.cc | 3 +++ windows/flutter/generated_plugins.cmake | 1 + 7 files changed, 16 insertions(+), 4 deletions(-) diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index 2ba836907..95a5f7025 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -6,6 +6,7 @@ import FlutterMacOS import Foundation import device_info_plus +import file_selector_macos import path_provider_macos import screen_retriever import shared_preferences_macos @@ -15,6 +16,7 @@ import window_manager func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin")) + FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) ScreenRetrieverPlugin.register(with: registry.registrar(forPlugin: "ScreenRetrieverPlugin")) SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj index 06e594795..d7728a445 100644 --- a/macos/Runner.xcodeproj/project.pbxproj +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -301,6 +301,7 @@ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh", "${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework", "${BUILT_PRODUCTS_DIR}/device_info_plus/device_info_plus.framework", + "${BUILT_PRODUCTS_DIR}/file_selector_macos/file_selector_macos.framework", "${BUILT_PRODUCTS_DIR}/path_provider_macos/path_provider_macos.framework", "${BUILT_PRODUCTS_DIR}/screen_retriever/screen_retriever.framework", "${BUILT_PRODUCTS_DIR}/shared_preferences_macos/shared_preferences_macos.framework", @@ -312,6 +313,7 @@ outputPaths = ( "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FMDB.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/device_info_plus.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/file_selector_macos.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/path_provider_macos.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/screen_retriever.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/shared_preferences_macos.framework", diff --git a/macos/Runner/DebugProfile.entitlements b/macos/Runner/DebugProfile.entitlements index c946719a1..9f689d112 100644 --- a/macos/Runner/DebugProfile.entitlements +++ b/macos/Runner/DebugProfile.entitlements @@ -10,5 +10,7 @@ com.apple.security.network.client + com.apple.security.files.user-selected.read-only + diff --git a/macos/Runner/Release.entitlements b/macos/Runner/Release.entitlements index f0966c9dc..d3bfabb4d 100644 --- a/macos/Runner/Release.entitlements +++ b/macos/Runner/Release.entitlements @@ -8,5 +8,7 @@ com.apple.security.network.client + com.apple.security.files.user-selected.read-only + diff --git a/pubspec.yaml b/pubspec.yaml index d248d312b..292dc9eb2 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -23,7 +23,7 @@ dependencies: # Toast插件 https://github.com/OpenFlutter/flutter_oktoast oktoast: ^3.3.1 # 网络库 https://github.com/cfug/dio - dio: ^5.2.0+1 + dio: ^5.2.1 # https://github.com/ReactiveX/rxdart rxdart: ^0.27.7 # Dart 常用工具类库 https://github.com/Sky24n/common_utils @@ -35,8 +35,8 @@ dependencies: flutter_swiper_null_safety_flutter3: ^3.0.1 # flutter_swiper很久不维护,可以使用这个替代 # 启动URL的插件(支持Web) https://github.com/flutter/packages/tree/main/packages/url_launcher url_launcher: 6.1.8 - # 图片选择插件(支持Web) https://github.com/flutter/packages/tree/main/packages/image_picker - image_picker: 0.8.6 + # 图片选择插件 https://github.com/flutter/packages/tree/main/packages/image_picker + image_picker: 0.8.8 # 侧滑删除 https://github.com/letsar/flutter_slidable flutter_slidable: ^3.0.0 # WebView插件 https://github.com/flutter/packages/tree/main/packages/webview_flutter @@ -68,7 +68,7 @@ dependencies: # 获取当前设备信息 https://github.com/fluttercommunity/plus_plugins/tree/main/packages/device_info_plus device_info_plus: 9.0.2 # 桌面应用调整窗口的大小和位置 https://github.com/leanflutter/window_manager - window_manager: 0.3.1 + window_manager: 0.3.4 # 高德2D地图插件(支持Web) https://github.com/simplezhli/flutter_2d_amap flutter_2d_amap: git: diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index fe7ec1cb9..0d3b5b1ff 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -6,11 +6,14 @@ #include "generated_plugin_registrant.h" +#include #include #include #include void RegisterPlugins(flutter::PluginRegistry* registry) { + FileSelectorWindowsRegisterWithRegistrar( + registry->GetRegistrarForPlugin("FileSelectorWindows")); ScreenRetrieverPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("ScreenRetrieverPlugin")); UrlLauncherWindowsRegisterWithRegistrar( diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index fb2dea6b4..c0677f7bc 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -3,6 +3,7 @@ # list(APPEND FLUTTER_PLUGIN_LIST + file_selector_windows screen_retriever url_launcher_windows window_manager From 8cc4f938c2c3eb9d81fb645bfc2c28c1eb56a00a Mon Sep 17 00:00:00 2001 From: weilu Date: Thu, 29 Jun 2023 20:47:39 +0800 Subject: [PATCH 154/206] =?UTF-8?q?analysis=5Foptions=20=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- analysis_options.yaml | 18 +++++++++--------- pubspec.yaml | 6 +++--- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/analysis_options.yaml b/analysis_options.yaml index 9dee00628..7f6439f1d 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -1,16 +1,15 @@ # Specify analysis options. # -# For a list of lints, see: http://dart-lang.github.io/linter/lints/ -# See the configuration guide for more -# https://github.com/dart-lang/sdk/tree/main/pkg/analyzer#configuring-the-analyzer +# For a list of lints, see: https://dart.dev/lints +# For guidelines on configuring static analysis, see: +# https://dart.dev/guides/language/analysis-options # # There are other similar analysis options files in the flutter repos, # which should be kept in sync with this file: # # - analysis_options.yaml (this file) -# - https://github.com/flutter/plugins/blob/master/analysis_options.yaml -# - https://github.com/flutter/engine/blob/master/analysis_options.yaml -# - https://github.com/flutter/packages/blob/master/analysis_options.yaml +# - https://github.com/flutter/engine/blob/main/analysis_options.yaml +# - https://github.com/flutter/packages/blob/main/analysis_options.yaml # # This file contains the analysis options used for code in the flutter/flutter # repository. @@ -37,7 +36,7 @@ analyzer: linter: rules: # This list is derived from the list of all available lints located at - # https://github.com/dart-lang/linter/blob/master/example/all.yaml + # https://github.com/dart-lang/linter/blob/main/example/all.yaml - always_declare_return_types - always_put_control_body_on_new_line # - always_put_required_named_parameters_first # we prefer having parameters in the same order as fields https://github.com/flutter/flutter/issues/10219 @@ -112,15 +111,14 @@ linter: - hash_and_equals - implementation_imports - implicit_call_tearoffs + - implicit_reopen # - invariant_booleans # too many false positives: https://github.com/dart-lang/linter/issues/811 - - iterable_contains_unrelated_type # - join_return_with_assignment # not required by flutter style - leading_newlines_in_multiline_strings - library_names - library_prefixes # - library_private_types_in_public_api # - lines_longer_than_80_chars # required by flutter style - - list_remove_unrelated_type # - literal_only_boolean_expressions # too many false positives: https://github.com/dart-lang/linter/issues/453 - missing_whitespace_between_adjacent_strings - no_adjacent_strings_in_list @@ -128,6 +126,7 @@ linter: - no_duplicate_case_values - no_leading_underscores_for_library_prefixes - no_leading_underscores_for_local_identifiers + - no_literal_bool_comparisons - no_logic_in_create_state # - no_runtimeType_toString # ok in tests; we enable this only in packages/ - non_constant_identifier_names @@ -197,6 +196,7 @@ linter: - tighten_type_of_initializing_formals # - type_annotate_public_apis # subset of always_specify_types - type_init_formals + - type_literal_in_constant_pattern # - unawaited_futures # too many false positives, especially with the way AnimationController works - unnecessary_await_in_return - unnecessary_brace_in_string_interps diff --git a/pubspec.yaml b/pubspec.yaml index 292dc9eb2..9b49ed151 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -36,7 +36,7 @@ dependencies: # 启动URL的插件(支持Web) https://github.com/flutter/packages/tree/main/packages/url_launcher url_launcher: 6.1.8 # 图片选择插件 https://github.com/flutter/packages/tree/main/packages/image_picker - image_picker: 0.8.8 + image_picker: 1.0.0 # 侧滑删除 https://github.com/letsar/flutter_slidable flutter_slidable: ^3.0.0 # WebView插件 https://github.com/flutter/packages/tree/main/packages/webview_flutter @@ -61,9 +61,9 @@ dependencies: # url: https://github.com/xeinebiu/qr_code_scanner.git # ref: fix_break_changes_platform # App Shortcuts https://github.com/flutter/packages/tree/main/packages/quick_actions - quick_actions: 1.0.3 + quick_actions: 1.0.5 # 振动 https://github.com/benjamindean/flutter_vibration - vibration: 1.7.6 + vibration: 1.8.1 vibration_web: 1.6.5 # 获取当前设备信息 https://github.com/fluttercommunity/plus_plugins/tree/main/packages/device_info_plus device_info_plus: 9.0.2 From e0b2a778d0cf40e317864cf61b4de4269de3dcf8 Mon Sep 17 00:00:00 2001 From: weilu Date: Wed, 19 Jul 2023 21:22:18 +0800 Subject: [PATCH 155/206] =?UTF-8?q?=E4=BE=9D=E8=B5=96=E5=8D=87=E7=BA=A7?= =?UTF-8?q?=EF=BC=8C=E6=9B=BF=E6=8D=A2=E6=95=8F=E6=84=9F=E8=AF=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/account/page/withdrawal_account_page.dart | 2 +- macos/Flutter/GeneratedPluginRegistrant.swift | 4 ++-- pubspec.yaml | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/account/page/withdrawal_account_page.dart b/lib/account/page/withdrawal_account_page.dart index e49ff9a37..655c1db3c 100644 --- a/lib/account/page/withdrawal_account_page.dart +++ b/lib/account/page/withdrawal_account_page.dart @@ -30,7 +30,7 @@ class _WithdrawalAccountPageState extends State { _list.clear(); _list.add(WithdrawalAccountModel('唯鹿', '微信', 1, '')); _list.add(WithdrawalAccountModel('李*', '工商银行', 0, '**** **** **** 5236')); - _list.add(WithdrawalAccountModel('李*', '渤海银行', 0, '**** **** **** 2165')); + _list.add(WithdrawalAccountModel('李*', '工商银行', 0, '**** **** **** 2165')); } @override diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index 95a5f7025..7e75e9f66 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -7,9 +7,9 @@ import Foundation import device_info_plus import file_selector_macos -import path_provider_macos +import path_provider_foundation import screen_retriever -import shared_preferences_macos +import shared_preferences_foundation import sqflite import url_launcher_macos import window_manager diff --git a/pubspec.yaml b/pubspec.yaml index 9b49ed151..87e9e807d 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -23,7 +23,7 @@ dependencies: # Toast插件 https://github.com/OpenFlutter/flutter_oktoast oktoast: ^3.3.1 # 网络库 https://github.com/cfug/dio - dio: ^5.2.1 + dio: ^5.3.0 # https://github.com/ReactiveX/rxdart rxdart: ^0.27.7 # Dart 常用工具类库 https://github.com/Sky24n/common_utils @@ -78,7 +78,7 @@ dependencies: # 刮刮卡 https://github.com/vintage/scratcher scratcher: ^2.3.0 # 动画效果 https://github.com/xvrh/lottie-flutter - lottie: ^2.4.0 + lottie: ^2.5.0 # https://github.com/simplezhli/flutter_deer/issues/187 dependency_overrides: From 21397f17d7a00bf5b7e3f0e84a2ecee0d545a6d0 Mon Sep 17 00:00:00 2001 From: weilu Date: Thu, 17 Aug 2023 23:14:26 +0800 Subject: [PATCH 156/206] =?UTF-8?q?=E9=80=82=E9=85=8Dflutter=203.13.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/flutter-drive.yml | 6 +++--- .github/workflows/flutter-web-deploy.yml | 2 +- README-EN.md | 4 ++-- README.md | 4 ++-- lib/demo/navigator/parser/route_information_parser.dart | 8 ++++---- lib/demo/navigator/screen/books_list_screen.dart | 2 +- pubspec.yaml | 4 ++-- 7 files changed, 15 insertions(+), 15 deletions(-) diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index 29e54e07b..9d54ec972 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -53,7 +53,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v2 with: - flutter-version: '3.10.0' + flutter-version: '3.13.0' channel: 'stable' # or: 'dev' or 'beta' architecture: x64 - run: "flutter clean" @@ -78,7 +78,7 @@ jobs: java-version: '11' - uses: subosito/flutter-action@v2 with: - flutter-version: '3.10.0' + flutter-version: '3.13.0' channel: 'stable' # or: 'dev' or 'beta' architecture: x64 - name: "Run Flutter Driver tests" @@ -104,7 +104,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v2 with: - flutter-version: '3.10.0' + flutter-version: '3.13.0' channel: 'stable' architecture: x64 - run: "flutter pub get" diff --git a/.github/workflows/flutter-web-deploy.yml b/.github/workflows/flutter-web-deploy.yml index d056df75e..7fe4e90e2 100644 --- a/.github/workflows/flutter-web-deploy.yml +++ b/.github/workflows/flutter-web-deploy.yml @@ -14,7 +14,7 @@ jobs: - uses: actions/checkout@v2.3.1 - uses: subosito/flutter-action@v2 with: - flutter-version: '3.10.0' + flutter-version: '3.13.0' channel: 'stable' architecture: x64 - name: "Web Build 🔧" diff --git a/README-EN.md b/README-EN.md index be72e320e..35dc13e2b 100644 --- a/README-EN.md +++ b/README-EN.md @@ -66,9 +66,9 @@ For web experience, please visit: https://simplezhli.github.io/flutter_deer/ [![Build Status](https://github.com/simplezhli/flutter_deer/workflows/flutter_deer%20driver/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions?query=workflow%3A%22flutter_deer+driver%22+branch%3Amaster) - 1. Flutter version 3.10.0 + 1. Flutter version 3.13.0 - 2. Dart version 3.0.0 + 2. Dart version 3.1.0 ## Precautions to be taken. diff --git a/README.md b/README.md index 229c109f2..6dcc469db 100644 --- a/README.md +++ b/README.md @@ -66,9 +66,9 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ [![Build Status](https://github.com/simplezhli/flutter_deer/workflows/flutter_deer%20driver/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions?query=workflow%3A%22flutter_deer+driver%22+branch%3Amaster) - 1. Flutter version 3.10.0 + 1. Flutter version 3.13.0 - 2. Dart version 3.0.0 + 2. Dart version 3.1.0 ## 注意事项 diff --git a/lib/demo/navigator/parser/route_information_parser.dart b/lib/demo/navigator/parser/route_information_parser.dart index dbfce8c5e..8475cef2f 100644 --- a/lib/demo/navigator/parser/route_information_parser.dart +++ b/lib/demo/navigator/parser/route_information_parser.dart @@ -6,7 +6,7 @@ class BookRouteInformationParser extends RouteInformationParser { @override Future parseRouteInformation( RouteInformation routeInformation) async { - final uri = Uri.parse(routeInformation.location!); + final uri = routeInformation.uri; if (uri.pathSegments.isNotEmpty && uri.pathSegments.first == 'settings') { return BooksSettingsPath(); @@ -23,13 +23,13 @@ class BookRouteInformationParser extends RouteInformationParser { @override RouteInformation? restoreRouteInformation(BookRoutePath configuration) { if (configuration is BooksListPath) { - return const RouteInformation(location: '/home'); + return RouteInformation(uri: Uri.parse('/home')); } if (configuration is BooksSettingsPath) { - return const RouteInformation(location: '/settings'); + return RouteInformation(uri: Uri.parse('/settings')); } if (configuration is BooksDetailsPath) { - return RouteInformation(location: '/book/${configuration.id}'); + return RouteInformation(uri: Uri.parse('/book/${configuration.id}')); } return null; } diff --git a/lib/demo/navigator/screen/books_list_screen.dart b/lib/demo/navigator/screen/books_list_screen.dart index 3aeca32bd..d04c11e9b 100644 --- a/lib/demo/navigator/screen/books_list_screen.dart +++ b/lib/demo/navigator/screen/books_list_screen.dart @@ -17,7 +17,7 @@ class BooksListScreen extends StatelessWidget { return Scaffold( body: ListView( children: [ - for (var book in books) + for (final book in books) ListTile( title: Text(book.title), subtitle: Text(book.author), diff --git a/pubspec.yaml b/pubspec.yaml index 87e9e807d..19f8b0c60 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -23,7 +23,7 @@ dependencies: # Toast插件 https://github.com/OpenFlutter/flutter_oktoast oktoast: ^3.3.1 # 网络库 https://github.com/cfug/dio - dio: ^5.3.0 + dio: ^5.3.2 # https://github.com/ReactiveX/rxdart rxdart: ^0.27.7 # Dart 常用工具类库 https://github.com/Sky24n/common_utils @@ -78,7 +78,7 @@ dependencies: # 刮刮卡 https://github.com/vintage/scratcher scratcher: ^2.3.0 # 动画效果 https://github.com/xvrh/lottie-flutter - lottie: ^2.5.0 + lottie: ^2.6.0 # https://github.com/simplezhli/flutter_deer/issues/187 dependency_overrides: From 33bf67ae4423484baeb5d3b013b51f22da86cbd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=94=AF=E9=B9=BF?= Date: Tue, 22 Aug 2023 15:08:57 +0800 Subject: [PATCH 157/206] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 229c109f2..24d31fd13 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ 具体可以下载体验: -Android版安装包:[点击下载](https://www.pgyer.com/oEm8me),下载密码:`111111`。 +Android版安装包:[点击去下载](https://github.com/simplezhli/flutter_deer/releases)。 iOS需要自行下载代码运行。 From 3f6325a59de2615daf821cd226747d5ad799094c Mon Sep 17 00:00:00 2001 From: weilu Date: Wed, 23 Aug 2023 20:42:40 +0800 Subject: [PATCH 158/206] =?UTF-8?q?=E9=80=82=E9=85=8Dflutter=203.13.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 +++- ...351\227\256\351\242\230\346\261\207\346\200\273.md" | 2 ++ ios/Runner.xcodeproj/project.pbxproj | 10 +++++----- .../xcshareddata/xcschemes/Runner.xcscheme | 2 +- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 072ca4c35..faad53c52 100644 --- a/README.md +++ b/README.md @@ -182,7 +182,9 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ - 部分使用的到的三方库没有适配3.0.0,flutter_swiper(flutter_swiper_null_safety_flutter3替代)、flustars(flustars_flutter3替代)、azlistview(升级scrollable_positioned_list)。 -- 2.0.0 已知存在问题(#68571 #73351 #73388 #74890 #79773 #79931) +- 3.10.0 已知存在问题(#105203 #113595) + +- 2.0.0 已知存在问题(#68571 #73351 #74890 #79773 #79931) - ListView在没有设置分割线的情况下,个别Item之间存在大约1像素的间隔([像素对齐问题](https://github.com/flutter/flutter/issues/14288))。 diff --git "a/docs/Android\351\227\256\351\242\230\346\261\207\346\200\273.md" "b/docs/Android\351\227\256\351\242\230\346\261\207\346\200\273.md" index 059686620..725f2cc1c 100644 --- "a/docs/Android\351\227\256\351\242\230\346\261\207\346\200\273.md" +++ "b/docs/Android\351\227\256\351\242\230\346\261\207\346\200\273.md" @@ -42,6 +42,8 @@ flutter build apk --target-platform android-arm64 --obfuscate --split-debug-info ## 历史问题 +- 3.10.0已知问题(~~#124546~~ ~~#126560~~ ~~#131319~~ ~~#73388~~)。 + - 1.22.0已知问题(~~#67262~~ ~~#67213~~)。 - 1.17.0已知问题(~~#25767~~ ~~#47191~~)。 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 48dc386bf..47e6c9a7a 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -156,7 +156,7 @@ 97C146E61CF9000F007C117D /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1300; + LastUpgradeCheck = 1430; ORGANIZATIONNAME = "The Chromium Authors"; TargetAttributes = { 97C146ED1CF9000F007C117D = { @@ -266,10 +266,10 @@ "${BUILT_PRODUCTS_DIR}/device_info_plus/device_info_plus.framework", "${BUILT_PRODUCTS_DIR}/image_picker_ios/image_picker_ios.framework", "${BUILT_PRODUCTS_DIR}/integration_test/integration_test.framework", - "${BUILT_PRODUCTS_DIR}/path_provider_ios/path_provider_ios.framework", + "${BUILT_PRODUCTS_DIR}/path_provider_foundation/path_provider_foundation.framework", "${BUILT_PRODUCTS_DIR}/qr_code_scanner/qr_code_scanner.framework", "${BUILT_PRODUCTS_DIR}/quick_actions_ios/quick_actions_ios.framework", - "${BUILT_PRODUCTS_DIR}/shared_preferences_ios/shared_preferences_ios.framework", + "${BUILT_PRODUCTS_DIR}/shared_preferences_foundation/shared_preferences_foundation.framework", "${BUILT_PRODUCTS_DIR}/sqflite/sqflite.framework", "${BUILT_PRODUCTS_DIR}/url_launcher_ios/url_launcher_ios.framework", "${BUILT_PRODUCTS_DIR}/vibration/vibration.framework", @@ -282,10 +282,10 @@ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/device_info_plus.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/image_picker_ios.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/integration_test.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/path_provider_ios.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/path_provider_foundation.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/qr_code_scanner.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/quick_actions_ios.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/shared_preferences_ios.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/shared_preferences_foundation.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sqflite.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/url_launcher_ios.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/vibration.framework", diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index c87d15a33..a6b826db2 100644 --- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ Date: Thu, 24 Aug 2023 22:32:13 +0800 Subject: [PATCH 159/206] =?UTF-8?q?SliverMainAxisGroup=E6=9B=BF=E6=8D=A2fl?= =?UTF-8?q?utter=5Fsticky=5Fheaders=20=20=20=20=20=20|?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README-EN.md | 1 - README.md | 1 - .../page/account_record_list_page.dart | 120 ++++++++++-------- .../page/withdrawal_record_list_page.dart | 120 ++++++++++-------- pubspec.yaml | 2 - 5 files changed, 129 insertions(+), 115 deletions(-) diff --git a/README-EN.md b/README-EN.md index 35dc13e2b..31ae359c8 100644 --- a/README-EN.md +++ b/README-EN.md @@ -139,7 +139,6 @@ For web experience, please visit: https://simplezhli.github.io/flutter_deer/ | [rxdart](https://github.com/ReactiveX/rxdart) | **Reactive extensions for Dart** | | [webview_flutter](https://github.com/flutter/plugins/tree/master/packages/webview_flutter) | **WebView plugin** | | [keyboard_actions](https://github.com/diegoveloper/flutter_keyboard_actions) | **Handling keyboard events** | -| [sticky_headers](https://github.com/fluttercommunity/flutter_sticky_headers) | **Sticky headers for lists** | | [azlistview](https://github.com/flutterchina/azlistview) | **City selection list** | | [date_utils](https://github.com/apptreesoftware/date_utils) | **Common date utility classes** | | [bezier_chart](https://github.com/aeyrium/bezier-chart) | **Bezier chart** | diff --git a/README.md b/README.md index faad53c52..ac790fe01 100644 --- a/README.md +++ b/README.md @@ -143,7 +143,6 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ | [rxdart](https://github.com/ReactiveX/rxdart) | **Dart的响应式扩展** | | [webview_flutter](https://github.com/flutter/plugins/tree/master/packages/webview_flutter) | **WebView插件** | | [keyboard_actions](https://github.com/diegoveloper/flutter_keyboard_actions) | **处理键盘事件** | -| [sticky_headers](https://github.com/fluttercommunity/flutter_sticky_headers) | **列表悬浮头** | | [azlistview](https://github.com/flutterchina/azlistview) | **城市选择列表** | | [date_utils](https://github.com/apptreesoftware/date_utils) | **常用的日期工具类** | | [bezier_chart](https://github.com/aeyrium/bezier-chart) | **曲线图表** | diff --git a/lib/account/page/account_record_list_page.dart b/lib/account/page/account_record_list_page.dart index fbc0cc038..164f090ec 100644 --- a/lib/account/page/account_record_list_page.dart +++ b/lib/account/page/account_record_list_page.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/util/theme_utils.dart'; import 'package:flutter_deer/widgets/my_app_bar.dart'; -import 'package:sticky_headers/sticky_headers.dart'; +import '../../order/page/order_page.dart'; /// design/6店铺-账户/index.html#artboard1 class AccountRecordListPage extends StatefulWidget { @@ -20,70 +20,80 @@ class _AccountRecordListPageState extends State { appBar: const MyAppBar( centerTitle: '账户流水', ), - body: ListView.builder( - itemCount: 8, - /// 将item默认合并的语义拆开,自行组合, 另一种方式见 withdrawal_record_list_page.dart - addSemanticIndexes: false, - itemBuilder: (_, int index) { - return StickyHeader( - header: Container( + body: CustomScrollView( + slivers: [ + for (int i = 0; i < 8; i++) + _buildGroup(i) + ], + ), + ); + } + + Widget _buildGroup(int index) { + return SliverMainAxisGroup( + slivers: [ + SliverPersistentHeader( + pinned: true, + delegate: SliverAppBarDelegate( + Container( alignment: Alignment.centerLeft, width: double.infinity, color: ThemeUtils.getStickyHeaderColor(context), padding: const EdgeInsets.only(left: 16.0), - height: 34.0, child: Text('2021/06/0${index + 1}'), - ), - content: _buildItem(index), - ); - }, - ), + ) + , 34.0, + ), + ), + SliverList( + delegate: SliverChildBuilderDelegate((_, index) { + return _buildItem(index); + }, + childCount: index + 1, + ), + ), + ], ); } - - Widget _buildItem(int index) { - final List list = List.generate(index + 1, (int i) { - return Container( - height: 72.0, - width: double.infinity, - padding: const EdgeInsets.all(15.0), - decoration: BoxDecoration( - border: Border( - bottom: Divider.createBorderSide(context, width: 0.8), - ), + + Widget _buildItem(int i) { + return Container( + height: 72.0, + width: double.infinity, + padding: const EdgeInsets.all(15.0), + decoration: BoxDecoration( + border: Border( + bottom: Divider.createBorderSide(context, width: 0.8), ), - child: IndexedSemantics( - index: index, - child: Stack( - children: [ - Text(i.isEven ? '采购订单结算营收' : '提现'), - Positioned( - top: 0.0, - right: 0.0, - child: Text(i.isEven ? '+10.00' : '-10.00', - style: i.isEven ? TextStyle( - color: Theme.of(context).colorScheme.error, - fontWeight: FontWeight.bold, - ) : TextStyles.textBold14, - ), - ), - Positioned( - bottom: 0.0, - left: 0.0, - child: Text(i.isEven ? '18:20:10' : '08:20:11', style: Theme.of(context).textTheme.titleSmall), - ), - Positioned( - bottom: 0.0, - right: 0.0, - child: Text('余额:20.00', style: Theme.of(context).textTheme.titleSmall), + ), + child: IndexedSemantics( + index: i, + child: Stack( + children: [ + Text(i.isEven ? '采购订单结算营收' : '提现'), + Positioned( + top: 0.0, + right: 0.0, + child: Text(i.isEven ? '+10.00' : '-10.00', + style: i.isEven ? TextStyle( + color: Theme.of(context).colorScheme.error, + fontWeight: FontWeight.bold, + ) : TextStyles.textBold14, ), - ], - ), + ), + Positioned( + bottom: 0.0, + left: 0.0, + child: Text(i.isEven ? '18:20:10' : '08:20:11', style: Theme.of(context).textTheme.titleSmall), + ), + Positioned( + bottom: 0.0, + right: 0.0, + child: Text('余额:20.00', style: Theme.of(context).textTheme.titleSmall), + ), + ], ), - ); - }); - return Column( - children: list + ), ); } } diff --git a/lib/account/page/withdrawal_record_list_page.dart b/lib/account/page/withdrawal_record_list_page.dart index c9fd22cf9..2af575d11 100644 --- a/lib/account/page/withdrawal_record_list_page.dart +++ b/lib/account/page/withdrawal_record_list_page.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/util/theme_utils.dart'; import 'package:flutter_deer/widgets/my_app_bar.dart'; -import 'package:sticky_headers/sticky_headers.dart'; +import '../../order/page/order_page.dart'; /// design/6店铺-账户/index.html#artboard19 class WithdrawalRecordListPage extends StatefulWidget { @@ -20,62 +20,75 @@ class _WithdrawalRecordListPageState extends State { appBar: const MyAppBar( title: '提现记录', ), - body: ListView.builder( - itemCount: 8, - itemBuilder: (_, index) { - return Semantics( - /// 将item默认合并的语义拆开,自行组合, 另一种方式见 account_record_list_page.dart - explicitChildNodes: true, - child: StickyHeader( - header: Container( - alignment: Alignment.centerLeft, - width: double.infinity, - color: ThemeUtils.getStickyHeaderColor(context), - padding: const EdgeInsets.only(left: 16.0), - height: 34.0, - child: Text('2021/06/0${index + 1}'), - ), - content: _buildItem(index), - ), - ); - }, + body: CustomScrollView( + slivers: [ + for (int i = 0; i < 8; i++) + _buildGroup(i) + ], ), ); } - - Widget _buildItem(int index) { - final list = List.generate(index + 1, (i) { - final Widget content = Stack( - children: [ - Text(i.isEven ? '微信(唯鹿)' : '工商(尾号:4562 李一)'), - const Positioned( - top: 0.0, - right: 0.0, - child: Text('-10.00', style: TextStyles.textBold14), + + Widget _buildGroup(int index) { + return SliverMainAxisGroup( + slivers: [ + SliverPersistentHeader( + pinned: true, + delegate: SliverAppBarDelegate( + Container( + alignment: Alignment.centerLeft, + width: double.infinity, + color: ThemeUtils.getStickyHeaderColor(context), + padding: const EdgeInsets.only(left: 16.0), + child: Text('2021/06/0${index + 1}'), + ) + , 34.0, ), - Positioned( - bottom: 0.0, - left: 0.0, - child: Text(i.isEven ? '12:40:20' : '12:50:20', style: Theme.of(context).textTheme.titleSmall), + ), + SliverList( + delegate: SliverChildBuilderDelegate((_, index) { + return _buildItem(index); + }, + childCount: index + 1, ), - Positioned( - bottom: 0.0, - right: 0.0, - child: Text( - i.isEven ? '审核失败' : '待审核', - style: i.isEven ? TextStyle( - fontSize: Dimens.font_sp12, - color: Theme.of(context).colorScheme.error, - ) : const TextStyle( - fontSize: Dimens.font_sp12, - color: Colours.orange, - ), + ), + ], + ); + } + + Widget _buildItem(int i) { + final Widget content = Stack( + children: [ + Text(i.isEven ? '微信(唯鹿)' : '工商(尾号:4562 李一)'), + const Positioned( + top: 0.0, + right: 0.0, + child: Text('-10.00', style: TextStyles.textBold14), + ), + Positioned( + bottom: 0.0, + left: 0.0, + child: Text(i.isEven ? '12:40:20' : '12:50:20', style: Theme.of(context).textTheme.titleSmall), + ), + Positioned( + bottom: 0.0, + right: 0.0, + child: Text( + i.isEven ? '审核失败' : '待审核', + style: i.isEven ? TextStyle( + fontSize: Dimens.font_sp12, + color: Theme.of(context).colorScheme.error, + ) : const TextStyle( + fontSize: Dimens.font_sp12, + color: Colours.orange, ), ), - ], - ); + ), + ], + ); - return Container( + return MergeSemantics( + child: Container( height: 72.0, width: double.infinity, padding: const EdgeInsets.all(15.0), @@ -84,13 +97,8 @@ class _WithdrawalRecordListPageState extends State { bottom: Divider.createBorderSide(context, width: 0.8), ), ), - child: MergeSemantics( - child: content, - ), - ); - }); - return Column( - children: list + child: content, + ), ); } } diff --git a/pubspec.yaml b/pubspec.yaml index 19f8b0c60..8042524ee 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -43,8 +43,6 @@ dependencies: webview_flutter: 4.2.0 # 处理键盘事件 https://github.com/diegoveloper/flutter_keyboard_actions keyboard_actions: ^4.2.0 - # 列表悬浮头 https://github.com/fluttercommunity/flutter_sticky_headers - sticky_headers: ^0.3.0+2 # 城市选择列表 https://github.com/flutterchina/azlistview azlistview: ^2.0.0 # 路由框架 https://github.com/theyakka/fluro From 843941650711ae7dffea5764bf693014e5b12f0d Mon Sep 17 00:00:00 2001 From: weilu Date: Sun, 27 Aug 2023 17:41:22 +0800 Subject: [PATCH 160/206] Enable literal_only_boolean_expressions --- analysis_options.yaml | 7 +++++-- pubspec.yaml | 2 +- test/net/dio_test.dart | 4 ++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/analysis_options.yaml b/analysis_options.yaml index 7f6439f1d..4823f6bb4 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -57,7 +57,7 @@ linter: - avoid_field_initializers_in_const_classes # - avoid_final_parameters # incompatible with prefer_final_parameters - avoid_function_literals_in_foreach_calls - - avoid_implementing_value_types +# - avoid_implementing_value_types - avoid_init_to_null - avoid_js_rounded_ints # - avoid_multiple_declarations_per_line # seems to be a stylistic choice we don't subscribe to @@ -119,7 +119,7 @@ linter: - library_prefixes # - library_private_types_in_public_api # - lines_longer_than_80_chars # required by flutter style - # - literal_only_boolean_expressions # too many false positives: https://github.com/dart-lang/linter/issues/453 + - literal_only_boolean_expressions - missing_whitespace_between_adjacent_strings - no_adjacent_strings_in_list - no_default_cases @@ -128,6 +128,8 @@ linter: - no_leading_underscores_for_local_identifiers - no_literal_bool_comparisons - no_logic_in_create_state + - no_self_assignments + - no_wildcard_variable_uses # - no_runtimeType_toString # ok in tests; we enable this only in packages/ - non_constant_identifier_names - noop_primitive_operations @@ -220,6 +222,7 @@ linter: - unnecessary_string_interpolations - unnecessary_this - unnecessary_to_list_in_spreads + - unreachable_from_main - unrelated_type_equality_checks - unsafe_html - use_build_context_synchronously diff --git a/pubspec.yaml b/pubspec.yaml index 8042524ee..24ed1a591 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -32,7 +32,7 @@ dependencies: # Flutter 常用工具类库 https://github.com/Sky24n/flustars flustars_flutter3: ^3.0.0 # flustars很久不维护,可以使用这个替代 # Flutter 轮播图 https://github.com/mdddj/flutter_swiper_null_safety - flutter_swiper_null_safety_flutter3: ^3.0.1 # flutter_swiper很久不维护,可以使用这个替代 + flutter_swiper_null_safety_flutter3: ^4.0.0 # flutter_swiper很久不维护,可以使用这个替代 # 启动URL的插件(支持Web) https://github.com/flutter/packages/tree/main/packages/url_launcher url_launcher: 6.1.8 # 图片选择插件 https://github.com/flutter/packages/tree/main/packages/image_picker diff --git a/test/net/dio_test.dart b/test/net/dio_test.dart index 9f56a6b42..ee9f6fe68 100644 --- a/test/net/dio_test.dart +++ b/test/net/dio_test.dart @@ -19,8 +19,8 @@ void main() { onSuccess: (data) { expect(data?.name, '唯鹿'); }, - onError: (_, __) { - debugPrint('$_, $__'); + onError: (code, msg) { + debugPrint('$code, $msg'); } ); }); From 179deee71d6337e1ae8bf3c4fd677ed0435fbde2 Mon Sep 17 00:00:00 2001 From: weilu Date: Sun, 17 Sep 2023 12:11:04 +0800 Subject: [PATCH 161/206] =?UTF-8?q?=E4=BE=9D=E8=B5=96=E5=8D=87=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pubspec.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pubspec.yaml b/pubspec.yaml index 24ed1a591..d2fcb94a9 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -36,11 +36,11 @@ dependencies: # 启动URL的插件(支持Web) https://github.com/flutter/packages/tree/main/packages/url_launcher url_launcher: 6.1.8 # 图片选择插件 https://github.com/flutter/packages/tree/main/packages/image_picker - image_picker: 1.0.0 + image_picker: 1.0.4 # 侧滑删除 https://github.com/letsar/flutter_slidable flutter_slidable: ^3.0.0 # WebView插件 https://github.com/flutter/packages/tree/main/packages/webview_flutter - webview_flutter: 4.2.0 + webview_flutter: 4.2.4 # 处理键盘事件 https://github.com/diegoveloper/flutter_keyboard_actions keyboard_actions: ^4.2.0 # 城市选择列表 https://github.com/flutterchina/azlistview @@ -66,7 +66,7 @@ dependencies: # 获取当前设备信息 https://github.com/fluttercommunity/plus_plugins/tree/main/packages/device_info_plus device_info_plus: 9.0.2 # 桌面应用调整窗口的大小和位置 https://github.com/leanflutter/window_manager - window_manager: 0.3.4 + window_manager: 0.3.6 # 高德2D地图插件(支持Web) https://github.com/simplezhli/flutter_2d_amap flutter_2d_amap: git: @@ -74,7 +74,7 @@ dependencies: url: 'https://github.com/simplezhli/flutter_2d_amap.git' # demo 用到的库 # 刮刮卡 https://github.com/vintage/scratcher - scratcher: ^2.3.0 + scratcher: ^2.4.0 # 动画效果 https://github.com/xvrh/lottie-flutter lottie: ^2.6.0 From ed5c8c7d9e16baf5ed7343446e0ae457801f3376 Mon Sep 17 00:00:00 2001 From: weilu Date: Fri, 29 Sep 2023 19:46:42 +0800 Subject: [PATCH 162/206] flutter 3.13.6 --- .github/ISSUE_TEMPLATE/deer-issue-template.md | 2 +- .github/workflows/flutter-drive.yml | 6 +++--- .github/workflows/flutter-web-deploy.yml | 2 +- README-EN.md | 4 ++-- README.md | 4 ++-- pubspec.yaml | 6 +++--- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/deer-issue-template.md b/.github/ISSUE_TEMPLATE/deer-issue-template.md index 0c880f12e..e3ea3aa83 100644 --- a/.github/ISSUE_TEMPLATE/deer-issue-template.md +++ b/.github/ISSUE_TEMPLATE/deer-issue-template.md @@ -12,7 +12,7 @@ assignees: '' - [x] 电脑系统:如:`Windows 11` - [x] 设备型号:如:`小米13` - [x] 设备系统版本:如 `Android 13` -- [x] Flutter 版本:如 `3.7.0` +- [x] Flutter 版本:如 `3.13.0` ### 具体问题描述 ### diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index 9d54ec972..1d7e537fe 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -53,7 +53,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v2 with: - flutter-version: '3.13.0' + flutter-version: '3.13.6' channel: 'stable' # or: 'dev' or 'beta' architecture: x64 - run: "flutter clean" @@ -78,7 +78,7 @@ jobs: java-version: '11' - uses: subosito/flutter-action@v2 with: - flutter-version: '3.13.0' + flutter-version: '3.13.6' channel: 'stable' # or: 'dev' or 'beta' architecture: x64 - name: "Run Flutter Driver tests" @@ -104,7 +104,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v2 with: - flutter-version: '3.13.0' + flutter-version: '3.13.6' channel: 'stable' architecture: x64 - run: "flutter pub get" diff --git a/.github/workflows/flutter-web-deploy.yml b/.github/workflows/flutter-web-deploy.yml index 7fe4e90e2..7c00b3ee8 100644 --- a/.github/workflows/flutter-web-deploy.yml +++ b/.github/workflows/flutter-web-deploy.yml @@ -14,7 +14,7 @@ jobs: - uses: actions/checkout@v2.3.1 - uses: subosito/flutter-action@v2 with: - flutter-version: '3.13.0' + flutter-version: '3.13.6' channel: 'stable' architecture: x64 - name: "Web Build 🔧" diff --git a/README-EN.md b/README-EN.md index 31ae359c8..0b1db4b97 100644 --- a/README-EN.md +++ b/README-EN.md @@ -66,9 +66,9 @@ For web experience, please visit: https://simplezhli.github.io/flutter_deer/ [![Build Status](https://github.com/simplezhli/flutter_deer/workflows/flutter_deer%20driver/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions?query=workflow%3A%22flutter_deer+driver%22+branch%3Amaster) - 1. Flutter version 3.13.0 + 1. Flutter version 3.13.6 - 2. Dart version 3.1.0 + 2. Dart version 3.1.3 ## Precautions to be taken. diff --git a/README.md b/README.md index ac790fe01..b5606ef2b 100644 --- a/README.md +++ b/README.md @@ -66,9 +66,9 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ [![Build Status](https://github.com/simplezhli/flutter_deer/workflows/flutter_deer%20driver/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions?query=workflow%3A%22flutter_deer+driver%22+branch%3Amaster) - 1. Flutter version 3.13.0 + 1. Flutter version 3.13.6 - 2. Dart version 3.1.0 + 2. Dart version 3.1.3 ## 注意事项 diff --git a/pubspec.yaml b/pubspec.yaml index d2fcb94a9..5efb19dc1 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -21,9 +21,9 @@ dependencies: # Localization https://github.com/dart-lang/intl intl: ^0.18.0 # Toast插件 https://github.com/OpenFlutter/flutter_oktoast - oktoast: ^3.3.1 + oktoast: ^3.3.2 # 网络库 https://github.com/cfug/dio - dio: ^5.3.2 + dio: ^5.3.3 # https://github.com/ReactiveX/rxdart rxdart: ^0.27.7 # Dart 常用工具类库 https://github.com/Sky24n/common_utils @@ -48,7 +48,7 @@ dependencies: # 路由框架 https://github.com/theyakka/fluro fluro: ^2.0.5 # 图片缓存 https://github.com/renefloor/flutter_cached_network_image - cached_network_image: ^3.2.3 + cached_network_image: ^3.3.0 # 格式化String https://github.com/Naddiseo/dart-sprintf sprintf: ^7.0.0 # 状态管理 https://github.com/rrousselGit/provider From 09657803760388b4588f7bc4c9e91408827ab583 Mon Sep 17 00:00:00 2001 From: weilu Date: Sun, 1 Oct 2023 16:55:13 +0800 Subject: [PATCH 163/206] =?UTF-8?q?=E5=A4=B1=E6=95=88=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/goods/page/goods_list_page.dart | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/goods/page/goods_list_page.dart b/lib/goods/page/goods_list_page.dart index c20c6ec99..4e0c013f6 100644 --- a/lib/goods/page/goods_list_page.dart +++ b/lib/goods/page/goods_list_page.dart @@ -58,15 +58,15 @@ class _GoodsListPageState extends State with AutomaticKeepAliveCl } final List _imgList = [ - 'https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=3130502839,1206722360&fm=26&gp=0.jpg', + 'https://hbimg.b0.upaiyun.com/29cdf569b916ec8b952804a93b0a77e8c9baf61a58e0b-A0orbz_fw658', if (Constant.isDriverTest) - 'https://img2.baidu.com/it/u=3994371075,170872697&fm=26&fmt=auto&gp=0.jpg' + 'https://hbimg.huabanimg.com/a3947661524be662da9f40d95dddc73c66196816633e1-9bUI91_fw658' else 'https://xxx', // 可以使用一张无效链接,触发缺省、异常显示图片 - 'https://img0.baidu.com/it/u=4049693009,2577412121&fm=224&fmt=auto&gp=0.jpg', - 'https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=3659255919,3211745976&fm=26&gp=0.jpg', - 'https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=2085939314,235211629&fm=26&gp=0.jpg', - 'https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=2441563887,1184810091&fm=26&gp=0.jpg' + 'https://hbimg.huabanimg.com/528c11bba65e2b8c0b6ae56f05e66b68f78f545f4ff26-tkM2Lx_fw658', + 'https://img2.baidu.com/it/u=272387872,295674292&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500', + 'https://img0.baidu.com/it/u=2202484983,917817934&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500', + 'https://img0.baidu.com/it/u=2329453320,961102964&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500' ]; Future _onRefresh() async { From 2f1e023a286a372b1d03217a2e1efba27fcc8952 Mon Sep 17 00:00:00 2001 From: weilu Date: Sun, 1 Oct 2023 17:04:47 +0800 Subject: [PATCH 164/206] =?UTF-8?q?=E5=B0=9D=E8=AF=95=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E9=9B=86=E6=88=90=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test_driver/login/login_page_test.dart | 5 +++++ test_driver/order/order_test.dart | 3 ++- test_driver/store/store_test.dart | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/test_driver/login/login_page_test.dart b/test_driver/login/login_page_test.dart index bee38aa57..72afd8c51 100644 --- a/test_driver/login/login_page_test.dart +++ b/test_driver/login/login_page_test.dart @@ -41,6 +41,7 @@ void main() { final SerializableFinder textField = find.byValueKey('phone'); await driver.tap(textField); // 点击输入框,给予焦点 + await delayed(); await driver.enterText('15000000000'); // 输入内容 await delayed(); @@ -49,11 +50,13 @@ void main() { final SerializableFinder textField2 = find.byValueKey('vcode'); await driver.tap(textField2); + await delayed(); await driver.enterText('123456'); await delayed(); final SerializableFinder textField3 = find.byValueKey('password'); await driver.tap(textField3); + await delayed(); await driver.enterText('111111'); await delayed(); @@ -71,10 +74,12 @@ void main() { test('登录页测试',() async { final SerializableFinder textField = find.byValueKey('phone'); await driver.tap(textField); + await delayed(); await driver.enterText('15000000000'); await delayed(); final SerializableFinder textField2 = find.byValueKey('password'); await driver.tap(textField2); + await delayed(); await driver.enterText('111111'); await delayed(); // 点击密码可见两次 diff --git a/test_driver/order/order_test.dart b/test_driver/order/order_test.dart index 1a5665acb..c68ad2c42 100644 --- a/test_driver/order/order_test.dart +++ b/test_driver/order/order_test.dart @@ -24,7 +24,7 @@ void main() { test('滑动订单列表',() async { await driver.tap(find.byTooltip('订单')); - + await delayed(); /// 水平滑动 final SerializableFinder pageView = find.byValueKey('pageView'); await driver.scroll(pageView, -400.0, 0, scrollDuration); @@ -61,6 +61,7 @@ void main() { test('订单详情页',() async { final SerializableFinder orderItem = find.byValueKey('order_item_2'); await driver.tap(orderItem); + await delayed(); await driver.tap(find.text('订单跟踪')); await delayed(); await driver.tap(find.byTooltip('Back')); diff --git a/test_driver/store/store_test.dart b/test_driver/store/store_test.dart index f382febb5..d09e517bb 100644 --- a/test_driver/store/store_test.dart +++ b/test_driver/store/store_test.dart @@ -24,6 +24,7 @@ void main() { test('店铺审核资料页测试',() async { await driver.tap(find.text('主营范围')); + await delayed(); final SerializableFinder sortList = find.byValueKey('goods_sort'); await delayed(); From 373c8677e2e10ac0914e13eaa353eb250e9fb927 Mon Sep 17 00:00:00 2001 From: weilu Date: Sun, 1 Oct 2023 18:01:03 +0800 Subject: [PATCH 165/206] =?UTF-8?q?=E5=B0=9D=E8=AF=95=E4=BF=AE=E5=A4=8DiOS?= =?UTF-8?q?=E9=9B=86=E6=88=90=E6=B5=8B=E8=AF=95=E5=A4=B1=E8=B4=A5=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/flutter-drive.yml | 2 +- lib/l10n/intl_en.arb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index 1d7e537fe..4223a4c03 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -58,7 +58,7 @@ jobs: architecture: x64 - run: "flutter clean" - name: "Run Flutter Driver tests" - run: "flutter drive --target=test_driver/driver.dart" + run: "flutter drive --target=test_driver/driver.dart --no-enable-impeller" #https://github.com/flutter/flutter/issues/128391 drive_android: # The type of machine to run the job on. diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb index 39d54b921..ca0de9b95 100644 --- a/lib/l10n/intl_en.arb +++ b/lib/l10n/intl_en.arb @@ -84,7 +84,7 @@ "type": "text", "placeholders": {} }, - "getVerificationCode": "Get verification code", + "getVerificationCode": "Get code", "@getVerificationCode": { "description": "Get verification code", "type": "text", From cbb4e1cc1142a5a5e1f944e73b637e975660ed6e Mon Sep 17 00:00:00 2001 From: weilu Date: Sun, 12 Nov 2023 16:03:21 +0800 Subject: [PATCH 166/206] Enable strict-inference --- analysis_options.yaml | 1 + lib/demo/lottie/lottie_demo.dart | 6 +++--- .../overlay/bottom_navigation/my_bottom_navigation_bar.dart | 2 +- lib/goods/widgets/goods_size_dialog.dart | 2 +- lib/goods/widgets/goods_sort_bottom_sheet.dart | 2 +- lib/goods/widgets/goods_sort_menu.dart | 2 +- lib/net/dio_utils.dart | 6 +++--- lib/order/widgets/pay_type_dialog.dart | 2 +- lib/routers/fluro_navigator.dart | 2 +- lib/shop/page/shop_page.dart | 2 +- lib/shop/page/shop_setting_page.dart | 4 ++-- lib/shop/widgets/pay_type_dialog.dart | 2 +- lib/shop/widgets/price_input_dialog.dart | 2 +- lib/shop/widgets/range_price_input_dialog.dart | 2 +- lib/shop/widgets/send_type_dialog.dart | 2 +- lib/util/app_navigator.dart | 2 +- lib/widgets/my_search_bar.dart | 2 +- pubspec.yaml | 6 +++--- 18 files changed, 25 insertions(+), 24 deletions(-) diff --git a/analysis_options.yaml b/analysis_options.yaml index 4823f6bb4..8726915dd 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -17,6 +17,7 @@ analyzer: language: strict-casts: true + strict-inference: true strict-raw-types: true errors: # allow self-reference to deprecated members (we do this because otherwise we have diff --git a/lib/demo/lottie/lottie_demo.dart b/lib/demo/lottie/lottie_demo.dart index bfe0ecc36..f7bdbf02d 100644 --- a/lib/demo/lottie/lottie_demo.dart +++ b/lib/demo/lottie/lottie_demo.dart @@ -145,11 +145,11 @@ class _MyTextField extends StatefulWidget { final bool obscureText; final TextInputType? keyboardType; /// 获取焦点监听 - final Function(bool isObscure)? onHasFocus; + final void Function(bool isObscure)? onHasFocus; /// 密码可见监听 - final Function(bool isObscure)? onObscureText; + final void Function(bool isObscure)? onObscureText; /// 文字输入监听 - final Function(String text)? onChanged; + final void Function(String text)? onChanged; @override _MyTextFieldState createState() => _MyTextFieldState(); diff --git a/lib/demo/overlay/bottom_navigation/my_bottom_navigation_bar.dart b/lib/demo/overlay/bottom_navigation/my_bottom_navigation_bar.dart index 53ad62dc9..06d5a0d15 100644 --- a/lib/demo/overlay/bottom_navigation/my_bottom_navigation_bar.dart +++ b/lib/demo/overlay/bottom_navigation/my_bottom_navigation_bar.dart @@ -13,7 +13,7 @@ class MyBottomNavigationBar extends StatefulWidget { /// 选中下标 final int selectedPosition; final bool isShowIndicator; - final Function(int selectedPosition) selectedCallback; + final void Function(int selectedPosition) selectedCallback; @override _MyBottomNavigationBarState createState() => _MyBottomNavigationBarState(); diff --git a/lib/goods/widgets/goods_size_dialog.dart b/lib/goods/widgets/goods_size_dialog.dart index 13ff8207c..a034eb307 100644 --- a/lib/goods/widgets/goods_size_dialog.dart +++ b/lib/goods/widgets/goods_size_dialog.dart @@ -11,7 +11,7 @@ class GoodsSizeDialog extends StatefulWidget { this.onPressed, }); - final Function(String)? onPressed; + final void Function(String)? onPressed; @override _GoodsSizeDialog createState() => _GoodsSizeDialog(); diff --git a/lib/goods/widgets/goods_sort_bottom_sheet.dart b/lib/goods/widgets/goods_sort_bottom_sheet.dart index b3b752522..77ce31a49 100644 --- a/lib/goods/widgets/goods_sort_bottom_sheet.dart +++ b/lib/goods/widgets/goods_sort_bottom_sheet.dart @@ -18,7 +18,7 @@ class GoodsSortBottomSheet extends StatefulWidget { required this.onSelected, }); - final Function(String, String) onSelected; + final void Function(String, String) onSelected; /// 临时状态 final GoodsSortProvider provider; diff --git a/lib/goods/widgets/goods_sort_menu.dart b/lib/goods/widgets/goods_sort_menu.dart index b008981fc..969e77f80 100644 --- a/lib/goods/widgets/goods_sort_menu.dart +++ b/lib/goods/widgets/goods_sort_menu.dart @@ -17,7 +17,7 @@ class GoodsSortMenu extends StatefulWidget { final List data; final int sortIndex; final double height; - final Function(int, String) onSelected; + final void Function(int, String) onSelected; @override _GoodsSortMenuState createState() => _GoodsSortMenuState(); diff --git a/lib/net/dio_utils.dart b/lib/net/dio_utils.dart index 3a7a40178..0520c8fbe 100644 --- a/lib/net/dio_utils.dart +++ b/lib/net/dio_utils.dart @@ -29,9 +29,9 @@ void configDio({ _interceptors = interceptors ?? _interceptors; } -typedef NetSuccessCallback = Function(T data); -typedef NetSuccessListCallback = Function(List data); -typedef NetErrorCallback = Function(int code, String msg); +typedef NetSuccessCallback = void Function(T data); +typedef NetSuccessListCallback = void Function(List data); +typedef NetErrorCallback = void Function(int code, String msg); /// @weilu https://github.com/simplezhli class DioUtils { diff --git a/lib/order/widgets/pay_type_dialog.dart b/lib/order/widgets/pay_type_dialog.dart index 384a19665..ea6290f55 100644 --- a/lib/order/widgets/pay_type_dialog.dart +++ b/lib/order/widgets/pay_type_dialog.dart @@ -12,7 +12,7 @@ class PayTypeDialog extends StatefulWidget { this.onPressed, }); - final Function(int, String)? onPressed; + final void Function(int, String)? onPressed; @override _PayTypeDialog createState() => _PayTypeDialog(); diff --git a/lib/routers/fluro_navigator.dart b/lib/routers/fluro_navigator.dart index ab84e5785..0d7be3e54 100644 --- a/lib/routers/fluro_navigator.dart +++ b/lib/routers/fluro_navigator.dart @@ -19,7 +19,7 @@ class NavigatorUtils { ); } - static void pushResult(BuildContext context, String path, Function(Object) function, + static void pushResult(BuildContext context, String path, void Function(Object) function, {bool replace = false, bool clearStack = false, Object? arguments}) { unfocus(); Routes.router.navigateTo(context, path, diff --git a/lib/shop/page/shop_page.dart b/lib/shop/page/shop_page.dart index 6517db1d8..4e57eef75 100644 --- a/lib/shop/page/shop_page.dart +++ b/lib/shop/page/shop_page.dart @@ -201,7 +201,7 @@ class _ShopFunctionModule extends StatelessWidget { required this.darkImage, }); - final Function(int index) onItemClick; + final void Function(int index) onItemClick; final List data; final List image; final List darkImage; diff --git a/lib/shop/page/shop_setting_page.dart b/lib/shop/page/shop_setting_page.dart index 350b54404..0c6cde614 100644 --- a/lib/shop/page/shop_setting_page.dart +++ b/lib/shop/page/shop_setting_page.dart @@ -204,7 +204,7 @@ class _ShopSettingPageState extends State { } void _goInputTextPage(BuildContext context, String title, - String hintText, String content, Function(Object?) function, + String hintText, String content, void Function(Object?) function, {TextInputType? keyboardType}) { NavigatorUtils.pushResult(context, @@ -218,7 +218,7 @@ class _ShopSettingPageState extends State { ); } - void _showInputDialog(String title, Function(String) onPressed) { + void _showInputDialog(String title, void Function(String) onPressed) { showDialog( context: context, barrierDismissible: false, diff --git a/lib/shop/widgets/pay_type_dialog.dart b/lib/shop/widgets/pay_type_dialog.dart index 6a2b49cae..1e3cb3191 100644 --- a/lib/shop/widgets/pay_type_dialog.dart +++ b/lib/shop/widgets/pay_type_dialog.dart @@ -16,7 +16,7 @@ class PayTypeDialog extends StatefulWidget { }); final List? value; - final Function(List) onPressed; + final void Function(List) onPressed; @override _PayTypeDialog createState() => _PayTypeDialog(); diff --git a/lib/shop/widgets/price_input_dialog.dart b/lib/shop/widgets/price_input_dialog.dart index ca524fd0f..3afd98f36 100644 --- a/lib/shop/widgets/price_input_dialog.dart +++ b/lib/shop/widgets/price_input_dialog.dart @@ -18,7 +18,7 @@ class PriceInputDialog extends StatefulWidget { final String? title; final double inputMaxPrice; - final Function(String) onPressed; + final void Function(String) onPressed; @override _PriceInputDialog createState() => _PriceInputDialog(); diff --git a/lib/shop/widgets/range_price_input_dialog.dart b/lib/shop/widgets/range_price_input_dialog.dart index 10e5481c8..d6ea38795 100644 --- a/lib/shop/widgets/range_price_input_dialog.dart +++ b/lib/shop/widgets/range_price_input_dialog.dart @@ -15,7 +15,7 @@ class RangePriceInputDialog extends StatefulWidget { }); final String? title; - final Function(String, String) onPressed; + final void Function(String, String) onPressed; @override _RangePriceInputDialog createState() => _RangePriceInputDialog(); diff --git a/lib/shop/widgets/send_type_dialog.dart b/lib/shop/widgets/send_type_dialog.dart index 716b3fca2..3be7badf7 100644 --- a/lib/shop/widgets/send_type_dialog.dart +++ b/lib/shop/widgets/send_type_dialog.dart @@ -13,7 +13,7 @@ class SendTypeDialog extends StatefulWidget { required this.onPressed, }); - final Function(int, String) onPressed; + final void Function(int, String) onPressed; @override _SendTypeDialog createState() => _SendTypeDialog(); diff --git a/lib/util/app_navigator.dart b/lib/util/app_navigator.dart index c3c86a6b5..01316858d 100644 --- a/lib/util/app_navigator.dart +++ b/lib/util/app_navigator.dart @@ -32,7 +32,7 @@ class AppNavigator { ); } - static void pushResult(BuildContext context, Widget scene, Function(Object?) function) { + static void pushResult(BuildContext context, Widget scene, void Function(Object?) function) { Navigator.push( context, MaterialPageRoute( diff --git a/lib/widgets/my_search_bar.dart b/lib/widgets/my_search_bar.dart index 87dc583bc..f9e6dc1a7 100644 --- a/lib/widgets/my_search_bar.dart +++ b/lib/widgets/my_search_bar.dart @@ -19,7 +19,7 @@ class MySearchBar extends StatefulWidget implements PreferredSizeWidget { final String backImg; final String hintText; - final Function(String)? onPressed; + final void Function(String)? onPressed; @override _MySearchBarState createState() => _MySearchBarState(); diff --git a/pubspec.yaml b/pubspec.yaml index 5efb19dc1..7071a4e92 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -40,7 +40,7 @@ dependencies: # 侧滑删除 https://github.com/letsar/flutter_slidable flutter_slidable: ^3.0.0 # WebView插件 https://github.com/flutter/packages/tree/main/packages/webview_flutter - webview_flutter: 4.2.4 + webview_flutter: 4.4.1 # 处理键盘事件 https://github.com/diegoveloper/flutter_keyboard_actions keyboard_actions: ^4.2.0 # 城市选择列表 https://github.com/flutterchina/azlistview @@ -64,7 +64,7 @@ dependencies: vibration: 1.8.1 vibration_web: 1.6.5 # 获取当前设备信息 https://github.com/fluttercommunity/plus_plugins/tree/main/packages/device_info_plus - device_info_plus: 9.0.2 + device_info_plus: 9.1.0 # 桌面应用调整窗口的大小和位置 https://github.com/leanflutter/window_manager window_manager: 0.3.6 # 高德2D地图插件(支持Web) https://github.com/simplezhli/flutter_2d_amap @@ -76,7 +76,7 @@ dependencies: # 刮刮卡 https://github.com/vintage/scratcher scratcher: ^2.4.0 # 动画效果 https://github.com/xvrh/lottie-flutter - lottie: ^2.6.0 + lottie: ^2.7.0 # https://github.com/simplezhli/flutter_deer/issues/187 dependency_overrides: From f49ad664c3a6522ed768491db79faacb58b5cc9b Mon Sep 17 00:00:00 2001 From: weilu Date: Thu, 16 Nov 2023 23:44:27 +0800 Subject: [PATCH 167/206] =?UTF-8?q?=E9=80=82=E9=85=8Dflutter=203.16.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/flutter-drive.yml | 6 ++--- .github/workflows/flutter-web-deploy.yml | 4 +-- README-EN.md | 4 +-- README.md | 4 +-- ios/Podfile | 2 +- lib/account/page/withdrawal_page.dart | 5 ++-- lib/main.dart | 2 +- lib/mvp/base_page.dart | 5 ++-- lib/setting/widgets/update_dialog.dart | 7 ++--- .../my_single_child_scroll_view.dart | 3 ++- lib/widgets/double_tap_back_exit_app.dart | 26 +++++++++---------- 11 files changed, 31 insertions(+), 37 deletions(-) diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index 4223a4c03..d2e11c7fd 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -53,7 +53,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v2 with: - flutter-version: '3.13.6' + flutter-version: '3.16.0' channel: 'stable' # or: 'dev' or 'beta' architecture: x64 - run: "flutter clean" @@ -78,7 +78,7 @@ jobs: java-version: '11' - uses: subosito/flutter-action@v2 with: - flutter-version: '3.13.6' + flutter-version: '3.16.0' channel: 'stable' # or: 'dev' or 'beta' architecture: x64 - name: "Run Flutter Driver tests" @@ -104,7 +104,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v2 with: - flutter-version: '3.13.6' + flutter-version: '3.16.0' channel: 'stable' architecture: x64 - run: "flutter pub get" diff --git a/.github/workflows/flutter-web-deploy.yml b/.github/workflows/flutter-web-deploy.yml index 7c00b3ee8..5829863eb 100644 --- a/.github/workflows/flutter-web-deploy.yml +++ b/.github/workflows/flutter-web-deploy.yml @@ -5,7 +5,7 @@ name: flutter_deer web deploy on: push: paths: - - 'pubspec1.yaml' + - 'pubspec.yaml' jobs: web_build_and_deploy: @@ -14,7 +14,7 @@ jobs: - uses: actions/checkout@v2.3.1 - uses: subosito/flutter-action@v2 with: - flutter-version: '3.13.6' + flutter-version: '3.16.0' channel: 'stable' architecture: x64 - name: "Web Build 🔧" diff --git a/README-EN.md b/README-EN.md index 0b1db4b97..fc73223ab 100644 --- a/README-EN.md +++ b/README-EN.md @@ -66,9 +66,9 @@ For web experience, please visit: https://simplezhli.github.io/flutter_deer/ [![Build Status](https://github.com/simplezhli/flutter_deer/workflows/flutter_deer%20driver/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions?query=workflow%3A%22flutter_deer+driver%22+branch%3Amaster) - 1. Flutter version 3.13.6 + 1. Flutter version 3.16.0 - 2. Dart version 3.1.3 + 2. Dart version 3.2.0 ## Precautions to be taken. diff --git a/README.md b/README.md index b5606ef2b..6811e1e69 100644 --- a/README.md +++ b/README.md @@ -66,9 +66,9 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ [![Build Status](https://github.com/simplezhli/flutter_deer/workflows/flutter_deer%20driver/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions?query=workflow%3A%22flutter_deer+driver%22+branch%3Amaster) - 1. Flutter version 3.13.6 + 1. Flutter version 3.16.0 - 2. Dart version 3.1.3 + 2. Dart version 3.2.0 ## 注意事项 diff --git a/ios/Podfile b/ios/Podfile index db9a5fd45..00d2e9470 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -2,7 +2,7 @@ platform :ios, '11.0' # source 'https://github.com/CocoaPods/Specs.git' - +source 'https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/lib/account/page/withdrawal_page.dart b/lib/account/page/withdrawal_page.dart index d576c834b..f9fdbb1b3 100644 --- a/lib/account/page/withdrawal_page.dart +++ b/lib/account/page/withdrawal_page.dart @@ -55,11 +55,10 @@ class _WithdrawalPageState extends State { @override Widget build(BuildContext context) { - return WillPopScope( - onWillPop: () { + return PopScope( + onPopInvoked: (_) { /// 拦截返回,关闭键盘,否则会造成上一页面短暂的组件溢出 FocusManager.instance.primaryFocus?.unfocus(); - return Future.value(true); }, child: Scaffold( appBar: const MyAppBar( diff --git a/lib/main.dart b/lib/main.dart index ef134bbeb..71208b709 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -180,7 +180,7 @@ class MyApp extends StatelessWidget { /// 保证文字大小不受手机系统设置影响 https://www.kikt.top/posts/flutter/layout/dynamic-text/ return MediaQuery( - data: MediaQuery.of(context).copyWith(textScaleFactor: 1.0), + data: MediaQuery.of(context).copyWith(textScaler: TextScaler.noScaling), child: child!, ); }, diff --git a/lib/mvp/base_page.dart b/lib/mvp/base_page.dart index 20b95f76c..3cd10ef2f 100644 --- a/lib/mvp/base_page.dart +++ b/lib/mvp/base_page.dart @@ -38,11 +38,10 @@ mixin BasePageMixin on State< barrierDismissible: false, barrierColor: const Color(0x00FFFFFF), // 默认dialog背景色为半透明黑色,这里修改为透明(1.20添加属性) builder:(_) { - return WillPopScope( - onWillPop: () async { + return PopScope( + onPopInvoked: (_) { // 拦截到返回键,证明dialog被手动关闭 _isShowDialog = false; - return Future.value(true); }, child: buildProgress(), ); diff --git a/lib/setting/widgets/update_dialog.dart b/lib/setting/widgets/update_dialog.dart index d4eddbda5..f33bc7264 100644 --- a/lib/setting/widgets/update_dialog.dart +++ b/lib/setting/widgets/update_dialog.dart @@ -39,11 +39,8 @@ class _UpdateDialogState extends State { @override Widget build(BuildContext context) { final Color primaryColor = Theme.of(context).primaryColor; - return WillPopScope( - onWillPop: () async { - /// 使用false禁止返回键返回,达到强制升级目的 - return true; - }, + return PopScope( + canPop: false, /// 使用false禁止返回键返回,达到强制升级目的 child: Scaffold( resizeToAvoidBottomInset: false, backgroundColor: Colors.transparent, diff --git a/lib/widgets/bezier_chart/my_single_child_scroll_view.dart b/lib/widgets/bezier_chart/my_single_child_scroll_view.dart index fa55a8612..2a41cc6ae 100644 --- a/lib/widgets/bezier_chart/my_single_child_scroll_view.dart +++ b/lib/widgets/bezier_chart/my_single_child_scroll_view.dart @@ -363,7 +363,8 @@ class _RenderSingleChildViewport extends RenderBox @override RevealedOffset getOffsetToReveal(RenderObject target, double alignment, - {Rect? rect}) { + {Rect? rect, Axis? axis,}) { + axis = this.axis; rect ??= target.paintBounds; if (target is! RenderBox) return RevealedOffset(offset: offset.pixels, rect: rect); diff --git a/lib/widgets/double_tap_back_exit_app.dart b/lib/widgets/double_tap_back_exit_app.dart index 5adfaf860..d24bfe807 100644 --- a/lib/widgets/double_tap_back_exit_app.dart +++ b/lib/widgets/double_tap_back_exit_app.dart @@ -25,21 +25,19 @@ class _DoubleTapBackExitAppState extends State { @override Widget build(BuildContext context) { - return WillPopScope( - onWillPop: _isExit, + return PopScope( + canPop: _lastTime == null || DateTime.now().difference(_lastTime!) > widget.duration, + onPopInvoked: (didPop) { + if (!didPop) { + Toast.cancelToast(); + /// 不推荐使用 `dart:io` 的 exit(0) + SystemNavigator.pop(); + } else { + _lastTime = DateTime.now(); + Toast.show('再次点击退出应用'); + } + }, child: widget.child, ); } - - Future _isExit() async { - if (_lastTime == null || DateTime.now().difference(_lastTime!) > widget.duration) { - _lastTime = DateTime.now(); - Toast.show('再次点击退出应用'); - return Future.value(false); - } - Toast.cancelToast(); - /// 不推荐使用 `dart:io` 的 exit(0) - await SystemNavigator.pop(); - return Future.value(true); - } } From 333d6909b1070fb554dd5a1c5db705c531a40251 Mon Sep 17 00:00:00 2001 From: weilu Date: Sat, 18 Nov 2023 08:53:35 +0800 Subject: [PATCH 168/206] =?UTF-8?q?=E9=80=82=E9=85=8Dflutter=203.16.0=20Po?= =?UTF-8?q?pScope=E9=83=A8=E5=88=86=E5=AE=9E=E7=8E=B0=E5=9B=9E=E9=80=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/flutter-web-deploy.yml | 2 +- ios/Podfile | 2 +- lib/mvp/base_page.dart | 5 +++-- lib/widgets/double_tap_back_exit_app.dart | 26 ++++++++++++----------- 4 files changed, 19 insertions(+), 16 deletions(-) diff --git a/.github/workflows/flutter-web-deploy.yml b/.github/workflows/flutter-web-deploy.yml index 5829863eb..0e2e778c5 100644 --- a/.github/workflows/flutter-web-deploy.yml +++ b/.github/workflows/flutter-web-deploy.yml @@ -5,7 +5,7 @@ name: flutter_deer web deploy on: push: paths: - - 'pubspec.yaml' + - 'pubspec.yaml1' jobs: web_build_and_deploy: diff --git a/ios/Podfile b/ios/Podfile index 00d2e9470..73de607b0 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -2,7 +2,7 @@ platform :ios, '11.0' # source 'https://github.com/CocoaPods/Specs.git' -source 'https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git' +# source 'https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/lib/mvp/base_page.dart b/lib/mvp/base_page.dart index 3cd10ef2f..20b95f76c 100644 --- a/lib/mvp/base_page.dart +++ b/lib/mvp/base_page.dart @@ -38,10 +38,11 @@ mixin BasePageMixin on State< barrierDismissible: false, barrierColor: const Color(0x00FFFFFF), // 默认dialog背景色为半透明黑色,这里修改为透明(1.20添加属性) builder:(_) { - return PopScope( - onPopInvoked: (_) { + return WillPopScope( + onWillPop: () async { // 拦截到返回键,证明dialog被手动关闭 _isShowDialog = false; + return Future.value(true); }, child: buildProgress(), ); diff --git a/lib/widgets/double_tap_back_exit_app.dart b/lib/widgets/double_tap_back_exit_app.dart index d24bfe807..5adfaf860 100644 --- a/lib/widgets/double_tap_back_exit_app.dart +++ b/lib/widgets/double_tap_back_exit_app.dart @@ -25,19 +25,21 @@ class _DoubleTapBackExitAppState extends State { @override Widget build(BuildContext context) { - return PopScope( - canPop: _lastTime == null || DateTime.now().difference(_lastTime!) > widget.duration, - onPopInvoked: (didPop) { - if (!didPop) { - Toast.cancelToast(); - /// 不推荐使用 `dart:io` 的 exit(0) - SystemNavigator.pop(); - } else { - _lastTime = DateTime.now(); - Toast.show('再次点击退出应用'); - } - }, + return WillPopScope( + onWillPop: _isExit, child: widget.child, ); } + + Future _isExit() async { + if (_lastTime == null || DateTime.now().difference(_lastTime!) > widget.duration) { + _lastTime = DateTime.now(); + Toast.show('再次点击退出应用'); + return Future.value(false); + } + Toast.cancelToast(); + /// 不推荐使用 `dart:io` 的 exit(0) + await SystemNavigator.pop(); + return Future.value(true); + } } From 511a19397427039d5b3fac3df361dfca48f64743 Mon Sep 17 00:00:00 2001 From: weilu Date: Tue, 21 Nov 2023 22:40:40 +0800 Subject: [PATCH 169/206] =?UTF-8?q?=E9=80=82=E9=85=8Dflutter=203.16.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/goods/page/goods_size_page.dart | 2 +- lib/order/page/order_track_page.dart | 3 --- lib/setting/provider/theme_provider.dart | 1 + lib/shop/page/freight_config_page.dart | 4 ++-- test/goods/goods_accessibility_test.dart | 7 +++++-- test/shop/shop_accessibility_test.dart | 7 +++++-- test/statistics/statistic_accessibility_test.dart | 7 +++++-- test_driver/setting/setting_test.dart | 4 ++-- 8 files changed, 21 insertions(+), 14 deletions(-) diff --git a/lib/goods/page/goods_size_page.dart b/lib/goods/page/goods_size_page.dart index 5c17a8553..3586ec453 100644 --- a/lib/goods/page/goods_size_page.dart +++ b/lib/goods/page/goods_size_page.dart @@ -187,7 +187,7 @@ class _GoodsSizePageState extends State { ) ], ), - Gaps.vGap16, + const Spacer(), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ diff --git a/lib/order/page/order_track_page.dart b/lib/order/page/order_track_page.dart index fdc03dc10..e662ca57e 100644 --- a/lib/order/page/order_track_page.dart +++ b/lib/order/page/order_track_page.dart @@ -39,8 +39,6 @@ class _OrderTrackPageState extends State { Stepper( physics: const BouncingScrollPhysics(), currentStep: 4 - 1, - // flutter 2.8.0以下使用: - // controlsBuilder: (_, {onStepContinue, onStepCancel}) { controlsBuilder: (_, __) { return Gaps.empty; //操作按钮置空 }, @@ -70,7 +68,6 @@ class _OrderTrackPageState extends State { ) : Theme.of(context).textTheme.titleSmall), content: const Text(''), isActive: index == 0, - // TODO(weilu): 这里的状态图标无法修改,暂时使用原生的。应该可以复制Step代码修改一下。 state: index == 0 ? StepState.complete : StepState.indexed, ); } diff --git a/lib/setting/provider/theme_provider.dart b/lib/setting/provider/theme_provider.dart index e53c1ba3e..83ec6f014 100644 --- a/lib/setting/provider/theme_provider.dart +++ b/lib/setting/provider/theme_provider.dart @@ -38,6 +38,7 @@ class ThemeProvider extends ChangeNotifier { ThemeData getTheme({bool isDarkMode = false}) { return ThemeData( + useMaterial3: false, primaryColor: isDarkMode ? Colours.dark_app_main : Colours.app_main, colorScheme: ColorScheme.fromSwatch().copyWith( brightness: isDarkMode ? Brightness.dark : Brightness.light, diff --git a/lib/shop/page/freight_config_page.dart b/lib/shop/page/freight_config_page.dart index 8830ea571..488753924 100644 --- a/lib/shop/page/freight_config_page.dart +++ b/lib/shop/page/freight_config_page.dart @@ -145,9 +145,9 @@ class _FreightConfigPageState extends State { const Text('元'), ], ), - Gaps.vGap15, + const Spacer(), Gaps.line, - Gaps.vGap15, + const Spacer(), Row( children: [ Semantics( diff --git a/test/goods/goods_accessibility_test.dart b/test/goods/goods_accessibility_test.dart index c34fc9eb6..74274a09d 100644 --- a/test/goods/goods_accessibility_test.dart +++ b/test/goods/goods_accessibility_test.dart @@ -4,6 +4,7 @@ import 'package:flutter_deer/goods/page/goods_page.dart'; import 'package:flutter_deer/goods/page/goods_search_page.dart'; import 'package:flutter_deer/goods/page/goods_size_edit_page.dart'; import 'package:flutter_deer/goods/page/goods_size_page.dart'; +import 'package:flutter_deer/setting/provider/theme_provider.dart'; import 'package:flutter_test/flutter_test.dart'; void main() { @@ -16,11 +17,12 @@ void main() { map['goods_size_edit_page'] = const GoodsSizeEditPage(); group('goods => 检测页面可点击目标大小是否大于44 * 44', () { + final ThemeData themeData = ThemeProvider().getTheme(); map.forEach((name, page) { testWidgets(name, (WidgetTester tester) async { final SemanticsHandle handle = tester.ensureSemantics(); - await tester.pumpWidget(MaterialApp(home: page)); + await tester.pumpWidget(MaterialApp(home: page, theme: themeData,)); if (name == 'goods_page') { // GoodsListPage 内有一个2秒的延时 await tester.pumpAndSettle(const Duration(seconds: 2)); @@ -32,11 +34,12 @@ void main() { }); group('goods => 检测页面可点击目标是否都有语义', () { + final ThemeData themeData = ThemeProvider().getTheme(); map.forEach((name, page) { testWidgets(name, (WidgetTester tester) async { final SemanticsHandle handle = tester.ensureSemantics(); - await tester.pumpWidget(MaterialApp(home: page)); + await tester.pumpWidget(MaterialApp(home: page, theme: themeData,)); if (name == 'goods_page') { await tester.pumpAndSettle(const Duration(seconds: 2)); } diff --git a/test/shop/shop_accessibility_test.dart b/test/shop/shop_accessibility_test.dart index 30665853a..ce2886333 100644 --- a/test/shop/shop_accessibility_test.dart +++ b/test/shop/shop_accessibility_test.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter_deer/setting/provider/theme_provider.dart'; import 'package:flutter_deer/shop/page/freight_config_page.dart'; import 'package:flutter_deer/shop/page/input_text_page.dart'; import 'package:flutter_deer/shop/page/message_page.dart'; @@ -18,10 +19,11 @@ void main() { map['freight_config_page'] = const FreightConfigPage(); group('shop => 检测页面可点击目标大小是否大于44 * 44', () { + final ThemeData themeData = ThemeProvider().getTheme(); map.forEach((name, page) { testWidgets(name, (WidgetTester tester) async { final SemanticsHandle handle = tester.ensureSemantics(); - await tester.pumpWidget(MaterialApp(home: page)); + await tester.pumpWidget(MaterialApp(home: page, theme: themeData,)); await expectLater(tester, meetsGuideline(iOSTapTargetGuideline)); handle.dispose(); }, skip: name == 'select_address_page' || name == 'freight_config_page'); @@ -29,10 +31,11 @@ void main() { }); group('shop => 检测页面可点击目标是否都有语义', () { + final ThemeData themeData = ThemeProvider().getTheme(); map.forEach((name, page) { testWidgets(name, (WidgetTester tester) async { final SemanticsHandle handle = tester.ensureSemantics(); - await tester.pumpWidget(MaterialApp(home: page)); + await tester.pumpWidget(MaterialApp(home: page, theme: themeData,)); await expectLater(tester, meetsGuideline(labeledTapTargetGuideline)); handle.dispose(); }); diff --git a/test/statistics/statistic_accessibility_test.dart b/test/statistics/statistic_accessibility_test.dart index d98cf7ea0..c2b51fed4 100644 --- a/test/statistics/statistic_accessibility_test.dart +++ b/test/statistics/statistic_accessibility_test.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter_deer/setting/provider/theme_provider.dart'; import 'package:flutter_deer/statistics/page/goods_statistics_page.dart'; import 'package:flutter_deer/statistics/page/order_statistics_page.dart'; import 'package:flutter_deer/statistics/page/statistics_page.dart'; @@ -12,10 +13,11 @@ void main() { map['goods_statistics_page'] = const GoodsStatisticsPage(); group('statistics => 检测页面可点击目标大小是否大于44 * 44', () { + final ThemeData themeData = ThemeProvider().getTheme(); map.forEach((name, page) { testWidgets(name, (WidgetTester tester) async { final SemanticsHandle handle = tester.ensureSemantics(); - await tester.pumpWidget(MaterialApp(home: page)); + await tester.pumpWidget(MaterialApp(home: page, theme: themeData,)); await expectLater(tester, meetsGuideline(iOSTapTargetGuideline)); handle.dispose(); }, skip: name == 'order_statistics_page'); @@ -23,10 +25,11 @@ void main() { }); group('statistics => 检测页面可点击目标是否都有语义', () { + final ThemeData themeData = ThemeProvider().getTheme(); map.forEach((name, page) { testWidgets(name, (WidgetTester tester) async { final SemanticsHandle handle = tester.ensureSemantics(); - await tester.pumpWidget(MaterialApp(home: page)); + await tester.pumpWidget(MaterialApp(home: page, theme: themeData,)); await expectLater(tester, meetsGuideline(labeledTapTargetGuideline)); handle.dispose(); }); diff --git a/test_driver/setting/setting_test.dart b/test_driver/setting/setting_test.dart index 812c48c9e..206a04cfb 100644 --- a/test_driver/setting/setting_test.dart +++ b/test_driver/setting/setting_test.dart @@ -52,7 +52,7 @@ void main([List args = const []]) { await driver.tap(find.text('夜间模式')); await delayed(); await driver.tap(find.text('开启')); - await Future.delayed(const Duration(seconds: 2)); + await Future.delayed(const Duration(seconds: 4)); await driver.tap(find.byTooltip('Back')); await delayed(); // 查看效果 @@ -76,7 +76,7 @@ void main([List args = const []]) { await driver.tap(find.text('多语言')); await delayed(); await driver.tap(find.text('English')); - await Future.delayed(const Duration(seconds: 1)); + await Future.delayed(const Duration(seconds: 2)); await driver.tap(find.byTooltip('Back')); await delayed(); From 4d32f36df7cb375de85e27ba1291e348b85b023f Mon Sep 17 00:00:00 2001 From: weilu Date: Mon, 4 Dec 2023 22:07:50 +0800 Subject: [PATCH 170/206] =?UTF-8?q?Release=E7=8E=AF=E5=A2=83=E6=97=B6?= =?UTF-8?q?=E4=B8=8D=E6=89=93=E5=8D=B0debugPrint=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/main.dart | 5 ++++- pubspec.yaml | 10 +++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 71208b709..3c3eb2ac1 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -27,7 +27,10 @@ Future main() async { // debugPaintLayerBordersEnabled = true; // debugProfilePaintsEnabled = true; // debugRepaintRainbowEnabled = true; - + if (Constant.inProduction) { + /// Release环境时不打印debugPrint内容 + debugPrint = (String? message, {int? wrapWidth}) {}; + } /// 异常处理 handleError(() async { /// 确保初始化完成 diff --git a/pubspec.yaml b/pubspec.yaml index 7071a4e92..4bcd59c61 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -21,9 +21,9 @@ dependencies: # Localization https://github.com/dart-lang/intl intl: ^0.18.0 # Toast插件 https://github.com/OpenFlutter/flutter_oktoast - oktoast: ^3.3.2 + oktoast: ^3.4.0 # 网络库 https://github.com/cfug/dio - dio: ^5.3.3 + dio: ^5.4.0 # https://github.com/ReactiveX/rxdart rxdart: ^0.27.7 # Dart 常用工具类库 https://github.com/Sky24n/common_utils @@ -38,7 +38,7 @@ dependencies: # 图片选择插件 https://github.com/flutter/packages/tree/main/packages/image_picker image_picker: 1.0.4 # 侧滑删除 https://github.com/letsar/flutter_slidable - flutter_slidable: ^3.0.0 + flutter_slidable: ^3.0.1 # WebView插件 https://github.com/flutter/packages/tree/main/packages/webview_flutter webview_flutter: 4.4.1 # 处理键盘事件 https://github.com/diegoveloper/flutter_keyboard_actions @@ -52,7 +52,7 @@ dependencies: # 格式化String https://github.com/Naddiseo/dart-sprintf sprintf: ^7.0.0 # 状态管理 https://github.com/rrousselGit/provider - provider: ^6.0.5 + provider: ^6.1.1 # 扫码 https://github.com/juliuscanute/qr_code_scanner qr_code_scanner: 1.0.0 # git: @@ -74,7 +74,7 @@ dependencies: url: 'https://github.com/simplezhli/flutter_2d_amap.git' # demo 用到的库 # 刮刮卡 https://github.com/vintage/scratcher - scratcher: ^2.4.0 + scratcher: ^2.5.0 # 动画效果 https://github.com/xvrh/lottie-flutter lottie: ^2.7.0 From 9af6716e90f965b7741aff1f4514be2b7b3cc28f Mon Sep 17 00:00:00 2001 From: weilu Date: Sun, 24 Dec 2023 21:57:54 +0800 Subject: [PATCH 171/206] flutter 3.16.5 --- .github/workflows/flutter-drive.yml | 6 +++--- .github/workflows/flutter-web-deploy.yml | 2 +- README-EN.md | 2 +- README.md | 2 +- docs/CHANGELOG.md | 4 ++++ macos/Runner.xcodeproj/project.pbxproj | 10 +++++----- .../xcshareddata/xcschemes/Runner.xcscheme | 2 +- pubspec.yaml | 2 +- 8 files changed, 17 insertions(+), 13 deletions(-) diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index d2e11c7fd..2197b2dd4 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -53,7 +53,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v2 with: - flutter-version: '3.16.0' + flutter-version: '3.16.5' channel: 'stable' # or: 'dev' or 'beta' architecture: x64 - run: "flutter clean" @@ -78,7 +78,7 @@ jobs: java-version: '11' - uses: subosito/flutter-action@v2 with: - flutter-version: '3.16.0' + flutter-version: '3.16.5' channel: 'stable' # or: 'dev' or 'beta' architecture: x64 - name: "Run Flutter Driver tests" @@ -104,7 +104,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v2 with: - flutter-version: '3.16.0' + flutter-version: '3.16.5' channel: 'stable' architecture: x64 - run: "flutter pub get" diff --git a/.github/workflows/flutter-web-deploy.yml b/.github/workflows/flutter-web-deploy.yml index 0e2e778c5..b3f04ce78 100644 --- a/.github/workflows/flutter-web-deploy.yml +++ b/.github/workflows/flutter-web-deploy.yml @@ -14,7 +14,7 @@ jobs: - uses: actions/checkout@v2.3.1 - uses: subosito/flutter-action@v2 with: - flutter-version: '3.16.0' + flutter-version: '3.16.5' channel: 'stable' architecture: x64 - name: "Web Build 🔧" diff --git a/README-EN.md b/README-EN.md index fc73223ab..dadaf5ec6 100644 --- a/README-EN.md +++ b/README-EN.md @@ -66,7 +66,7 @@ For web experience, please visit: https://simplezhli.github.io/flutter_deer/ [![Build Status](https://github.com/simplezhli/flutter_deer/workflows/flutter_deer%20driver/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions?query=workflow%3A%22flutter_deer+driver%22+branch%3Amaster) - 1. Flutter version 3.16.0 + 1. Flutter version 3.16.5 2. Dart version 3.2.0 diff --git a/README.md b/README.md index 6811e1e69..cfde17507 100644 --- a/README.md +++ b/README.md @@ -66,7 +66,7 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ [![Build Status](https://github.com/simplezhli/flutter_deer/workflows/flutter_deer%20driver/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions?query=workflow%3A%22flutter_deer+driver%22+branch%3Amaster) - 1. Flutter version 3.16.0 + 1. Flutter version 3.16.5 2. Dart version 3.2.0 diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 9f518d951..b9316819e 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,5 +1,9 @@ # Change Log: +## 1.3.1 + +* Flutter SDK升至3.16.5。 + ## 1.3.0 * 适配Android 13。 diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj index d7728a445..f85ac49b0 100644 --- a/macos/Runner.xcodeproj/project.pbxproj +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -203,7 +203,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0920; - LastUpgradeCheck = 1300; + LastUpgradeCheck = 1430; ORGANIZATIONNAME = "The Flutter Authors"; TargetAttributes = { 33CC10EC2044A3C60003C045 = { @@ -302,9 +302,9 @@ "${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework", "${BUILT_PRODUCTS_DIR}/device_info_plus/device_info_plus.framework", "${BUILT_PRODUCTS_DIR}/file_selector_macos/file_selector_macos.framework", - "${BUILT_PRODUCTS_DIR}/path_provider_macos/path_provider_macos.framework", + "${BUILT_PRODUCTS_DIR}/path_provider_foundation/path_provider_foundation.framework", "${BUILT_PRODUCTS_DIR}/screen_retriever/screen_retriever.framework", - "${BUILT_PRODUCTS_DIR}/shared_preferences_macos/shared_preferences_macos.framework", + "${BUILT_PRODUCTS_DIR}/shared_preferences_foundation/shared_preferences_foundation.framework", "${BUILT_PRODUCTS_DIR}/sqflite/sqflite.framework", "${BUILT_PRODUCTS_DIR}/url_launcher_macos/url_launcher_macos.framework", "${BUILT_PRODUCTS_DIR}/window_manager/window_manager.framework", @@ -314,9 +314,9 @@ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FMDB.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/device_info_plus.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/file_selector_macos.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/path_provider_macos.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/path_provider_foundation.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/screen_retriever.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/shared_preferences_macos.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/shared_preferences_foundation.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sqflite.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/url_launcher_macos.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/window_manager.framework", diff --git a/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index 6e740f2af..eb2e824b5 100644 --- a/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ homepage: https://weilu.blog.csdn.net/ From 374fe1a94e7fc0c60eaf87fede8d9fedf1f0c199 Mon Sep 17 00:00:00 2001 From: weilu Date: Tue, 9 Jan 2024 22:49:59 +0800 Subject: [PATCH 172/206] =?UTF-8?q?IPHONEOS=5FDEPLOYMENT=5FTARGET=20?= =?UTF-8?q?=E8=AE=BE=E4=B8=BA=2012.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ios/Podfile | 6 +++--- ios/Runner.xcodeproj/project.pbxproj | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/ios/Podfile b/ios/Podfile index 73de607b0..bca813aa2 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -platform :ios, '11.0' +platform :ios, '12.0' # source 'https://github.com/CocoaPods/Specs.git' # source 'https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git' @@ -40,8 +40,8 @@ post_install do |installer| installer.pods_project.targets.each do |target| flutter_additional_ios_build_settings(target) target.build_configurations.each do |config| - if config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'].to_f < 9.0 - config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '9.0' + if config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'].to_f < 12.0 + config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0' end # https://github.com/flutter/flutter/issues/90504 #84562 config.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'arm64 i386' diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 47e6c9a7a..8fbc0255c 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -368,7 +368,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; @@ -459,7 +459,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -509,7 +509,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; From b48e8e197bfd85df7b3b65c84853b02b761eb268 Mon Sep 17 00:00:00 2001 From: weilu Date: Mon, 22 Jan 2024 21:54:13 +0800 Subject: [PATCH 173/206] =?UTF-8?q?README=20=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README-EN.md | 2 +- README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README-EN.md b/README-EN.md index dadaf5ec6..e75d89e0e 100644 --- a/README-EN.md +++ b/README-EN.md @@ -64,7 +64,7 @@ For web experience, please visit: https://simplezhli.github.io/flutter_deer/ ## The project's operational environment. -[![Build Status](https://github.com/simplezhli/flutter_deer/workflows/flutter_deer%20driver/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions?query=workflow%3A%22flutter_deer+driver%22+branch%3Amaster) +[![flutter_deer driver](https://github.com/simplezhli/flutter_deer/actions/workflows/flutter-drive.yml/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions/workflows/flutter-drive.yml) 1. Flutter version 3.16.5 diff --git a/README.md b/README.md index cfde17507..edd96606e 100644 --- a/README.md +++ b/README.md @@ -64,7 +64,7 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ ## 项目运行环境 -[![Build Status](https://github.com/simplezhli/flutter_deer/workflows/flutter_deer%20driver/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions?query=workflow%3A%22flutter_deer+driver%22+branch%3Amaster) +[![flutter_deer driver](https://github.com/simplezhli/flutter_deer/actions/workflows/flutter-drive.yml/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions/workflows/flutter-drive.yml) 1. Flutter version 3.16.5 From 9f0e81228e968a4e73350e34b62716cfb75fb792 Mon Sep 17 00:00:00 2001 From: weilu Date: Fri, 2 Feb 2024 22:22:33 +0800 Subject: [PATCH 174/206] =?UTF-8?q?=E5=9C=B0=E5=9B=BEJS=20API=E5=AE=89?= =?UTF-8?q?=E5=85=A8=E5=AF=86=E9=92=A5=E4=BD=BF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/shop/page/select_address_page.dart | 2 +- web/index.html | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/shop/page/select_address_page.dart b/lib/shop/page/select_address_page.dart index 44c5e5d81..58614c692 100644 --- a/lib/shop/page/select_address_page.dart +++ b/lib/shop/page/select_address_page.dart @@ -34,7 +34,7 @@ class _AddressSelectPageState extends State { /// 配置key Flutter2dAMap.setApiKey( iOSKey: '4327916279bf45a044bb53b947442387', - webKey: '4e479545913a3a180b3cffc267dad646', + webKey: 'c9446a164fd1245dd110b54114095303', ); } diff --git a/web/index.html b/web/index.html index 35d20e34d..a116661a1 100644 --- a/web/index.html +++ b/web/index.html @@ -36,8 +36,13 @@ navigator.serviceWorker.register('flutter_service_worker.js'); }); } - - + + + From 5296982eca4cd6592d36384d1521e260b67581a3 Mon Sep 17 00:00:00 2001 From: weilu Date: Tue, 13 Feb 2024 11:16:24 +0800 Subject: [PATCH 175/206] =?UTF-8?q?Android=E5=AF=BC=E8=88=AA=E6=A0=8F?= =?UTF-8?q?=E9=A2=9C=E8=89=B2=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/CHANGELOG.md | 4 ++ ios/Flutter/Flutter.podspec | 2 +- ios/Runner.xcodeproj/project.pbxproj | 6 +-- lib/main.dart | 11 +---- lib/order/page/order_page.dart | 3 +- lib/setting/provider/theme_provider.dart | 5 ++- lib/statistics/page/statistics_page.dart | 3 +- lib/util/theme_utils.dart | 51 +++++++----------------- lib/widgets/my_app_bar.dart | 2 +- lib/widgets/my_search_bar.dart | 2 +- pubspec.yaml | 6 +-- 11 files changed, 35 insertions(+), 60 deletions(-) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index b9316819e..f37e88a1e 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,5 +1,9 @@ # Change Log: +## 1.3.2 + +* Android导航栏颜色优化。 + ## 1.3.1 * Flutter SDK升至3.16.5。 diff --git a/ios/Flutter/Flutter.podspec b/ios/Flutter/Flutter.podspec index 29758b70d..98e163395 100644 --- a/ios/Flutter/Flutter.podspec +++ b/ios/Flutter/Flutter.podspec @@ -11,7 +11,7 @@ Pod::Spec.new do |s| s.license = { :type => 'BSD' } s.author = { 'Flutter Dev Team' => 'flutter-dev@googlegroups.com' } s.source = { :git => 'https://github.com/flutter/engine', :tag => s.version.to_s } - s.ios.deployment_target = '11.0' + s.ios.deployment_target = '12.0' # Framework linking is handled by Flutter tooling, not CocoaPods. # Add a placeholder to satisfy `s.dependency 'Flutter'` plugin podspecs. s.vendored_frameworks = 'path/to/nothing' diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 8fbc0255c..e8c2b4ca3 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -393,7 +393,7 @@ "$(PROJECT_DIR)/Flutter", ); INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -532,7 +532,7 @@ "$(PROJECT_DIR)/Flutter", ); INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -567,7 +567,7 @@ "$(PROJECT_DIR)/Flutter", ); INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/lib/main.dart b/lib/main.dart index 3c3eb2ac1..7ed9a29fa 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -13,7 +13,6 @@ import 'package:flutter_deer/setting/provider/theme_provider.dart'; import 'package:flutter_deer/util/device_utils.dart'; import 'package:flutter_deer/util/handle_error_utils.dart'; import 'package:flutter_deer/util/log_utils.dart'; -import 'package:flutter_deer/util/theme_utils.dart'; import 'package:flutter_gen/gen_l10n/deer_localizations.dart'; import 'package:oktoast/oktoast.dart'; import 'package:provider/provider.dart'; @@ -67,8 +66,8 @@ Future main() async { runApp(MyApp()); }); - /// 隐藏状态栏。为启动页、引导页设置。完成后修改回显示状态栏。 - SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: [SystemUiOverlay.bottom]); + /// 隐藏状态栏,导航栏。为启动页、引导页设置全屏显示。完成后还原。 + SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: []); // TODO(weilu): 启动体验不佳。状态栏、导航栏在冷启动开始的一瞬间为黑色,且无法通过隐藏、修改颜色等方式进行处理。。。 // 相关问题跟踪:https://github.com/flutter/flutter/issues/73351 } @@ -175,12 +174,6 @@ class MyApp extends StatelessWidget { locale: localeProvider.locale, navigatorKey: navigatorKey, builder: (BuildContext context, Widget? child) { - /// 仅针对安卓 - if (Device.isAndroid) { - /// 切换深色模式会触发此方法,这里设置导航栏颜色 - ThemeUtils.setSystemNavigationBar(provider.getThemeMode()); - } - /// 保证文字大小不受手机系统设置影响 https://www.kikt.top/posts/flutter/layout/dynamic-text/ return MediaQuery( data: MediaQuery.of(context).copyWith(textScaler: TextScaler.noScaling), diff --git a/lib/order/page/order_page.dart b/lib/order/page/order_page.dart index f840ef1b9..234adde8d 100644 --- a/lib/order/page/order_page.dart +++ b/lib/order/page/order_page.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:flutter/services.dart'; import 'package:flutter_deer/order/page/order_list_page.dart'; import 'package:flutter_deer/order/provider/order_page_provider.dart'; import 'package:flutter_deer/res/resources.dart'; @@ -124,7 +123,7 @@ class _OrderPageState extends State with AutomaticKeepAliveClientMixi SliverOverlapAbsorber( handle: NestedScrollView.sliverOverlapAbsorberHandleFor(context), sliver: SliverAppBar( - systemOverlayStyle: SystemUiOverlayStyle.light, + systemOverlayStyle: isDark ? ThemeUtils.light : ThemeUtils.dark, actions: [ IconButton( onPressed: () { diff --git a/lib/setting/provider/theme_provider.dart b/lib/setting/provider/theme_provider.dart index 83ec6f014..763e0e855 100644 --- a/lib/setting/provider/theme_provider.dart +++ b/lib/setting/provider/theme_provider.dart @@ -1,11 +1,12 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'package:flutter/services.dart'; import 'package:flutter_deer/res/constant.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/web_page_transitions.dart'; import 'package:sp_util/sp_util.dart'; +import '../../util/theme_utils.dart'; + extension ThemeModeExtension on ThemeMode { String get value => ['System', 'Light', 'Dark'][index]; } @@ -73,7 +74,7 @@ class ThemeProvider extends ChangeNotifier { appBarTheme: AppBarTheme( elevation: 0.0, color: isDarkMode ? Colours.dark_bg_color : Colors.white, - systemOverlayStyle: isDarkMode ? SystemUiOverlayStyle.light : SystemUiOverlayStyle.dark, + systemOverlayStyle: isDarkMode ? ThemeUtils.light : ThemeUtils.dark, ), dividerTheme: DividerThemeData( color: isDarkMode ? Colours.dark_line : Colours.line, diff --git a/lib/statistics/page/statistics_page.dart b/lib/statistics/page/statistics_page.dart index e34898777..d14e60e4f 100644 --- a/lib/statistics/page/statistics_page.dart +++ b/lib/statistics/page/statistics_page.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:flutter/services.dart'; import 'package:flutter_deer/order/page/order_page.dart'; import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/routers/fluro_navigator.dart'; @@ -40,7 +39,7 @@ class _StatisticsPageState extends State { isDark = context.isDark; return [ SliverAppBar( - systemOverlayStyle: SystemUiOverlayStyle.light, + systemOverlayStyle: isDark ? ThemeUtils.light : ThemeUtils.dark, backgroundColor: Colors.transparent, elevation: 0.0, centerTitle: true, diff --git a/lib/util/theme_utils.dart b/lib/util/theme_utils.dart index e302acbe3..b4028204b 100644 --- a/lib/util/theme_utils.dart +++ b/lib/util/theme_utils.dart @@ -1,11 +1,6 @@ -import 'dart:async'; -import 'dart:ui'; - import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_deer/res/resources.dart'; -import 'package:flutter_deer/util/device_utils.dart'; -import 'package:rxdart/rxdart.dart'; class ThemeUtils { @@ -33,37 +28,21 @@ class ThemeUtils { return isDark(context) ? Colours.dark_bg_color : Colors.grey[200]; } - static StreamSubscription? _subscription; - - /// 设置NavigationBar样式,使得导航栏颜色与深色模式的设置相符。 - static void setSystemNavigationBar(ThemeMode mode) { - /// 主题切换动画(AnimatedTheme)时间为200毫秒,延时设置导航栏颜色,这样过渡相对自然。 - _subscription?.cancel(); - _subscription = Stream.value(1).delay(const Duration(milliseconds: 200)).listen((_) { - bool isDark = false; - if (mode == ThemeMode.dark || (mode == ThemeMode.system && PlatformDispatcher.instance.platformBrightness == Brightness.dark)) { - isDark = true; - } - setSystemBarStyle(isDark: isDark); - }); - } - - /// 设置StatusBar、NavigationBar样式。(仅针对安卓) - /// 本项目在android MainActivity中已设置,不需要覆盖设置。 - static void setSystemBarStyle({bool? isDark}) { - if (Device.isAndroid) { - - final bool isDarkMode = isDark ?? PlatformDispatcher.instance.platformBrightness == Brightness.dark; - debugPrint('isDark: $isDarkMode'); - final SystemUiOverlayStyle systemUiOverlayStyle = SystemUiOverlayStyle( - /// 透明状态栏 - statusBarColor: Colors.transparent, - systemNavigationBarColor: isDarkMode ? Colours.dark_bg_color : Colors.white, - systemNavigationBarIconBrightness: isDarkMode ? Brightness.light : Brightness.dark, - ); - SystemChrome.setSystemUIOverlayStyle(systemUiOverlayStyle); - } - } + static const SystemUiOverlayStyle light = SystemUiOverlayStyle( + statusBarColor: Colors.transparent, + systemNavigationBarColor: Colours.dark_bg_color, + systemNavigationBarIconBrightness: Brightness.light, + statusBarIconBrightness: Brightness.light, + statusBarBrightness: Brightness.dark, + ); + + static const SystemUiOverlayStyle dark = SystemUiOverlayStyle( + statusBarColor: Colors.transparent, + systemNavigationBarColor: Colors.white, + systemNavigationBarIconBrightness: Brightness.dark, + statusBarIconBrightness: Brightness.dark, + statusBarBrightness: Brightness.light, + ); } extension ThemeExtension on BuildContext { diff --git a/lib/widgets/my_app_bar.dart b/lib/widgets/my_app_bar.dart index 74cd8feda..6ddeb6a5c 100644 --- a/lib/widgets/my_app_bar.dart +++ b/lib/widgets/my_app_bar.dart @@ -34,7 +34,7 @@ class MyAppBar extends StatelessWidget implements PreferredSizeWidget { final Color bgColor = backgroundColor ?? context.backgroundColor; final SystemUiOverlayStyle overlayStyle = ThemeData.estimateBrightnessForColor(bgColor) == Brightness.dark - ? SystemUiOverlayStyle.light : SystemUiOverlayStyle.dark; + ? ThemeUtils.light : ThemeUtils.dark; final Widget action = actionName.isNotEmpty ? Positioned( right: 0.0, diff --git a/lib/widgets/my_search_bar.dart b/lib/widgets/my_search_bar.dart index f9e6dc1a7..d48dc236d 100644 --- a/lib/widgets/my_search_bar.dart +++ b/lib/widgets/my_search_bar.dart @@ -164,7 +164,7 @@ class _MySearchBarState extends State { ); return AnnotatedRegion( - value: isDark ? SystemUiOverlayStyle.light : SystemUiOverlayStyle.dark, + value: isDark ? ThemeUtils.light : ThemeUtils.dark, child: Material( color: context.backgroundColor, child: SafeArea( diff --git a/pubspec.yaml b/pubspec.yaml index 07212c683..3bd90033d 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,7 +1,7 @@ name: flutter_deer description: Flutter Deer -version: 1.3.1+22 +version: 1.3.2+22 # 唯鹿 homepage: https://weilu.blog.csdn.net/ @@ -40,7 +40,7 @@ dependencies: # 侧滑删除 https://github.com/letsar/flutter_slidable flutter_slidable: ^3.0.1 # WebView插件 https://github.com/flutter/packages/tree/main/packages/webview_flutter - webview_flutter: 4.4.1 + webview_flutter: 4.7.0 # 处理键盘事件 https://github.com/diegoveloper/flutter_keyboard_actions keyboard_actions: ^4.2.0 # 城市选择列表 https://github.com/flutterchina/azlistview @@ -76,7 +76,7 @@ dependencies: # 刮刮卡 https://github.com/vintage/scratcher scratcher: ^2.5.0 # 动画效果 https://github.com/xvrh/lottie-flutter - lottie: ^2.7.0 + lottie: ^3.0.0 # https://github.com/simplezhli/flutter_deer/issues/187 dependency_overrides: From 3ea0964b0f7c48e9af584d1196a1c329883a8bdb Mon Sep 17 00:00:00 2001 From: weilu Date: Thu, 15 Feb 2024 16:00:43 +0800 Subject: [PATCH 176/206] flutter 3.16.9 --- .github/workflows/flutter-drive.yml | 6 +++--- .github/workflows/flutter-web-deploy.yml | 2 +- README-EN.md | 4 ++-- README.md | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index 2197b2dd4..01f0ee380 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -53,7 +53,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v2 with: - flutter-version: '3.16.5' + flutter-version: '3.16.9' channel: 'stable' # or: 'dev' or 'beta' architecture: x64 - run: "flutter clean" @@ -78,7 +78,7 @@ jobs: java-version: '11' - uses: subosito/flutter-action@v2 with: - flutter-version: '3.16.5' + flutter-version: '3.16.9' channel: 'stable' # or: 'dev' or 'beta' architecture: x64 - name: "Run Flutter Driver tests" @@ -104,7 +104,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v2 with: - flutter-version: '3.16.5' + flutter-version: '3.16.9' channel: 'stable' architecture: x64 - run: "flutter pub get" diff --git a/.github/workflows/flutter-web-deploy.yml b/.github/workflows/flutter-web-deploy.yml index b3f04ce78..bfb70ba00 100644 --- a/.github/workflows/flutter-web-deploy.yml +++ b/.github/workflows/flutter-web-deploy.yml @@ -14,7 +14,7 @@ jobs: - uses: actions/checkout@v2.3.1 - uses: subosito/flutter-action@v2 with: - flutter-version: '3.16.5' + flutter-version: '3.16.9' channel: 'stable' architecture: x64 - name: "Web Build 🔧" diff --git a/README-EN.md b/README-EN.md index e75d89e0e..bdcdc1f85 100644 --- a/README-EN.md +++ b/README-EN.md @@ -66,9 +66,9 @@ For web experience, please visit: https://simplezhli.github.io/flutter_deer/ [![flutter_deer driver](https://github.com/simplezhli/flutter_deer/actions/workflows/flutter-drive.yml/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions/workflows/flutter-drive.yml) - 1. Flutter version 3.16.5 + 1. Flutter version 3.16.9 - 2. Dart version 3.2.0 + 2. Dart version 3.2.6 ## Precautions to be taken. diff --git a/README.md b/README.md index edd96606e..aeb94090e 100644 --- a/README.md +++ b/README.md @@ -66,9 +66,9 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ [![flutter_deer driver](https://github.com/simplezhli/flutter_deer/actions/workflows/flutter-drive.yml/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions/workflows/flutter-drive.yml) - 1. Flutter version 3.16.5 + 1. Flutter version 3.16.9 - 2. Dart version 3.2.0 + 2. Dart version 3.2.6 ## 注意事项 From bc28a9725565f26b5011be7b77357a49098fecf0 Mon Sep 17 00:00:00 2001 From: weilu Date: Mon, 19 Feb 2024 21:46:08 +0800 Subject: [PATCH 177/206] flutter 3.19.0 --- .github/workflows/flutter-drive.yml | 6 +++--- .github/workflows/flutter-web-deploy.yml | 4 ++-- README-EN.md | 4 ++-- README.md | 4 ++-- analysis_options.yaml | 3 --- ios/Runner.xcodeproj/project.pbxproj | 2 +- ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme | 2 +- 7 files changed, 11 insertions(+), 14 deletions(-) diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index 01f0ee380..9a46cc52a 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -53,7 +53,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v2 with: - flutter-version: '3.16.9' + flutter-version: '3.19.0' channel: 'stable' # or: 'dev' or 'beta' architecture: x64 - run: "flutter clean" @@ -78,7 +78,7 @@ jobs: java-version: '11' - uses: subosito/flutter-action@v2 with: - flutter-version: '3.16.9' + flutter-version: '3.19.0' channel: 'stable' # or: 'dev' or 'beta' architecture: x64 - name: "Run Flutter Driver tests" @@ -104,7 +104,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v2 with: - flutter-version: '3.16.9' + flutter-version: '3.19.0' channel: 'stable' architecture: x64 - run: "flutter pub get" diff --git a/.github/workflows/flutter-web-deploy.yml b/.github/workflows/flutter-web-deploy.yml index bfb70ba00..5964bf9c7 100644 --- a/.github/workflows/flutter-web-deploy.yml +++ b/.github/workflows/flutter-web-deploy.yml @@ -5,7 +5,7 @@ name: flutter_deer web deploy on: push: paths: - - 'pubspec.yaml1' + - 'pubspec.yaml' jobs: web_build_and_deploy: @@ -14,7 +14,7 @@ jobs: - uses: actions/checkout@v2.3.1 - uses: subosito/flutter-action@v2 with: - flutter-version: '3.16.9' + flutter-version: '3.19.0' channel: 'stable' architecture: x64 - name: "Web Build 🔧" diff --git a/README-EN.md b/README-EN.md index bdcdc1f85..7e8c91e40 100644 --- a/README-EN.md +++ b/README-EN.md @@ -66,9 +66,9 @@ For web experience, please visit: https://simplezhli.github.io/flutter_deer/ [![flutter_deer driver](https://github.com/simplezhli/flutter_deer/actions/workflows/flutter-drive.yml/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions/workflows/flutter-drive.yml) - 1. Flutter version 3.16.9 + 1. Flutter version 3.19.0 - 2. Dart version 3.2.6 + 2. Dart version 3.3.0 ## Precautions to be taken. diff --git a/README.md b/README.md index aeb94090e..debc789d3 100644 --- a/README.md +++ b/README.md @@ -66,9 +66,9 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ [![flutter_deer driver](https://github.com/simplezhli/flutter_deer/actions/workflows/flutter-drive.yml/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions/workflows/flutter-drive.yml) - 1. Flutter version 3.16.9 + 1. Flutter version 3.19.0 - 2. Dart version 3.2.6 + 2. Dart version 3.3.0 ## 注意事项 diff --git a/analysis_options.yaml b/analysis_options.yaml index 8726915dd..2550a4880 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -41,7 +41,6 @@ linter: - always_declare_return_types - always_put_control_body_on_new_line # - always_put_required_named_parameters_first # we prefer having parameters in the same order as fields https://github.com/flutter/flutter/issues/10219 - - always_require_non_null_named_parameters # - always_specify_types # - always_use_package_imports # we do this commonly - annotate_overrides @@ -70,8 +69,6 @@ linter: - avoid_relative_lib_imports - avoid_renaming_method_parameters - avoid_return_types_on_setters - - avoid_returning_null - - avoid_returning_null_for_future - avoid_returning_null_for_void # - avoid_returning_this # there are enough valid reasons to return `this` that this lint ends up with too many false positives - avoid_setters_without_getters diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index e8c2b4ca3..15b1f554a 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -156,7 +156,7 @@ 97C146E61CF9000F007C117D /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1430; + LastUpgradeCheck = 1510; ORGANIZATIONNAME = "The Chromium Authors"; TargetAttributes = { 97C146ED1CF9000F007C117D = { diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index a6b826db2..5e31d3d34 100644 --- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ Date: Mon, 19 Feb 2024 22:15:52 +0800 Subject: [PATCH 178/206] Allow deprecated members --- analysis_options.yaml | 6 ++++-- pubspec.yaml | 2 +- test_driver/goods/goods_test.dart | 1 + 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/analysis_options.yaml b/analysis_options.yaml index 2550a4880..9ae5a4837 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -20,8 +20,10 @@ analyzer: strict-inference: true strict-raw-types: true errors: - # allow self-reference to deprecated members (we do this because otherwise we have - # to annotate every member in every test, assert, etc, when we deprecate something) + # allow deprecated members (we do this because otherwise we have to annotate + # every member in every test, assert, etc, when we or the Dart SDK deprecates + # something (https://github.com/flutter/flutter/issues/143312) + deprecated_member_use: ignore deprecated_member_use_from_same_package: ignore # Turned off until null-safe rollout is complete. # unnecessary_null_comparison: ignore diff --git a/pubspec.yaml b/pubspec.yaml index 3bd90033d..26148f59a 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -34,7 +34,7 @@ dependencies: # Flutter 轮播图 https://github.com/mdddj/flutter_swiper_null_safety flutter_swiper_null_safety_flutter3: ^4.0.0 # flutter_swiper很久不维护,可以使用这个替代 # 启动URL的插件(支持Web) https://github.com/flutter/packages/tree/main/packages/url_launcher - url_launcher: 6.1.8 + url_launcher: 6.2.4 # 图片选择插件 https://github.com/flutter/packages/tree/main/packages/image_picker image_picker: 1.0.4 # 侧滑删除 https://github.com/letsar/flutter_slidable diff --git a/test_driver/goods/goods_test.dart b/test_driver/goods/goods_test.dart index 6ff9e0b64..e5214c87e 100644 --- a/test_driver/goods/goods_test.dart +++ b/test_driver/goods/goods_test.dart @@ -28,6 +28,7 @@ void main() { await driver.tap(find.text('待售')); await delayed(); final SerializableFinder pageView = find.byValueKey('pageView'); + await driver.waitFor(pageView); await driver.scroll(pageView, 400.0, 0, scrollDuration); await delayed(); From 575ad4de1b361cf1a4be6752d9209a9942e3f249 Mon Sep 17 00:00:00 2001 From: weilu Date: Sat, 16 Mar 2024 14:32:45 +0800 Subject: [PATCH 179/206] =?UTF-8?q?=E4=BE=9D=E8=B5=96=E5=8D=87=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/flutter-web-deploy.yml | 2 +- pubspec.yaml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/flutter-web-deploy.yml b/.github/workflows/flutter-web-deploy.yml index 5964bf9c7..6eee88b24 100644 --- a/.github/workflows/flutter-web-deploy.yml +++ b/.github/workflows/flutter-web-deploy.yml @@ -5,7 +5,7 @@ name: flutter_deer web deploy on: push: paths: - - 'pubspec.yaml' + - 'pubspec.yaml1' jobs: web_build_and_deploy: diff --git a/pubspec.yaml b/pubspec.yaml index 26148f59a..d940e9f3b 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -23,7 +23,7 @@ dependencies: # Toast插件 https://github.com/OpenFlutter/flutter_oktoast oktoast: ^3.4.0 # 网络库 https://github.com/cfug/dio - dio: ^5.4.0 + dio: ^5.4.1 # https://github.com/ReactiveX/rxdart rxdart: ^0.27.7 # Dart 常用工具类库 https://github.com/Sky24n/common_utils @@ -48,7 +48,7 @@ dependencies: # 路由框架 https://github.com/theyakka/fluro fluro: ^2.0.5 # 图片缓存 https://github.com/renefloor/flutter_cached_network_image - cached_network_image: ^3.3.0 + cached_network_image: ^3.3.1 # 格式化String https://github.com/Naddiseo/dart-sprintf sprintf: ^7.0.0 # 状态管理 https://github.com/rrousselGit/provider From 07bfe9bfaa99473e359966f4918e6f541729ec12 Mon Sep 17 00:00:00 2001 From: weilu Date: Sun, 24 Mar 2024 10:53:08 +0800 Subject: [PATCH 180/206] =?UTF-8?q?=E4=BE=9D=E8=B5=96=E5=8D=87=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pubspec.yaml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/pubspec.yaml b/pubspec.yaml index d940e9f3b..4ef726e96 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -32,13 +32,13 @@ dependencies: # Flutter 常用工具类库 https://github.com/Sky24n/flustars flustars_flutter3: ^3.0.0 # flustars很久不维护,可以使用这个替代 # Flutter 轮播图 https://github.com/mdddj/flutter_swiper_null_safety - flutter_swiper_null_safety_flutter3: ^4.0.0 # flutter_swiper很久不维护,可以使用这个替代 + flutter_swiper_null_safety_flutter3: ^4.0.3 # flutter_swiper很久不维护,可以使用这个替代 # 启动URL的插件(支持Web) https://github.com/flutter/packages/tree/main/packages/url_launcher - url_launcher: 6.2.4 + url_launcher: 6.2.5 # 图片选择插件 https://github.com/flutter/packages/tree/main/packages/image_picker - image_picker: 1.0.4 + image_picker: 1.0.7 # 侧滑删除 https://github.com/letsar/flutter_slidable - flutter_slidable: ^3.0.1 + flutter_slidable: ^3.1.0 # WebView插件 https://github.com/flutter/packages/tree/main/packages/webview_flutter webview_flutter: 4.7.0 # 处理键盘事件 https://github.com/diegoveloper/flutter_keyboard_actions @@ -52,21 +52,21 @@ dependencies: # 格式化String https://github.com/Naddiseo/dart-sprintf sprintf: ^7.0.0 # 状态管理 https://github.com/rrousselGit/provider - provider: ^6.1.1 + provider: ^6.1.2 # 扫码 https://github.com/juliuscanute/qr_code_scanner qr_code_scanner: 1.0.0 # git: # url: https://github.com/xeinebiu/qr_code_scanner.git # ref: fix_break_changes_platform # App Shortcuts https://github.com/flutter/packages/tree/main/packages/quick_actions - quick_actions: 1.0.5 + quick_actions: 1.0.7 # 振动 https://github.com/benjamindean/flutter_vibration - vibration: 1.8.1 - vibration_web: 1.6.5 + vibration: 1.8.4 + vibration_web: 1.6.6 # 获取当前设备信息 https://github.com/fluttercommunity/plus_plugins/tree/main/packages/device_info_plus - device_info_plus: 9.1.0 + device_info_plus: 10.0.1 # 桌面应用调整窗口的大小和位置 https://github.com/leanflutter/window_manager - window_manager: 0.3.6 + window_manager: 0.3.8 # 高德2D地图插件(支持Web) https://github.com/simplezhli/flutter_2d_amap flutter_2d_amap: git: @@ -76,7 +76,7 @@ dependencies: # 刮刮卡 https://github.com/vintage/scratcher scratcher: ^2.5.0 # 动画效果 https://github.com/xvrh/lottie-flutter - lottie: ^3.0.0 + lottie: ^3.1.0 # https://github.com/simplezhli/flutter_deer/issues/187 dependency_overrides: From f1e64930b53ae255aa4048715857ce7ebcfe6489 Mon Sep 17 00:00:00 2001 From: weilu Date: Fri, 26 Apr 2024 22:31:15 +0800 Subject: [PATCH 181/206] =?UTF-8?q?=E4=BE=9D=E8=B5=96=E5=8D=87=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pubspec.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pubspec.yaml b/pubspec.yaml index 4ef726e96..47875f829 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -23,7 +23,7 @@ dependencies: # Toast插件 https://github.com/OpenFlutter/flutter_oktoast oktoast: ^3.4.0 # 网络库 https://github.com/cfug/dio - dio: ^5.4.1 + dio: ^5.4.3+1 # https://github.com/ReactiveX/rxdart rxdart: ^0.27.7 # Dart 常用工具类库 https://github.com/Sky24n/common_utils @@ -34,9 +34,9 @@ dependencies: # Flutter 轮播图 https://github.com/mdddj/flutter_swiper_null_safety flutter_swiper_null_safety_flutter3: ^4.0.3 # flutter_swiper很久不维护,可以使用这个替代 # 启动URL的插件(支持Web) https://github.com/flutter/packages/tree/main/packages/url_launcher - url_launcher: 6.2.5 + url_launcher: 6.2.6 # 图片选择插件 https://github.com/flutter/packages/tree/main/packages/image_picker - image_picker: 1.0.7 + image_picker: 1.1.0 # 侧滑删除 https://github.com/letsar/flutter_slidable flutter_slidable: ^3.1.0 # WebView插件 https://github.com/flutter/packages/tree/main/packages/webview_flutter From 5d0a8677ab09bac73933805b41aa64ce42f82a51 Mon Sep 17 00:00:00 2001 From: weilu Date: Tue, 14 May 2024 22:42:06 +0800 Subject: [PATCH 182/206] Sync lints and enable annotate_redeclares --- analysis_options.yaml | 10 +++++++--- lib/util/date_utils.dart | 1 - 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/analysis_options.yaml b/analysis_options.yaml index 9ae5a4837..3b2b13255 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -1,8 +1,8 @@ # Specify analysis options. # -# For a list of lints, see: https://dart.dev/lints +# For a list of lints, see: https://dart.dev/tools/linter-rules # For guidelines on configuring static analysis, see: -# https://dart.dev/guides/language/analysis-options +# https://dart.dev/tools/analysis # # There are other similar analysis options files in the flutter repos, # which should be kept in sync with this file: @@ -39,13 +39,14 @@ analyzer: linter: rules: # This list is derived from the list of all available lints located at - # https://github.com/dart-lang/linter/blob/main/example/all.yaml + # https://github.com/dart-lang/sdk/blob/main/pkg/linter/example/all.yaml - always_declare_return_types - always_put_control_body_on_new_line # - always_put_required_named_parameters_first # we prefer having parameters in the same order as fields https://github.com/flutter/flutter/issues/10219 # - always_specify_types # - always_use_package_imports # we do this commonly - annotate_overrides + - annotate_redeclares # - avoid_annotating_with_dynamic # conflicts with always_specify_types - avoid_bool_literals_in_conditional_expressions # - avoid_catches_without_on_clauses # blocked on https://github.com/dart-lang/linter/issues/3023 @@ -120,6 +121,7 @@ linter: # - library_private_types_in_public_api # - lines_longer_than_80_chars # required by flutter style - literal_only_boolean_expressions + - missing_code_block_language_in_doc_comment - missing_whitespace_between_adjacent_strings - no_adjacent_strings_in_list - no_default_cases @@ -208,6 +210,8 @@ linter: - unnecessary_getters_setters # - unnecessary_lambdas # has false positives: https://github.com/dart-lang/linter/issues/498 - unnecessary_late + - unnecessary_library_directive + # - unnecessary_library_name # blocked on https://github.com/dart-lang/lints/issues/181#issuecomment-2018919034 - unnecessary_new - unnecessary_null_aware_assignments - unnecessary_null_aware_operator_on_extension_on_nullable diff --git a/lib/util/date_utils.dart b/lib/util/date_utils.dart index ba1c09a6f..5519a22ce 100644 --- a/lib/util/date_utils.dart +++ b/lib/util/date_utils.dart @@ -1,4 +1,3 @@ -library utils; import 'package:intl/intl.dart'; From 63681d7e13d197977b9596857d866ef45eec353c Mon Sep 17 00:00:00 2001 From: weilu Date: Wed, 15 May 2024 22:19:50 +0800 Subject: [PATCH 183/206] flutter 3.22.0 --- .github/workflows/flutter-drive.yml | 6 +++--- .github/workflows/flutter-web-deploy.yml | 2 +- README-EN.md | 4 ++-- README.md | 4 ++-- pubspec.yaml | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index 9a46cc52a..6ef8bf865 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -53,7 +53,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v2 with: - flutter-version: '3.19.0' + flutter-version: '3.22.0' channel: 'stable' # or: 'dev' or 'beta' architecture: x64 - run: "flutter clean" @@ -78,7 +78,7 @@ jobs: java-version: '11' - uses: subosito/flutter-action@v2 with: - flutter-version: '3.19.0' + flutter-version: '3.22.0' channel: 'stable' # or: 'dev' or 'beta' architecture: x64 - name: "Run Flutter Driver tests" @@ -104,7 +104,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v2 with: - flutter-version: '3.19.0' + flutter-version: '3.22.0' channel: 'stable' architecture: x64 - run: "flutter pub get" diff --git a/.github/workflows/flutter-web-deploy.yml b/.github/workflows/flutter-web-deploy.yml index 6eee88b24..d714edde1 100644 --- a/.github/workflows/flutter-web-deploy.yml +++ b/.github/workflows/flutter-web-deploy.yml @@ -14,7 +14,7 @@ jobs: - uses: actions/checkout@v2.3.1 - uses: subosito/flutter-action@v2 with: - flutter-version: '3.19.0' + flutter-version: '3.22.0' channel: 'stable' architecture: x64 - name: "Web Build 🔧" diff --git a/README-EN.md b/README-EN.md index 7e8c91e40..1995aebf8 100644 --- a/README-EN.md +++ b/README-EN.md @@ -66,9 +66,9 @@ For web experience, please visit: https://simplezhli.github.io/flutter_deer/ [![flutter_deer driver](https://github.com/simplezhli/flutter_deer/actions/workflows/flutter-drive.yml/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions/workflows/flutter-drive.yml) - 1. Flutter version 3.19.0 + 1. Flutter version 3.22.0 - 2. Dart version 3.3.0 + 2. Dart version 3.4.0 ## Precautions to be taken. diff --git a/README.md b/README.md index debc789d3..5f7b004ba 100644 --- a/README.md +++ b/README.md @@ -66,9 +66,9 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ [![flutter_deer driver](https://github.com/simplezhli/flutter_deer/actions/workflows/flutter-drive.yml/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions/workflows/flutter-drive.yml) - 1. Flutter version 3.19.0 + 1. Flutter version 3.22.0 - 2. Dart version 3.3.0 + 2. Dart version 3.4.0 ## 注意事项 diff --git a/pubspec.yaml b/pubspec.yaml index 47875f829..0bdba30ad 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -19,7 +19,7 @@ dependencies: # 去除网页URL中的“#”(hash) https://flutter.cn/docs/development/ui/navigation/url-strategies url_strategy: 0.2.0 # Localization https://github.com/dart-lang/intl - intl: ^0.18.0 + intl: ^0.19.0 # Toast插件 https://github.com/OpenFlutter/flutter_oktoast oktoast: ^3.4.0 # 网络库 https://github.com/cfug/dio From dce1f5d3f4af8b97635a2f246ec9a1431e4e74f5 Mon Sep 17 00:00:00 2001 From: weilu Date: Wed, 15 May 2024 22:52:57 +0800 Subject: [PATCH 184/206] fix CI --- .github/workflows/flutter-drive.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index 6ef8bf865..6e6df6f15 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -17,7 +17,6 @@ jobs: # A set of different configurations of the virtual environment. matrix: device: - - "iPhone 8" - "iPhone 14 Pro Max" # When set to true, GitHub cancels all in-progress jobs if any matrix job # fails. @@ -67,7 +66,7 @@ jobs: strategy: # set of different configurations of the virtual environment. matrix: - api-level: [21, 33] + api-level: [33] target: [google_apis] steps: - uses: actions/checkout@v3 From aae7c56204a228d15962b2760f6a553a9ec57e0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=94=AF=E9=B9=BF?= Date: Fri, 17 May 2024 09:48:26 +0800 Subject: [PATCH 185/206] Update flutter-drive.yml --- .github/workflows/flutter-drive.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index 6e6df6f15..f13d1b15e 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -71,10 +71,10 @@ jobs: steps: - uses: actions/checkout@v3 - name: set up JDK 11 - uses: actions/setup-java@v2 + uses: actions/setup-java@v3 with: - distribution: 'zulu' - java-version: '11' + distribution: "oracle" + java-version: "17" - uses: subosito/flutter-action@v2 with: flutter-version: '3.22.0' @@ -108,4 +108,4 @@ jobs: architecture: x64 - run: "flutter pub get" - name: "Run Flutter Accessibility Tests" - run: "flutter test test/accessibility_test.dart" \ No newline at end of file + run: "flutter test test/accessibility_test.dart" From 9c01b2e1d450c2f61e8230961ba7139676187113 Mon Sep 17 00:00:00 2001 From: weilu Date: Sun, 16 Jun 2024 22:03:33 +0800 Subject: [PATCH 186/206] =?UTF-8?q?=E4=BE=9D=E8=B5=96=E5=8D=87=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/flutter-drive.yml | 2 +- pubspec.yaml | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index f13d1b15e..0b4793cac 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -70,7 +70,7 @@ jobs: target: [google_apis] steps: - uses: actions/checkout@v3 - - name: set up JDK 11 + - name: set up JDK 17 uses: actions/setup-java@v3 with: distribution: "oracle" diff --git a/pubspec.yaml b/pubspec.yaml index 0bdba30ad..b38a884e8 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -34,13 +34,13 @@ dependencies: # Flutter 轮播图 https://github.com/mdddj/flutter_swiper_null_safety flutter_swiper_null_safety_flutter3: ^4.0.3 # flutter_swiper很久不维护,可以使用这个替代 # 启动URL的插件(支持Web) https://github.com/flutter/packages/tree/main/packages/url_launcher - url_launcher: 6.2.6 + url_launcher: 6.3.0 # 图片选择插件 https://github.com/flutter/packages/tree/main/packages/image_picker - image_picker: 1.1.0 + image_picker: 1.1.2 # 侧滑删除 https://github.com/letsar/flutter_slidable flutter_slidable: ^3.1.0 # WebView插件 https://github.com/flutter/packages/tree/main/packages/webview_flutter - webview_flutter: 4.7.0 + webview_flutter: 4.8.0 # 处理键盘事件 https://github.com/diegoveloper/flutter_keyboard_actions keyboard_actions: ^4.2.0 # 城市选择列表 https://github.com/flutterchina/azlistview @@ -61,12 +61,12 @@ dependencies: # App Shortcuts https://github.com/flutter/packages/tree/main/packages/quick_actions quick_actions: 1.0.7 # 振动 https://github.com/benjamindean/flutter_vibration - vibration: 1.8.4 - vibration_web: 1.6.6 + vibration: 1.9.0 + vibration_web: 1.6.7 # 获取当前设备信息 https://github.com/fluttercommunity/plus_plugins/tree/main/packages/device_info_plus device_info_plus: 10.0.1 # 桌面应用调整窗口的大小和位置 https://github.com/leanflutter/window_manager - window_manager: 0.3.8 + window_manager: 0.3.9 # 高德2D地图插件(支持Web) https://github.com/simplezhli/flutter_2d_amap flutter_2d_amap: git: @@ -76,7 +76,7 @@ dependencies: # 刮刮卡 https://github.com/vintage/scratcher scratcher: ^2.5.0 # 动画效果 https://github.com/xvrh/lottie-flutter - lottie: ^3.1.0 + lottie: ^3.1.2 # https://github.com/simplezhli/flutter_deer/issues/187 dependency_overrides: From ab09d91ec78102be2727e2982cdf21aa45952b09 Mon Sep 17 00:00:00 2001 From: weilu Date: Sun, 28 Jul 2024 14:41:01 +0800 Subject: [PATCH 187/206] =?UTF-8?q?=E4=BE=9D=E8=B5=96=E5=8D=87=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pubspec.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pubspec.yaml b/pubspec.yaml index b38a884e8..e68c84dbd 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -23,9 +23,9 @@ dependencies: # Toast插件 https://github.com/OpenFlutter/flutter_oktoast oktoast: ^3.4.0 # 网络库 https://github.com/cfug/dio - dio: ^5.4.3+1 + dio: ^5.5.0+1 # https://github.com/ReactiveX/rxdart - rxdart: ^0.27.7 + rxdart: ^0.28.0 # Dart 常用工具类库 https://github.com/Sky24n/common_utils common_utils: 2.1.0 sp_util: 2.0.3 @@ -38,7 +38,7 @@ dependencies: # 图片选择插件 https://github.com/flutter/packages/tree/main/packages/image_picker image_picker: 1.1.2 # 侧滑删除 https://github.com/letsar/flutter_slidable - flutter_slidable: ^3.1.0 + flutter_slidable: ^3.1.1 # WebView插件 https://github.com/flutter/packages/tree/main/packages/webview_flutter webview_flutter: 4.8.0 # 处理键盘事件 https://github.com/diegoveloper/flutter_keyboard_actions From 5991f10653be2ab30ee8bc86b541052357910ed4 Mon Sep 17 00:00:00 2001 From: weilu Date: Mon, 12 Aug 2024 22:27:51 +0800 Subject: [PATCH 188/206] flutter 3.24.0 --- .github/workflows/flutter-drive.yml | 6 +++--- README-EN.md | 4 ++-- README.md | 4 ++-- ios/Runner.xcodeproj/project.pbxproj | 2 -- ios/Runner/AppDelegate.swift | 2 +- lib/goods/page/goods_edit_page.dart | 3 +++ lib/goods/page/qr_code_scanner_page.dart | 3 +++ macos/Runner.xcodeproj/project.pbxproj | 4 +--- .../xcshareddata/xcschemes/Runner.xcscheme | 2 +- macos/Runner/AppDelegate.swift | 2 +- pubspec.yaml | 7 ++++--- 11 files changed, 21 insertions(+), 18 deletions(-) diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index 0b4793cac..7a26019b0 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -52,7 +52,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v2 with: - flutter-version: '3.22.0' + flutter-version: '3.24.0' channel: 'stable' # or: 'dev' or 'beta' architecture: x64 - run: "flutter clean" @@ -77,7 +77,7 @@ jobs: java-version: "17" - uses: subosito/flutter-action@v2 with: - flutter-version: '3.22.0' + flutter-version: '3.24.0' channel: 'stable' # or: 'dev' or 'beta' architecture: x64 - name: "Run Flutter Driver tests" @@ -103,7 +103,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v2 with: - flutter-version: '3.22.0' + flutter-version: '3.24.0' channel: 'stable' architecture: x64 - run: "flutter pub get" diff --git a/README-EN.md b/README-EN.md index 1995aebf8..e17711e8f 100644 --- a/README-EN.md +++ b/README-EN.md @@ -66,9 +66,9 @@ For web experience, please visit: https://simplezhli.github.io/flutter_deer/ [![flutter_deer driver](https://github.com/simplezhli/flutter_deer/actions/workflows/flutter-drive.yml/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions/workflows/flutter-drive.yml) - 1. Flutter version 3.22.0 + 1. Flutter version 3.24.0 - 2. Dart version 3.4.0 + 2. Dart version 3.5.0 ## Precautions to be taken. diff --git a/README.md b/README.md index 5f7b004ba..b06a1e290 100644 --- a/README.md +++ b/README.md @@ -66,9 +66,9 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ [![flutter_deer driver](https://github.com/simplezhli/flutter_deer/actions/workflows/flutter-drive.yml/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions/workflows/flutter-drive.yml) - 1. Flutter version 3.22.0 + 1. Flutter version 3.24.0 - 2. Dart version 3.4.0 + 2. Dart version 3.5.0 ## 注意事项 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 15b1f554a..4d06631d7 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -261,7 +261,6 @@ ); inputPaths = ( "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh", - "${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework", "${BUILT_PRODUCTS_DIR}/MTBBarcodeScanner/MTBBarcodeScanner.framework", "${BUILT_PRODUCTS_DIR}/device_info_plus/device_info_plus.framework", "${BUILT_PRODUCTS_DIR}/image_picker_ios/image_picker_ios.framework", @@ -277,7 +276,6 @@ ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FMDB.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MTBBarcodeScanner.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/device_info_plus.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/image_picker_ios.framework", diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift index f95f83ac6..fa71925de 100644 --- a/ios/Runner/AppDelegate.swift +++ b/ios/Runner/AppDelegate.swift @@ -1,7 +1,7 @@ import UIKit import Flutter -@UIApplicationMain +@main @objc class AppDelegate: FlutterAppDelegate { override func application( _ application: UIApplication, diff --git a/lib/goods/page/goods_edit_page.dart b/lib/goods/page/goods_edit_page.dart index ad3c6ca5d..b9d9b26fb 100644 --- a/lib/goods/page/goods_edit_page.dart +++ b/lib/goods/page/goods_edit_page.dart @@ -56,6 +56,9 @@ class _GoodsEditPageState extends State { NavigatorUtils.unfocus(); // 延时保证键盘收起,否则进入扫码页会黑屏 Future.delayed(const Duration(milliseconds: 500), (){ + if (!mounted) { + return; + } NavigatorUtils.pushResult(context, GoodsRouter.qrCodeScannerPage, (Object code) { _codeController.text = code.toString(); }); diff --git a/lib/goods/page/qr_code_scanner_page.dart b/lib/goods/page/qr_code_scanner_page.dart index 283c6dc3c..dfb6545a7 100644 --- a/lib/goods/page/qr_code_scanner_page.dart +++ b/lib/goods/page/qr_code_scanner_page.dart @@ -92,6 +92,9 @@ class _QrCodeScannerPageState extends State { controller?.scannedDataStream.listen((scanData) { /// 避免扫描结果多次回调 controller.dispose(); + if (!mounted) { + return; + } NavigatorUtils.goBackWithParams(context, scanData.code ?? ''); }); } diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj index f85ac49b0..95391611f 100644 --- a/macos/Runner.xcodeproj/project.pbxproj +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -203,7 +203,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0920; - LastUpgradeCheck = 1430; + LastUpgradeCheck = 1510; ORGANIZATIONNAME = "The Flutter Authors"; TargetAttributes = { 33CC10EC2044A3C60003C045 = { @@ -299,7 +299,6 @@ ); inputPaths = ( "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh", - "${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework", "${BUILT_PRODUCTS_DIR}/device_info_plus/device_info_plus.framework", "${BUILT_PRODUCTS_DIR}/file_selector_macos/file_selector_macos.framework", "${BUILT_PRODUCTS_DIR}/path_provider_foundation/path_provider_foundation.framework", @@ -311,7 +310,6 @@ ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FMDB.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/device_info_plus.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/file_selector_macos.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/path_provider_foundation.framework", diff --git a/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index eb2e824b5..c0969faa1 100644 --- a/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ Bool { return true diff --git a/pubspec.yaml b/pubspec.yaml index e68c84dbd..f5a346a09 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -17,7 +17,7 @@ dependencies: flutter_localizations: sdk: flutter # 去除网页URL中的“#”(hash) https://flutter.cn/docs/development/ui/navigation/url-strategies - url_strategy: 0.2.0 + url_strategy: 0.3.0 # Localization https://github.com/dart-lang/intl intl: ^0.19.0 # Toast插件 https://github.com/OpenFlutter/flutter_oktoast @@ -48,7 +48,7 @@ dependencies: # 路由框架 https://github.com/theyakka/fluro fluro: ^2.0.5 # 图片缓存 https://github.com/renefloor/flutter_cached_network_image - cached_network_image: ^3.3.1 + cached_network_image: ^3.4.0 # 格式化String https://github.com/Naddiseo/dart-sprintf sprintf: ^7.0.0 # 状态管理 https://github.com/rrousselGit/provider @@ -66,7 +66,7 @@ dependencies: # 获取当前设备信息 https://github.com/fluttercommunity/plus_plugins/tree/main/packages/device_info_plus device_info_plus: 10.0.1 # 桌面应用调整窗口的大小和位置 https://github.com/leanflutter/window_manager - window_manager: 0.3.9 + window_manager: 0.4.0 # 高德2D地图插件(支持Web) https://github.com/simplezhli/flutter_2d_amap flutter_2d_amap: git: @@ -77,6 +77,7 @@ dependencies: scratcher: ^2.5.0 # 动画效果 https://github.com/xvrh/lottie-flutter lottie: ^3.1.2 + win32: 5.5.1 # https://github.com/simplezhli/flutter_deer/issues/187 dependency_overrides: From 1c97a8240331f23a23ac94e8a43f4f33e2714e8b Mon Sep 17 00:00:00 2001 From: weilu Date: Mon, 12 Aug 2024 23:00:53 +0800 Subject: [PATCH 189/206] =?UTF-8?q?=E9=80=82=E9=85=8DAndroid=2014?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- android/app/build.gradle | 4 ++-- android/build.gradle | 2 +- android/gradle/wrapper/gradle-wrapper.properties | 2 +- docs/CHANGELOG.md | 5 +++++ pubspec.yaml | 2 +- 5 files changed, 10 insertions(+), 5 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 6886aa839..708cd4416 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -31,7 +31,7 @@ def keystoreProperties = new Properties() keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) android { - compileSdkVersion 33 + compileSdkVersion 34 lintOptions { disable 'InvalidPackage' @@ -40,7 +40,7 @@ android { defaultConfig { applicationId "com.weilu.deer" minSdkVersion 21 - targetSdkVersion 33 + targetSdkVersion 34 versionCode flutterVersionCode.toInteger() versionName flutterVersionName } diff --git a/android/build.gradle b/android/build.gradle index dc3d7f970..0803b627b 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -11,7 +11,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:7.2.2' + classpath 'com.android.tools.build:gradle:7.4.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index 94a95f4ce..5f1c90e67 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index f37e88a1e..66fdb4dea 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,5 +1,10 @@ # Change Log: +## 1.3.3 + +* 适配Android 14。 +* Flutter SDK升至3.24.0。 + ## 1.3.2 * Android导航栏颜色优化。 diff --git a/pubspec.yaml b/pubspec.yaml index f5a346a09..6e582acb0 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,7 +1,7 @@ name: flutter_deer description: Flutter Deer -version: 1.3.2+22 +version: 1.3.3+22 # 唯鹿 homepage: https://weilu.blog.csdn.net/ From ea9f3a0b58719f44f5fd9747732a24ef36f90b3f Mon Sep 17 00:00:00 2001 From: weilu Date: Sat, 14 Sep 2024 20:31:25 +0800 Subject: [PATCH 190/206] =?UTF-8?q?=E9=9A=90=E8=97=8FTabBar=E7=82=B9?= =?UTF-8?q?=E5=87=BB=E6=95=88=E6=9E=9C=E6=96=B9=E6=B3=95=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/goods/page/goods_page.dart | 9 ++-- .../widgets/goods_sort_bottom_sheet.dart | 48 +++++++++---------- macos/Runner.xcodeproj/project.pbxproj | 20 -------- pubspec.yaml | 10 ++-- 4 files changed, 35 insertions(+), 52 deletions(-) diff --git a/lib/goods/page/goods_page.dart b/lib/goods/page/goods_page.dart index 6c562af2d..6797cf1da 100644 --- a/lib/goods/page/goods_page.dart +++ b/lib/goods/page/goods_page.dart @@ -120,10 +120,8 @@ class _GoodsPageState extends State with SingleTickerProviderStateMix ), ), Gaps.vGap24, - Container( - // 隐藏点击效果 + Padding( padding: const EdgeInsets.only(left: 16.0), - color: context.backgroundColor, child: TabBar( onTap: (index) { if (!mounted) { @@ -139,6 +137,11 @@ class _GoodsPageState extends State with SingleTickerProviderStateMix unselectedLabelColor: context.isDark ? Colours.text_gray : Colours.text, labelColor: Theme.of(context).primaryColor, indicatorPadding: const EdgeInsets.only(right: 98.0 - 36.0), + // 隐藏点击效果 + overlayColor: MaterialStateProperty.resolveWith((Set states) { + return Colors.transparent; + }, + ), tabs: const [ _TabView('在售', 0), _TabView('待售', 1), diff --git a/lib/goods/widgets/goods_sort_bottom_sheet.dart b/lib/goods/widgets/goods_sort_bottom_sheet.dart index 77ce31a49..291fbd75d 100644 --- a/lib/goods/widgets/goods_sort_bottom_sheet.dart +++ b/lib/goods/widgets/goods_sort_bottom_sheet.dart @@ -63,31 +63,31 @@ class GoodsSortBottomSheetState extends State with SingleT children: [ child!, Gaps.line, - ColoredBox( + TabBar( + controller: _tabController, + isScrollable: true, + onTap: (index) { + if (provider.myTabs[index].text.nullSafe.isEmpty) { + // 拦截点击事件 + _tabController?.animateTo(provider.index); + return; + } + provider.setList(index); + provider.setIndex(index); + _controller.animateTo( + provider.positions[provider.index] * 48.0, + duration: const Duration(milliseconds: 10), + curve: Curves.ease, + ); + }, + indicatorSize: TabBarIndicatorSize.label, + unselectedLabelColor: context.isDark ? Colours.text_gray : Colours.text, + labelColor: Theme.of(context).primaryColor, // 隐藏点击效果 - color: context.dialogBackgroundColor, - child: TabBar( - controller: _tabController, - isScrollable: true, - onTap: (index) { - if (provider.myTabs[index].text.nullSafe.isEmpty) { - // 拦截点击事件 - _tabController?.animateTo(provider.index); - return; - } - provider.setList(index); - provider.setIndex(index); - _controller.animateTo( - provider.positions[provider.index] * 48.0, - duration: const Duration(milliseconds: 10), - curve: Curves.ease, - ); - }, - indicatorSize: TabBarIndicatorSize.label, - unselectedLabelColor: context.isDark ? Colours.text_gray : Colours.text, - labelColor: Theme.of(context).primaryColor, - tabs: provider.myTabs, - ), + overlayColor: MaterialStateProperty.resolveWith((Set states) { + return Colors.transparent; + },), + tabs: provider.myTabs, ), Gaps.line, Expanded( diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj index 95391611f..79c46f1bd 100644 --- a/macos/Runner.xcodeproj/project.pbxproj +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -159,7 +159,6 @@ E19D36BBE941C0EC3CF86BFB /* Pods-Runner.release.xcconfig */, 9C7621F7B4CD9D86D2CF5117 /* Pods-Runner.profile.xcconfig */, ); - name = Pods; path = Pods; sourceTree = ""; }; @@ -183,7 +182,6 @@ 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, - 3399D490228B24CF009A79C7 /* ShellScript */, B2092651FB09C4FF4658E668 /* [CP] Embed Pods Frameworks */, ); buildRules = ( @@ -254,24 +252,6 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 3399D490228B24CF009A79C7 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - ); - outputFileListPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n"; - }; 33CC111E2044C6BF0003C045 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; diff --git a/pubspec.yaml b/pubspec.yaml index 6e582acb0..b5ae63ce5 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -8,8 +8,8 @@ homepage: https://weilu.blog.csdn.net/ publish_to: 'none' environment: - sdk: ">=3.0.0-0 <4.0.0" - flutter: ">=3.7.0" + sdk: ">=3.4.0 <4.0.0" + flutter: ">=3.19.0" dependencies: flutter: @@ -23,7 +23,7 @@ dependencies: # Toast插件 https://github.com/OpenFlutter/flutter_oktoast oktoast: ^3.4.0 # 网络库 https://github.com/cfug/dio - dio: ^5.5.0+1 + dio: ^5.7.0 # https://github.com/ReactiveX/rxdart rxdart: ^0.28.0 # Dart 常用工具类库 https://github.com/Sky24n/common_utils @@ -61,8 +61,8 @@ dependencies: # App Shortcuts https://github.com/flutter/packages/tree/main/packages/quick_actions quick_actions: 1.0.7 # 振动 https://github.com/benjamindean/flutter_vibration - vibration: 1.9.0 - vibration_web: 1.6.7 + vibration: 2.0.0 + vibration_web: 1.6.8 # 获取当前设备信息 https://github.com/fluttercommunity/plus_plugins/tree/main/packages/device_info_plus device_info_plus: 10.0.1 # 桌面应用调整窗口的大小和位置 https://github.com/leanflutter/window_manager From df174df10025901818a9d421c6b36e9cd5d98557 Mon Sep 17 00:00:00 2001 From: weilu Date: Sat, 21 Sep 2024 19:07:07 +0800 Subject: [PATCH 191/206] xcode 16.0 --- macos/Flutter/GeneratedPluginRegistrant.swift | 2 ++ 1 file changed, 2 insertions(+) diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index 7e75e9f66..700bd2c03 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -12,6 +12,7 @@ import screen_retriever import shared_preferences_foundation import sqflite import url_launcher_macos +import webview_flutter_wkwebview import window_manager func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { @@ -22,5 +23,6 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin")) UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) + FLTWebViewFlutterPlugin.register(with: registry.registrar(forPlugin: "FLTWebViewFlutterPlugin")) WindowManagerPlugin.register(with: registry.registrar(forPlugin: "WindowManagerPlugin")) } From 1e09534a06b364128f355d8afe5cc0e2c231d456 Mon Sep 17 00:00:00 2001 From: weilu Date: Sat, 28 Sep 2024 15:03:36 +0800 Subject: [PATCH 192/206] Enable invalid_runtime_check_with_js_interop_types --- analysis_options.yaml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/analysis_options.yaml b/analysis_options.yaml index 3b2b13255..2da7901da 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -50,7 +50,7 @@ linter: # - avoid_annotating_with_dynamic # conflicts with always_specify_types - avoid_bool_literals_in_conditional_expressions # - avoid_catches_without_on_clauses # blocked on https://github.com/dart-lang/linter/issues/3023 - # - avoid_catching_errors # blocked on https://github.com/dart-lang/linter/issues/3023 + # - avoid_catching_errors # blocked on https://github.com/dart-lang/linter/issues/4998 # - avoid_classes_with_only_static_members - avoid_double_and_int_checks - avoid_dynamic_calls @@ -113,6 +113,8 @@ linter: - implementation_imports - implicit_call_tearoffs - implicit_reopen + - invalid_case_patterns + - invalid_runtime_check_with_js_interop_types # - invariant_booleans # too many false positives: https://github.com/dart-lang/linter/issues/811 # - join_return_with_assignment # not required by flutter style - leading_newlines_in_multiline_strings @@ -157,7 +159,7 @@ linter: # - prefer_constructors_over_static_methods # far too many false positives - prefer_contains # - prefer_double_quotes # opposite of prefer_single_quotes - # - prefer_expression_function_bodies # conflicts with https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#consider-using--for-short-functions-and-methods + # - prefer_expression_function_bodies # conflicts with ./docs/contributing/Style-guide-for-Flutter-repo.md#consider-using--for-short-functions-and-methods - prefer_final_fields - prefer_final_in_for_each - prefer_final_locals @@ -170,7 +172,7 @@ linter: - prefer_if_null_operators - prefer_initializing_formals - prefer_inlined_adds - # - prefer_int_literals # conflicts with https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#use-double-literals-for-double-constants + # - prefer_int_literals # conflicts with ./docs/contributing/Style-guide-for-Flutter-repo.md#use-double-literals-for-double-constants - prefer_interpolation_to_compose_strings - prefer_is_empty - prefer_is_not_empty From e3ee1a3faec521a4f086dec1d598d9a4fec8ed20 Mon Sep 17 00:00:00 2001 From: weilu Date: Sun, 24 Nov 2024 12:44:05 +0800 Subject: [PATCH 193/206] =?UTF-8?q?=E9=80=82=E9=85=8DAGP=208?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- android/app/build.gradle | 30 ++++++++----------- android/app/src/debug/AndroidManifest.xml | 3 +- android/app/src/main/AndroidManifest.xml | 3 +- android/app/src/profile/AndroidManifest.xml | 3 +- android/build.gradle | 18 ----------- android/gradle.properties | 5 +++- .../gradle/wrapper/gradle-wrapper.properties | 4 +-- android/settings.gradle | 30 ++++++++++++------- pubspec.yaml | 14 ++++----- 9 files changed, 49 insertions(+), 61 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 708cd4416..85c96b8f2 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -1,3 +1,9 @@ +plugins { + id "com.android.application" + id "kotlin-android" + id "dev.flutter.flutter-gradle-plugin" +} + def localProperties = new Properties() def localPropertiesFile = rootProject.file('local.properties') if (localPropertiesFile.exists()) { @@ -6,12 +12,6 @@ if (localPropertiesFile.exists()) { } } -def flutterRoot = localProperties.getProperty('flutter.sdk') -if (flutterRoot == null) { - throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") -} - - def flutterVersionCode = localProperties.getProperty('flutter.versionCode') if (flutterVersionCode == null) { flutterVersionCode = '1' @@ -22,10 +22,6 @@ if (flutterVersionName == null) { flutterVersionName = '1.0' } -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' -apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" - def keystorePropertiesFile = rootProject.file("app/key.properties") def keystoreProperties = new Properties() keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) @@ -33,10 +29,6 @@ keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) android { compileSdkVersion 34 - lintOptions { - disable 'InvalidPackage' - } - defaultConfig { applicationId "com.weilu.deer" minSdkVersion 21 @@ -73,8 +65,12 @@ android { } compileOptions { - sourceCompatibility JavaVersion.VERSION_11 - targetCompatibility JavaVersion.VERSION_11 + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 + } + namespace 'com.weilu.deer' + lint { + disable 'InvalidPackage' } } @@ -83,5 +79,5 @@ flutter { } dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.20" } diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml index a0b1e604d..f880684a6 100644 --- a/android/app/src/debug/AndroidManifest.xml +++ b/android/app/src/debug/AndroidManifest.xml @@ -1,5 +1,4 @@ - + diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 5be7b7226..c8c9a64bc 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -1,5 +1,4 @@ - + diff --git a/android/app/src/profile/AndroidManifest.xml b/android/app/src/profile/AndroidManifest.xml index a0b1e604d..f880684a6 100644 --- a/android/app/src/profile/AndroidManifest.xml +++ b/android/app/src/profile/AndroidManifest.xml @@ -1,5 +1,4 @@ - + diff --git a/android/build.gradle b/android/build.gradle index 0803b627b..97cc06256 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,21 +1,3 @@ -buildscript { - ext.kotlin_version = '1.7.0' - repositories { - maven { url 'https://maven.aliyun.com/repository/public' }//jcenter - maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }//gradle-plugin - maven { url 'https://maven.aliyun.com/repository/central' }//central - maven { url 'https://maven.aliyun.com/repository/google' }//google - google() - mavenCentral() - maven { url 'https://jitpack.io' } - } - - dependencies { - classpath 'com.android.tools.build:gradle:7.4.2' - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} - allprojects { repositories { maven { url 'https://maven.aliyun.com/repository/public' } diff --git a/android/gradle.properties b/android/gradle.properties index 1d37174d4..9e2da5c9f 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -15,4 +15,7 @@ kotlin.incremental=true kotlin.incremental.java=true kotlin.incremental.js=true kotlin.caching.enabled=true -kotlin.parallel.tasks.in.project=true \ No newline at end of file +kotlin.parallel.tasks.in.project=true +android.defaults.buildfeatures.buildconfig=true +android.nonTransitiveRClass=false +android.nonFinalResIds=false \ No newline at end of file diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index 5f1c90e67..a54cb9990 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Sun Sep 13 21:08:20 CST 2020 +#Sat Nov 23 15:18:48 CST 2024 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip diff --git a/android/settings.gradle b/android/settings.gradle index 5a2f14fb1..eb5952e55 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -1,15 +1,25 @@ -include ':app' +pluginManagement { + def flutterSdkPath = { + def properties = new Properties() + file("local.properties").withInputStream { properties.load(it) } + def flutterSdkPath = properties.getProperty("flutter.sdk") + assert flutterSdkPath != null, "flutter.sdk not set in local.properties" + return flutterSdkPath + }() -def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() + includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") -def plugins = new Properties() -def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins') -if (pluginsFile.exists()) { - pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) } + repositories { + google() + mavenCentral() + gradlePluginPortal() + } } -plugins.each { name, path -> - def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile() - include ":$name" - project(":$name").projectDir = pluginDirectory +plugins { + id "dev.flutter.flutter-plugin-loader" version "1.0.0" + id "com.android.application" version "8.3.1" apply false + id "org.jetbrains.kotlin.android" version "1.8.20" apply false } + +include ":app" \ No newline at end of file diff --git a/pubspec.yaml b/pubspec.yaml index b5ae63ce5..be74a1833 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -54,30 +54,30 @@ dependencies: # 状态管理 https://github.com/rrousselGit/provider provider: ^6.1.2 # 扫码 https://github.com/juliuscanute/qr_code_scanner - qr_code_scanner: 1.0.0 - # git: - # url: https://github.com/xeinebiu/qr_code_scanner.git - # ref: fix_break_changes_platform + qr_code_scanner: + git: + url: 'https://github.com/NeverOvO/qr_code_scanner.git' + ref: '3fe7b88' # App Shortcuts https://github.com/flutter/packages/tree/main/packages/quick_actions quick_actions: 1.0.7 # 振动 https://github.com/benjamindean/flutter_vibration vibration: 2.0.0 vibration_web: 1.6.8 # 获取当前设备信息 https://github.com/fluttercommunity/plus_plugins/tree/main/packages/device_info_plus - device_info_plus: 10.0.1 + device_info_plus: 11.1.1 # 桌面应用调整窗口的大小和位置 https://github.com/leanflutter/window_manager window_manager: 0.4.0 # 高德2D地图插件(支持Web) https://github.com/simplezhli/flutter_2d_amap flutter_2d_amap: git: - ref: '3850a4dc' + ref: '0105ceae' url: 'https://github.com/simplezhli/flutter_2d_amap.git' # demo 用到的库 # 刮刮卡 https://github.com/vintage/scratcher scratcher: ^2.5.0 # 动画效果 https://github.com/xvrh/lottie-flutter lottie: ^3.1.2 - win32: 5.5.1 + win32: 5.5.3 # https://github.com/simplezhli/flutter_deer/issues/187 dependency_overrides: From 14fd76d5a270e1fb057832a29249e6b35258c06c Mon Sep 17 00:00:00 2001 From: weilu Date: Sun, 24 Nov 2024 13:05:04 +0800 Subject: [PATCH 194/206] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/flutter-drive.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index 7a26019b0..4563f944b 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -17,7 +17,7 @@ jobs: # A set of different configurations of the virtual environment. matrix: device: - - "iPhone 14 Pro Max" + - "iPhone 15 Pro Max" # When set to true, GitHub cancels all in-progress jobs if any matrix job # fails. fail-fast: false @@ -66,7 +66,7 @@ jobs: strategy: # set of different configurations of the virtual environment. matrix: - api-level: [33] + api-level: [34] target: [google_apis] steps: - uses: actions/checkout@v3 @@ -79,7 +79,7 @@ jobs: with: flutter-version: '3.24.0' channel: 'stable' # or: 'dev' or 'beta' - architecture: x64 + architecture: arm64-v8a - name: "Run Flutter Driver tests" # GitHub Action for installing, configuring and running Android Emulators (work only Mac OS) # https://github.com/marketplace/actions/android-emulator-runner From a04bcba723643150022343c52fd9be536d7a5545 Mon Sep 17 00:00:00 2001 From: weilu Date: Sun, 24 Nov 2024 13:13:02 +0800 Subject: [PATCH 195/206] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/flutter-drive.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index 4563f944b..8c827e1e9 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -66,8 +66,9 @@ jobs: strategy: # set of different configurations of the virtual environment. matrix: - api-level: [34] + api-level: [33] target: [google_apis] + arch: arm64-v8a steps: - uses: actions/checkout@v3 - name: set up JDK 17 @@ -79,7 +80,7 @@ jobs: with: flutter-version: '3.24.0' channel: 'stable' # or: 'dev' or 'beta' - architecture: arm64-v8a + architecture: x64 - name: "Run Flutter Driver tests" # GitHub Action for installing, configuring and running Android Emulators (work only Mac OS) # https://github.com/marketplace/actions/android-emulator-runner From fecbf0d83787302425a22a11cbda059feb598e4c Mon Sep 17 00:00:00 2001 From: weilu Date: Sun, 24 Nov 2024 13:19:21 +0800 Subject: [PATCH 196/206] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/flutter-drive.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index 8c827e1e9..b5a0e732b 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -68,7 +68,6 @@ jobs: matrix: api-level: [33] target: [google_apis] - arch: arm64-v8a steps: - uses: actions/checkout@v3 - name: set up JDK 17 @@ -88,7 +87,7 @@ jobs: with: api-level: ${{ matrix.api-level }} target: ${{ matrix.target }} - arch: x86_64 + arch: arm64-v8a profile: Nexus 6 script: "flutter drive --target=test_driver/driver.dart" From cede8b6ce89d0b532a13d62c6c8d072fe703cbeb Mon Sep 17 00:00:00 2001 From: weilu Date: Sun, 24 Nov 2024 13:50:59 +0800 Subject: [PATCH 197/206] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/flutter-drive.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index b5a0e732b..665304dfb 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -54,7 +54,6 @@ jobs: with: flutter-version: '3.24.0' channel: 'stable' # or: 'dev' or 'beta' - architecture: x64 - run: "flutter clean" - name: "Run Flutter Driver tests" run: "flutter drive --target=test_driver/driver.dart --no-enable-impeller" #https://github.com/flutter/flutter/issues/128391 @@ -66,7 +65,7 @@ jobs: strategy: # set of different configurations of the virtual environment. matrix: - api-level: [33] + api-level: [29, 34] target: [google_apis] steps: - uses: actions/checkout@v3 @@ -79,7 +78,6 @@ jobs: with: flutter-version: '3.24.0' channel: 'stable' # or: 'dev' or 'beta' - architecture: x64 - name: "Run Flutter Driver tests" # GitHub Action for installing, configuring and running Android Emulators (work only Mac OS) # https://github.com/marketplace/actions/android-emulator-runner @@ -105,7 +103,6 @@ jobs: with: flutter-version: '3.24.0' channel: 'stable' - architecture: x64 - run: "flutter pub get" - name: "Run Flutter Accessibility Tests" run: "flutter test test/accessibility_test.dart" From 5a45005c92cdd329c1dd6e7f1f3ce1823a8afeed Mon Sep 17 00:00:00 2001 From: weilu Date: Sat, 14 Dec 2024 00:02:45 +0800 Subject: [PATCH 198/206] flutter 3.27.0 --- .github/workflows/flutter-drive.yml | 6 +++--- .github/workflows/flutter-web-deploy.yml | 4 ++-- README-EN.md | 4 ++-- README.md | 4 ++-- lib/widgets/progress_dialog.dart | 9 +-------- pubspec.yaml | 2 +- 6 files changed, 11 insertions(+), 18 deletions(-) diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index 665304dfb..c5ca00213 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -52,7 +52,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v2 with: - flutter-version: '3.24.0' + flutter-version: '3.27.0' channel: 'stable' # or: 'dev' or 'beta' - run: "flutter clean" - name: "Run Flutter Driver tests" @@ -76,7 +76,7 @@ jobs: java-version: "17" - uses: subosito/flutter-action@v2 with: - flutter-version: '3.24.0' + flutter-version: '3.27.0' channel: 'stable' # or: 'dev' or 'beta' - name: "Run Flutter Driver tests" # GitHub Action for installing, configuring and running Android Emulators (work only Mac OS) @@ -101,7 +101,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v2 with: - flutter-version: '3.24.0' + flutter-version: '3.27.0' channel: 'stable' - run: "flutter pub get" - name: "Run Flutter Accessibility Tests" diff --git a/.github/workflows/flutter-web-deploy.yml b/.github/workflows/flutter-web-deploy.yml index d714edde1..0a391ff52 100644 --- a/.github/workflows/flutter-web-deploy.yml +++ b/.github/workflows/flutter-web-deploy.yml @@ -5,7 +5,7 @@ name: flutter_deer web deploy on: push: paths: - - 'pubspec.yaml1' + - 'pubspec.yaml' jobs: web_build_and_deploy: @@ -14,7 +14,7 @@ jobs: - uses: actions/checkout@v2.3.1 - uses: subosito/flutter-action@v2 with: - flutter-version: '3.22.0' + flutter-version: '3.27.0' channel: 'stable' architecture: x64 - name: "Web Build 🔧" diff --git a/README-EN.md b/README-EN.md index e17711e8f..727ea1450 100644 --- a/README-EN.md +++ b/README-EN.md @@ -66,9 +66,9 @@ For web experience, please visit: https://simplezhli.github.io/flutter_deer/ [![flutter_deer driver](https://github.com/simplezhli/flutter_deer/actions/workflows/flutter-drive.yml/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions/workflows/flutter-drive.yml) - 1. Flutter version 3.24.0 + 1. Flutter version 3.27.0 - 2. Dart version 3.5.0 + 2. Dart version 3.6.0 ## Precautions to be taken. diff --git a/README.md b/README.md index b06a1e290..af53477ef 100644 --- a/README.md +++ b/README.md @@ -66,9 +66,9 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ [![flutter_deer driver](https://github.com/simplezhli/flutter_deer/actions/workflows/flutter-drive.yml/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions/workflows/flutter-drive.yml) - 1. Flutter version 3.24.0 + 1. Flutter version 3.27.0 - 2. Dart version 3.5.0 + 2. Dart version 3.6.0 ## 注意事项 diff --git a/lib/widgets/progress_dialog.dart b/lib/widgets/progress_dialog.dart index 6ba269804..dafae1e20 100644 --- a/lib/widgets/progress_dialog.dart +++ b/lib/widgets/progress_dialog.dart @@ -18,14 +18,7 @@ class ProgressDialog extends Dialog { final Widget progress = Column( mainAxisAlignment: MainAxisAlignment.center, children: [ - Theme( - data: ThemeData( - cupertinoOverrideTheme: const CupertinoThemeData( - brightness: Brightness.dark, // 局部指定夜间模式,加载圈颜色会设置为白色 - ), - ), - child: const CupertinoActivityIndicator(radius: 14.0), - ), + const CupertinoActivityIndicator(radius: 14.0, color: Colors.grey,), Gaps.vGap8, Text(hintText, style: const TextStyle(color: Colors.white),) ], diff --git a/pubspec.yaml b/pubspec.yaml index be74a1833..0f3de7c84 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -38,7 +38,7 @@ dependencies: # 图片选择插件 https://github.com/flutter/packages/tree/main/packages/image_picker image_picker: 1.1.2 # 侧滑删除 https://github.com/letsar/flutter_slidable - flutter_slidable: ^3.1.1 + flutter_slidable: ^3.1.2 # WebView插件 https://github.com/flutter/packages/tree/main/packages/webview_flutter webview_flutter: 4.8.0 # 处理键盘事件 https://github.com/diegoveloper/flutter_keyboard_actions From 5d9e4f0c4a3f92bfcf9593b5f2a2946d217c1b10 Mon Sep 17 00:00:00 2001 From: weilu Date: Wed, 1 Jan 2025 10:22:45 +0800 Subject: [PATCH 199/206] Configure Page Width --- analysis_options.yaml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/analysis_options.yaml b/analysis_options.yaml index 2da7901da..49e698def 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -36,6 +36,9 @@ analyzer: # - "test/**" - "test_driver/**" +formatter: + page_width: 100 + linter: rules: # This list is derived from the list of all available lints located at @@ -143,7 +146,6 @@ linter: # - one_member_abstracts # too many false positives - only_throw_errors # this does get disabled in a few places where we have legacy code that uses strings et al - overridden_fields - - package_api_docs - package_names - package_prefixed_library_names # - parameter_assignments # we do this commonly @@ -213,7 +215,7 @@ linter: # - unnecessary_lambdas # has false positives: https://github.com/dart-lang/linter/issues/498 - unnecessary_late - unnecessary_library_directive - # - unnecessary_library_name # blocked on https://github.com/dart-lang/lints/issues/181#issuecomment-2018919034 + # - unnecessary_library_name # blocked on blocked on https://github.com/dart-lang/dartdoc/issues/3882 - unnecessary_new - unnecessary_null_aware_assignments - unnecessary_null_aware_operator_on_extension_on_nullable @@ -230,7 +232,6 @@ linter: - unnecessary_to_list_in_spreads - unreachable_from_main - unrelated_type_equality_checks - - unsafe_html - use_build_context_synchronously - use_colored_box # - use_decorated_box # not yet tested @@ -249,5 +250,6 @@ linter: # - use_string_buffers # has false positives: https://github.com/dart-lang/sdk/issues/34182 - use_test_throws_matchers # - use_to_and_as_if_applicable # has false positives, so we prefer to catch this by code-review + - use_truncating_division - valid_regexps - void_checks \ No newline at end of file From 972773cd91a67180d8571789fe6e215e2d8105c8 Mon Sep 17 00:00:00 2001 From: weilu Date: Thu, 13 Feb 2025 23:57:40 +0800 Subject: [PATCH 200/206] flutter 3.29.0 --- .github/workflows/flutter-drive.yml | 6 +- README-EN.md | 4 +- README.md | 4 +- .../xcshareddata/xcschemes/Runner.xcscheme | 1 + l10n.yaml | 2 +- lib/l10n/deer_localizations.dart | 237 ++++++++++++++++++ lib/l10n/deer_localizations_en.dart | 64 +++++ lib/l10n/deer_localizations_zh.dart | 64 +++++ lib/login/page/login_page.dart | 2 +- lib/login/page/register_page.dart | 2 +- lib/login/page/reset_password_page.dart | 2 +- lib/login/page/sms_login_page.dart | 2 +- lib/login/widgets/my_text_field.dart | 3 +- lib/main.dart | 3 +- pubspec.yaml | 6 +- 15 files changed, 385 insertions(+), 17 deletions(-) create mode 100644 lib/l10n/deer_localizations.dart create mode 100644 lib/l10n/deer_localizations_en.dart create mode 100644 lib/l10n/deer_localizations_zh.dart diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index c5ca00213..fe7a609ad 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -52,7 +52,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v2 with: - flutter-version: '3.27.0' + flutter-version: '3.29.0' channel: 'stable' # or: 'dev' or 'beta' - run: "flutter clean" - name: "Run Flutter Driver tests" @@ -76,7 +76,7 @@ jobs: java-version: "17" - uses: subosito/flutter-action@v2 with: - flutter-version: '3.27.0' + flutter-version: '3.29.0' channel: 'stable' # or: 'dev' or 'beta' - name: "Run Flutter Driver tests" # GitHub Action for installing, configuring and running Android Emulators (work only Mac OS) @@ -101,7 +101,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v2 with: - flutter-version: '3.27.0' + flutter-version: '3.29.0' channel: 'stable' - run: "flutter pub get" - name: "Run Flutter Accessibility Tests" diff --git a/README-EN.md b/README-EN.md index 727ea1450..a230e4aea 100644 --- a/README-EN.md +++ b/README-EN.md @@ -66,9 +66,9 @@ For web experience, please visit: https://simplezhli.github.io/flutter_deer/ [![flutter_deer driver](https://github.com/simplezhli/flutter_deer/actions/workflows/flutter-drive.yml/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions/workflows/flutter-drive.yml) - 1. Flutter version 3.27.0 + 1. Flutter version 3.29.0 - 2. Dart version 3.6.0 + 2. Dart version 3.7.0 ## Precautions to be taken. diff --git a/README.md b/README.md index af53477ef..1f0989b9c 100644 --- a/README.md +++ b/README.md @@ -66,9 +66,9 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ [![flutter_deer driver](https://github.com/simplezhli/flutter_deer/actions/workflows/flutter-drive.yml/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions/workflows/flutter-drive.yml) - 1. Flutter version 3.27.0 + 1. Flutter version 3.29.0 - 2. Dart version 3.6.0 + 2. Dart version 3.7.0 ## 注意事项 diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index 5e31d3d34..c53e2b314 100644 --- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -48,6 +48,7 @@ ignoresPersistentStateOnLaunch = "NO" debugDocumentVersioning = "YES" debugServiceExtension = "internal" + enableGPUValidationMode = "1" allowLocationSimulation = "YES"> diff --git a/l10n.yaml b/l10n.yaml index caf1d834b..03ea2af6b 100644 --- a/l10n.yaml +++ b/l10n.yaml @@ -1,5 +1,5 @@ # 文档:https://flutter.dev/docs/development/accessibility-and-localization/internationalization - +synthetic-package: false arb-dir: lib/l10n template-arb-file: intl_en.arb output-localization-file: deer_localizations.dart diff --git a/lib/l10n/deer_localizations.dart b/lib/l10n/deer_localizations.dart new file mode 100644 index 000000000..b030a1d9b --- /dev/null +++ b/lib/l10n/deer_localizations.dart @@ -0,0 +1,237 @@ +import 'dart:async'; + +import 'package:flutter/foundation.dart'; +import 'package:flutter/widgets.dart'; +import 'package:flutter_localizations/flutter_localizations.dart'; +import 'package:intl/intl.dart' as intl; + +import 'deer_localizations_en.dart'; +import 'deer_localizations_zh.dart'; + +// ignore_for_file: type=lint + +/// Callers can lookup localized strings with an instance of DeerLocalizations +/// returned by `DeerLocalizations.of(context)`. +/// +/// Applications need to include `DeerLocalizations.delegate()` in their app's +/// `localizationDelegates` list, and the locales they support in the app's +/// `supportedLocales` list. For example: +/// +/// ```dart +/// import 'l10n/deer_localizations.dart'; +/// +/// return MaterialApp( +/// localizationsDelegates: DeerLocalizations.localizationsDelegates, +/// supportedLocales: DeerLocalizations.supportedLocales, +/// home: MyApplicationHome(), +/// ); +/// ``` +/// +/// ## Update pubspec.yaml +/// +/// Please make sure to update your pubspec.yaml to include the following +/// packages: +/// +/// ```yaml +/// dependencies: +/// # Internationalization support. +/// flutter_localizations: +/// sdk: flutter +/// intl: any # Use the pinned version from flutter_localizations +/// +/// # Rest of dependencies +/// ``` +/// +/// ## iOS Applications +/// +/// iOS applications define key application metadata, including supported +/// locales, in an Info.plist file that is built into the application bundle. +/// To configure the locales supported by your app, you’ll need to edit this +/// file. +/// +/// First, open your project’s ios/Runner.xcworkspace Xcode workspace file. +/// Then, in the Project Navigator, open the Info.plist file under the Runner +/// project’s Runner folder. +/// +/// Next, select the Information Property List item, select Add Item from the +/// Editor menu, then select Localizations from the pop-up menu. +/// +/// Select and expand the newly-created Localizations item then, for each +/// locale your application supports, add a new item and select the locale +/// you wish to add from the pop-up menu in the Value field. This list should +/// be consistent with the languages listed in the DeerLocalizations.supportedLocales +/// property. +abstract class DeerLocalizations { + DeerLocalizations(String locale) : localeName = intl.Intl.canonicalizedLocale(locale.toString()); + + final String localeName; + + static DeerLocalizations? of(BuildContext context) { + return Localizations.of(context, DeerLocalizations); + } + + static const LocalizationsDelegate delegate = _DeerLocalizationsDelegate(); + + /// A list of this localizations delegate along with the default localizations + /// delegates. + /// + /// Returns a list of localizations delegates containing this delegate along with + /// GlobalMaterialLocalizations.delegate, GlobalCupertinoLocalizations.delegate, + /// and GlobalWidgetsLocalizations.delegate. + /// + /// Additional delegates can be added by appending to this list in + /// MaterialApp. This list does not have to be used at all if a custom list + /// of delegates is preferred or required. + static const List> localizationsDelegates = >[ + delegate, + GlobalMaterialLocalizations.delegate, + GlobalCupertinoLocalizations.delegate, + GlobalWidgetsLocalizations.delegate, + ]; + + /// A list of this localizations delegate's supported locales. + static const List supportedLocales = [ + Locale('en'), + Locale('zh') + ]; + + /// Title for the application + /// + /// In en, this message translates to: + /// **'Flutter Deer'** + String get title; + + /// Title for the Login page + /// + /// In en, this message translates to: + /// **'Verification Code Login'** + String get verificationCodeLogin; + + /// Password Login + /// + /// In en, this message translates to: + /// **'Password Login'** + String get passwordLogin; + + /// Login + /// + /// In en, this message translates to: + /// **'Login'** + String get login; + + /// Forgot Password + /// + /// In en, this message translates to: + /// **'Forgot Password'** + String get forgotPasswordLink; + + /// Please enter the password + /// + /// In en, this message translates to: + /// **'Please enter the password'** + String get inputPasswordHint; + + /// Please input username + /// + /// In en, this message translates to: + /// **'Please input username'** + String get inputUsernameHint; + + /// No account yet? Register now + /// + /// In en, this message translates to: + /// **'No account yet? Register now'** + String get noAccountRegisterLink; + + /// Register + /// + /// In en, this message translates to: + /// **'Register'** + String get register; + + /// Open your account + /// + /// In en, this message translates to: + /// **'Open your account'** + String get openYourAccount; + + /// Please enter phone number + /// + /// In en, this message translates to: + /// **'Please enter phone number'** + String get inputPhoneHint; + + /// Please enter verification code + /// + /// In en, this message translates to: + /// **'Please enter verification code'** + String get inputVerificationCodeHint; + + /// Please input valid mobile phone number + /// + /// In en, this message translates to: + /// **'Please input valid mobile phone number'** + String get inputPhoneInvalid; + + /// Not really sent, just log in! + /// + /// In en, this message translates to: + /// **'Not really sent, just log in!'** + String get verificationButton; + + /// Get verification code + /// + /// In en, this message translates to: + /// **'Get code'** + String get getVerificationCode; + + /// No description provided for @confirm. + /// + /// In en, this message translates to: + /// **'Confirm'** + String get confirm; + + /// Reset login password + /// + /// In en, this message translates to: + /// **'Reset Login Password'** + String get resetLoginPassword; + + /// Registered Tips + /// + /// In en, this message translates to: + /// **'Unregistered mobile phone number, please '** + String get registeredTips; +} + +class _DeerLocalizationsDelegate extends LocalizationsDelegate { + const _DeerLocalizationsDelegate(); + + @override + Future load(Locale locale) { + return SynchronousFuture(lookupDeerLocalizations(locale)); + } + + @override + bool isSupported(Locale locale) => ['en', 'zh'].contains(locale.languageCode); + + @override + bool shouldReload(_DeerLocalizationsDelegate old) => false; +} + +DeerLocalizations lookupDeerLocalizations(Locale locale) { + + + // Lookup logic when only language code is specified. + switch (locale.languageCode) { + case 'en': return DeerLocalizationsEn(); + case 'zh': return DeerLocalizationsZh(); + } + + throw FlutterError( + 'DeerLocalizations.delegate failed to load unsupported locale "$locale". This is likely ' + 'an issue with the localizations generation tool. Please file an issue ' + 'on GitHub with a reproducible sample app and the gen-l10n configuration ' + 'that was used.' + ); +} diff --git a/lib/l10n/deer_localizations_en.dart b/lib/l10n/deer_localizations_en.dart new file mode 100644 index 000000000..edf6f0d0b --- /dev/null +++ b/lib/l10n/deer_localizations_en.dart @@ -0,0 +1,64 @@ +// ignore: unused_import +import 'package:intl/intl.dart' as intl; +import 'deer_localizations.dart'; + +// ignore_for_file: type=lint + +/// The translations for English (`en`). +class DeerLocalizationsEn extends DeerLocalizations { + DeerLocalizationsEn([String locale = 'en']) : super(locale); + + @override + String get title => 'Flutter Deer'; + + @override + String get verificationCodeLogin => 'Verification Code Login'; + + @override + String get passwordLogin => 'Password Login'; + + @override + String get login => 'Login'; + + @override + String get forgotPasswordLink => 'Forgot Password'; + + @override + String get inputPasswordHint => 'Please enter the password'; + + @override + String get inputUsernameHint => 'Please input username'; + + @override + String get noAccountRegisterLink => 'No account yet? Register now'; + + @override + String get register => 'Register'; + + @override + String get openYourAccount => 'Open your account'; + + @override + String get inputPhoneHint => 'Please enter phone number'; + + @override + String get inputVerificationCodeHint => 'Please enter verification code'; + + @override + String get inputPhoneInvalid => 'Please input valid mobile phone number'; + + @override + String get verificationButton => 'Not really sent, just log in!'; + + @override + String get getVerificationCode => 'Get code'; + + @override + String get confirm => 'Confirm'; + + @override + String get resetLoginPassword => 'Reset Login Password'; + + @override + String get registeredTips => 'Unregistered mobile phone number, please '; +} diff --git a/lib/l10n/deer_localizations_zh.dart b/lib/l10n/deer_localizations_zh.dart new file mode 100644 index 000000000..4c28d7a33 --- /dev/null +++ b/lib/l10n/deer_localizations_zh.dart @@ -0,0 +1,64 @@ +// ignore: unused_import +import 'package:intl/intl.dart' as intl; +import 'deer_localizations.dart'; + +// ignore_for_file: type=lint + +/// The translations for Chinese (`zh`). +class DeerLocalizationsZh extends DeerLocalizations { + DeerLocalizationsZh([String locale = 'zh']) : super(locale); + + @override + String get title => 'Flutter Deer'; + + @override + String get verificationCodeLogin => '验证码登录'; + + @override + String get passwordLogin => '密码登录'; + + @override + String get login => '登录'; + + @override + String get forgotPasswordLink => '忘记密码'; + + @override + String get inputPasswordHint => '请输入密码'; + + @override + String get inputUsernameHint => '请输入账号'; + + @override + String get noAccountRegisterLink => '还没账号?快去注册'; + + @override + String get register => '注册'; + + @override + String get openYourAccount => '开启你的账号'; + + @override + String get inputPhoneHint => '请输入手机号'; + + @override + String get inputVerificationCodeHint => '请输入验证码'; + + @override + String get inputPhoneInvalid => '请输入有效的手机号'; + + @override + String get verificationButton => '并没有真正发送哦,直接登录吧!'; + + @override + String get getVerificationCode => '获取验证码'; + + @override + String get confirm => '确认'; + + @override + String get resetLoginPassword => '重置登录密码'; + + @override + String get registeredTips => '提示:未注册账号的手机号,请先'; +} diff --git a/lib/login/page/login_page.dart b/lib/login/page/login_page.dart index 7e4fe15d3..1c4c9416c 100644 --- a/lib/login/page/login_page.dart +++ b/lib/login/page/login_page.dart @@ -10,9 +10,9 @@ import 'package:flutter_deer/util/other_utils.dart'; import 'package:flutter_deer/widgets/my_app_bar.dart'; import 'package:flutter_deer/widgets/my_button.dart'; import 'package:flutter_deer/widgets/my_scroll_view.dart'; -import 'package:flutter_gen/gen_l10n/deer_localizations.dart'; import 'package:sp_util/sp_util.dart'; +import '../../l10n/deer_localizations.dart'; import '../login_router.dart'; /// design/1注册登录/index.html diff --git a/lib/login/page/register_page.dart b/lib/login/page/register_page.dart index d74a5bc39..43fe6f8ae 100644 --- a/lib/login/page/register_page.dart +++ b/lib/login/page/register_page.dart @@ -7,7 +7,7 @@ import 'package:flutter_deer/util/toast_utils.dart'; import 'package:flutter_deer/widgets/my_app_bar.dart'; import 'package:flutter_deer/widgets/my_button.dart'; import 'package:flutter_deer/widgets/my_scroll_view.dart'; -import 'package:flutter_gen/gen_l10n/deer_localizations.dart'; +import '../../l10n/deer_localizations.dart'; /// design/1注册登录/index.html#artboard11 class RegisterPage extends StatefulWidget { diff --git a/lib/login/page/reset_password_page.dart b/lib/login/page/reset_password_page.dart index 13b975fce..b32d77c92 100644 --- a/lib/login/page/reset_password_page.dart +++ b/lib/login/page/reset_password_page.dart @@ -7,7 +7,7 @@ import 'package:flutter_deer/util/toast_utils.dart'; import 'package:flutter_deer/widgets/my_app_bar.dart'; import 'package:flutter_deer/widgets/my_button.dart'; import 'package:flutter_deer/widgets/my_scroll_view.dart'; -import 'package:flutter_gen/gen_l10n/deer_localizations.dart'; +import '../../l10n/deer_localizations.dart'; /// design/1注册登录/index.html#artboard9 diff --git a/lib/login/page/sms_login_page.dart b/lib/login/page/sms_login_page.dart index 50a8b6aa8..bad41ae48 100644 --- a/lib/login/page/sms_login_page.dart +++ b/lib/login/page/sms_login_page.dart @@ -9,7 +9,7 @@ import 'package:flutter_deer/util/toast_utils.dart'; import 'package:flutter_deer/widgets/my_app_bar.dart'; import 'package:flutter_deer/widgets/my_button.dart'; import 'package:flutter_deer/widgets/my_scroll_view.dart'; -import 'package:flutter_gen/gen_l10n/deer_localizations.dart'; +import '../../l10n/deer_localizations.dart'; import '../login_router.dart'; diff --git a/lib/login/widgets/my_text_field.dart b/lib/login/widgets/my_text_field.dart index 0e7218284..657006a7d 100644 --- a/lib/login/widgets/my_text_field.dart +++ b/lib/login/widgets/my_text_field.dart @@ -6,7 +6,8 @@ import 'package:flutter_deer/res/resources.dart'; import 'package:flutter_deer/util/device_utils.dart'; import 'package:flutter_deer/widgets/load_image.dart'; import 'package:flutter_deer/widgets/my_button.dart'; -import 'package:flutter_gen/gen_l10n/deer_localizations.dart'; + +import '../../l10n/deer_localizations.dart'; /// 登录模块的输入框封装 diff --git a/lib/main.dart b/lib/main.dart index 7ed9a29fa..696116049 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -13,7 +13,6 @@ import 'package:flutter_deer/setting/provider/theme_provider.dart'; import 'package:flutter_deer/util/device_utils.dart'; import 'package:flutter_deer/util/handle_error_utils.dart'; import 'package:flutter_deer/util/log_utils.dart'; -import 'package:flutter_gen/gen_l10n/deer_localizations.dart'; import 'package:oktoast/oktoast.dart'; import 'package:provider/provider.dart'; import 'package:quick_actions/quick_actions.dart'; @@ -21,6 +20,8 @@ import 'package:sp_util/sp_util.dart'; import 'package:url_strategy/url_strategy.dart'; import 'package:window_manager/window_manager.dart'; +import '../../l10n/deer_localizations.dart'; + Future main() async { // debugProfileBuildsEnabled = true; // debugPaintLayerBordersEnabled = true; diff --git a/pubspec.yaml b/pubspec.yaml index 0f3de7c84..87899d253 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -38,7 +38,7 @@ dependencies: # 图片选择插件 https://github.com/flutter/packages/tree/main/packages/image_picker image_picker: 1.1.2 # 侧滑删除 https://github.com/letsar/flutter_slidable - flutter_slidable: ^3.1.2 + flutter_slidable: ^4.0.0 # WebView插件 https://github.com/flutter/packages/tree/main/packages/webview_flutter webview_flutter: 4.8.0 # 处理键盘事件 https://github.com/diegoveloper/flutter_keyboard_actions @@ -59,7 +59,7 @@ dependencies: url: 'https://github.com/NeverOvO/qr_code_scanner.git' ref: '3fe7b88' # App Shortcuts https://github.com/flutter/packages/tree/main/packages/quick_actions - quick_actions: 1.0.7 + quick_actions: 1.1.0 # 振动 https://github.com/benjamindean/flutter_vibration vibration: 2.0.0 vibration_web: 1.6.8 @@ -76,7 +76,7 @@ dependencies: # 刮刮卡 https://github.com/vintage/scratcher scratcher: ^2.5.0 # 动画效果 https://github.com/xvrh/lottie-flutter - lottie: ^3.1.2 + lottie: ^3.3.0 win32: 5.5.3 # https://github.com/simplezhli/flutter_deer/issues/187 From 3d32817b4ddf4189b3008ac8c8479528d66dedaa Mon Sep 17 00:00:00 2001 From: weilu Date: Fri, 14 Feb 2025 00:19:03 +0800 Subject: [PATCH 201/206] flutter 3.29.0 --- android/app/src/main/java/com/weilu/deer/MyApp.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/android/app/src/main/java/com/weilu/deer/MyApp.java b/android/app/src/main/java/com/weilu/deer/MyApp.java index f67a8b5cb..8bf3835a6 100644 --- a/android/app/src/main/java/com/weilu/deer/MyApp.java +++ b/android/app/src/main/java/com/weilu/deer/MyApp.java @@ -1,15 +1,14 @@ package com.weilu.deer; -import android.content.Context; +import android.app.Application; -import io.flutter.app.FlutterApplication; /** * @Description: * @Author: weilu * @Time: 2019/8/5 0005 17:08. */ -public class MyApp extends FlutterApplication { +public class MyApp extends Application { @Override public void onCreate() { From 797d89df1db50e87bd8165fb24ab2493c3ce4420 Mon Sep 17 00:00:00 2001 From: weilu Date: Wed, 26 Feb 2025 22:35:14 +0800 Subject: [PATCH 202/206] =?UTF-8?q?=E4=BE=9D=E8=B5=96=E5=8D=87=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/flutter-web-deploy.yml | 2 +- .gitignore | 1 + lib/account/widgets/withdrawal_password_setting.dart | 2 +- pubspec.yaml | 4 ++-- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/flutter-web-deploy.yml b/.github/workflows/flutter-web-deploy.yml index 0a391ff52..a6c0ec235 100644 --- a/.github/workflows/flutter-web-deploy.yml +++ b/.github/workflows/flutter-web-deploy.yml @@ -5,7 +5,7 @@ name: flutter_deer web deploy on: push: paths: - - 'pubspec.yaml' + - 'pubspec1.yaml' jobs: web_build_and_deploy: diff --git a/.gitignore b/.gitignore index 4cffcb346..1a75eff26 100644 --- a/.gitignore +++ b/.gitignore @@ -37,6 +37,7 @@ **/android/gradlew.bat **/android/local.properties **/android/**/GeneratedPluginRegistrant.java +**/android/app/.cxx # iOS/XCode related **/ios/**/*.mode1v3 diff --git a/lib/account/widgets/withdrawal_password_setting.dart b/lib/account/widgets/withdrawal_password_setting.dart index d51b60039..149f0eda8 100644 --- a/lib/account/widgets/withdrawal_password_setting.dart +++ b/lib/account/widgets/withdrawal_password_setting.dart @@ -153,7 +153,7 @@ class _WithdrawalPasswordSettingState extends State { }); /// 点击时给予振动反馈 - if (!Device.isDesktop && (await Vibration.hasVibrator() ?? false)) { + if (!Device.isDesktop && await Vibration.hasVibrator()) { Vibration.vibrate(duration: 10); } }, diff --git a/pubspec.yaml b/pubspec.yaml index 87899d253..4888d1f6c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -23,7 +23,7 @@ dependencies: # Toast插件 https://github.com/OpenFlutter/flutter_oktoast oktoast: ^3.4.0 # 网络库 https://github.com/cfug/dio - dio: ^5.7.0 + dio: ^5.8.0+1 # https://github.com/ReactiveX/rxdart rxdart: ^0.28.0 # Dart 常用工具类库 https://github.com/Sky24n/common_utils @@ -61,7 +61,7 @@ dependencies: # App Shortcuts https://github.com/flutter/packages/tree/main/packages/quick_actions quick_actions: 1.1.0 # 振动 https://github.com/benjamindean/flutter_vibration - vibration: 2.0.0 + vibration: 3.1.3 vibration_web: 1.6.8 # 获取当前设备信息 https://github.com/fluttercommunity/plus_plugins/tree/main/packages/device_info_plus device_info_plus: 11.1.1 From 698ffb26b607df590a395527d7c65bb8837fa46d Mon Sep 17 00:00:00 2001 From: weilu Date: Sat, 31 May 2025 17:00:52 +0800 Subject: [PATCH 203/206] flutter 3.32.1 --- .github/workflows/flutter-drive.yml | 6 ++-- devtools_options.yaml | 3 ++ ios/Flutter/ephemeral/flutter_lldb_helper.py | 32 +++++++++++++++++++ ios/Flutter/ephemeral/flutter_lldbinit | 5 +++ .../xcshareddata/xcschemes/Runner.xcscheme | 2 ++ lib/l10n/deer_localizations.dart | 25 +++++++-------- pubspec.yaml | 2 +- 7 files changed, 57 insertions(+), 18 deletions(-) create mode 100644 devtools_options.yaml create mode 100644 ios/Flutter/ephemeral/flutter_lldb_helper.py create mode 100644 ios/Flutter/ephemeral/flutter_lldbinit diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index fe7a609ad..e5432d50c 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -52,7 +52,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v2 with: - flutter-version: '3.29.0' + flutter-version: '3.32.1' channel: 'stable' # or: 'dev' or 'beta' - run: "flutter clean" - name: "Run Flutter Driver tests" @@ -76,7 +76,7 @@ jobs: java-version: "17" - uses: subosito/flutter-action@v2 with: - flutter-version: '3.29.0' + flutter-version: '3.32.1' channel: 'stable' # or: 'dev' or 'beta' - name: "Run Flutter Driver tests" # GitHub Action for installing, configuring and running Android Emulators (work only Mac OS) @@ -101,7 +101,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v2 with: - flutter-version: '3.29.0' + flutter-version: '3.32.1' channel: 'stable' - run: "flutter pub get" - name: "Run Flutter Accessibility Tests" diff --git a/devtools_options.yaml b/devtools_options.yaml new file mode 100644 index 000000000..fa0b357c4 --- /dev/null +++ b/devtools_options.yaml @@ -0,0 +1,3 @@ +description: This file stores settings for Dart & Flutter DevTools. +documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states +extensions: diff --git a/ios/Flutter/ephemeral/flutter_lldb_helper.py b/ios/Flutter/ephemeral/flutter_lldb_helper.py new file mode 100644 index 000000000..a88caf99d --- /dev/null +++ b/ios/Flutter/ephemeral/flutter_lldb_helper.py @@ -0,0 +1,32 @@ +# +# Generated file, do not edit. +# + +import lldb + +def handle_new_rx_page(frame: lldb.SBFrame, bp_loc, extra_args, intern_dict): + """Intercept NOTIFY_DEBUGGER_ABOUT_RX_PAGES and touch the pages.""" + base = frame.register["x0"].GetValueAsAddress() + page_len = frame.register["x1"].GetValueAsUnsigned() + + # Note: NOTIFY_DEBUGGER_ABOUT_RX_PAGES will check contents of the + # first page to see if handled it correctly. This makes diagnosing + # misconfiguration (e.g. missing breakpoint) easier. + data = bytearray(page_len) + data[0:8] = b'IHELPED!' + + error = lldb.SBError() + frame.GetThread().GetProcess().WriteMemory(base, data, error) + if not error.Success(): + print(f'Failed to write into {base}[+{page_len}]', error) + return + +def __lldb_init_module(debugger: lldb.SBDebugger, _): + target = debugger.GetDummyTarget() + # Caveat: must use BreakpointCreateByRegEx here and not + # BreakpointCreateByName. For some reasons callback function does not + # get carried over from dummy target for the later. + bp = target.BreakpointCreateByRegex("^NOTIFY_DEBUGGER_ABOUT_RX_PAGES$") + bp.SetScriptCallbackFunction('{}.handle_new_rx_page'.format(__name__)) + bp.SetAutoContinue(True) + print("-- LLDB integration loaded --") diff --git a/ios/Flutter/ephemeral/flutter_lldbinit b/ios/Flutter/ephemeral/flutter_lldbinit new file mode 100644 index 000000000..e3ba6fbed --- /dev/null +++ b/ios/Flutter/ephemeral/flutter_lldbinit @@ -0,0 +1,5 @@ +# +# Generated file, do not edit. +# + +command script import --relative-to-command-file flutter_lldb_helper.py diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index c53e2b314..9c12df59c 100644 --- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -26,6 +26,7 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + customLLDBInitFile = "$(SRCROOT)/Flutter/ephemeral/flutter_lldbinit" shouldUseLaunchSchemeArgsEnv = "YES"> > localizationsDelegates = >[ + static const List> localizationsDelegates = + >[ delegate, GlobalMaterialLocalizations.delegate, GlobalCupertinoLocalizations.delegate, @@ -90,10 +91,7 @@ abstract class DeerLocalizations { ]; /// A list of this localizations delegate's supported locales. - static const List supportedLocales = [ - Locale('en'), - Locale('zh') - ]; + static const List supportedLocales = [Locale('en'), Locale('zh')]; /// Title for the application /// @@ -220,18 +218,17 @@ class _DeerLocalizationsDelegate extends LocalizationsDelegate Date: Sun, 10 Aug 2025 14:06:56 +0800 Subject: [PATCH 204/206] Android 15 --- android/app/build.gradle | 4 ++-- android/gradle/wrapper/gradle-wrapper.properties | 2 +- android/settings.gradle | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 85c96b8f2..d7745311d 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -27,12 +27,12 @@ def keystoreProperties = new Properties() keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) android { - compileSdkVersion 34 + compileSdkVersion 35 defaultConfig { applicationId "com.weilu.deer" minSdkVersion 21 - targetSdkVersion 34 + targetSdkVersion 35 versionCode flutterVersionCode.toInteger() versionName flutterVersionName } diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index a54cb9990..4b2d7c51f 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Sat Nov 23 15:18:48 CST 2024 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/android/settings.gradle b/android/settings.gradle index eb5952e55..a01a7e125 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -18,7 +18,7 @@ pluginManagement { plugins { id "dev.flutter.flutter-plugin-loader" version "1.0.0" - id "com.android.application" version "8.3.1" apply false + id "com.android.application" version '8.12.0' apply false id "org.jetbrains.kotlin.android" version "1.8.20" apply false } From 68f3c64296d73cfc1f3b3133bbbf8f031284661e Mon Sep 17 00:00:00 2001 From: weilu Date: Sun, 17 Aug 2025 23:24:43 +0800 Subject: [PATCH 205/206] flutter 3.35.1 --- .github/workflows/flutter-drive.yml | 6 +++--- .github/workflows/flutter-web-deploy.yml | 2 +- README-EN.md | 4 ++-- README.md | 4 ++-- ios/Flutter/Flutter.podspec | 2 +- ios/Podfile | 2 +- ios/Runner.xcodeproj/project.pbxproj | 12 ++++++------ ios/Runner/AppDelegate.swift | 2 +- l10n.yaml | 1 - 9 files changed, 17 insertions(+), 18 deletions(-) diff --git a/.github/workflows/flutter-drive.yml b/.github/workflows/flutter-drive.yml index e5432d50c..e27fce756 100644 --- a/.github/workflows/flutter-drive.yml +++ b/.github/workflows/flutter-drive.yml @@ -52,7 +52,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v2 with: - flutter-version: '3.32.1' + flutter-version: '3.35.1' channel: 'stable' # or: 'dev' or 'beta' - run: "flutter clean" - name: "Run Flutter Driver tests" @@ -76,7 +76,7 @@ jobs: java-version: "17" - uses: subosito/flutter-action@v2 with: - flutter-version: '3.32.1' + flutter-version: '3.35.1' channel: 'stable' # or: 'dev' or 'beta' - name: "Run Flutter Driver tests" # GitHub Action for installing, configuring and running Android Emulators (work only Mac OS) @@ -101,7 +101,7 @@ jobs: # https://github.com/marketplace/actions/flutter-action - uses: subosito/flutter-action@v2 with: - flutter-version: '3.32.1' + flutter-version: '3.35.1' channel: 'stable' - run: "flutter pub get" - name: "Run Flutter Accessibility Tests" diff --git a/.github/workflows/flutter-web-deploy.yml b/.github/workflows/flutter-web-deploy.yml index a6c0ec235..b6482c7d6 100644 --- a/.github/workflows/flutter-web-deploy.yml +++ b/.github/workflows/flutter-web-deploy.yml @@ -14,7 +14,7 @@ jobs: - uses: actions/checkout@v2.3.1 - uses: subosito/flutter-action@v2 with: - flutter-version: '3.27.0' + flutter-version: '3.35.1' channel: 'stable' architecture: x64 - name: "Web Build 🔧" diff --git a/README-EN.md b/README-EN.md index a230e4aea..ad320b8df 100644 --- a/README-EN.md +++ b/README-EN.md @@ -66,9 +66,9 @@ For web experience, please visit: https://simplezhli.github.io/flutter_deer/ [![flutter_deer driver](https://github.com/simplezhli/flutter_deer/actions/workflows/flutter-drive.yml/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions/workflows/flutter-drive.yml) - 1. Flutter version 3.29.0 + 1. Flutter version 3.35.1 - 2. Dart version 3.7.0 + 2. Dart version 3.9.0 ## Precautions to be taken. diff --git a/README.md b/README.md index 1f0989b9c..fe7db29ef 100644 --- a/README.md +++ b/README.md @@ -66,9 +66,9 @@ Web体验地址:https://simplezhli.github.io/flutter_deer/ [![flutter_deer driver](https://github.com/simplezhli/flutter_deer/actions/workflows/flutter-drive.yml/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions/workflows/flutter-drive.yml) - 1. Flutter version 3.29.0 + 1. Flutter version 3.35.1 - 2. Dart version 3.7.0 + 2. Dart version 3.9.0 ## 注意事项 diff --git a/ios/Flutter/Flutter.podspec b/ios/Flutter/Flutter.podspec index 98e163395..3aed58d35 100644 --- a/ios/Flutter/Flutter.podspec +++ b/ios/Flutter/Flutter.podspec @@ -11,7 +11,7 @@ Pod::Spec.new do |s| s.license = { :type => 'BSD' } s.author = { 'Flutter Dev Team' => 'flutter-dev@googlegroups.com' } s.source = { :git => 'https://github.com/flutter/engine', :tag => s.version.to_s } - s.ios.deployment_target = '12.0' + s.ios.deployment_target = '13.0' # Framework linking is handled by Flutter tooling, not CocoaPods. # Add a placeholder to satisfy `s.dependency 'Flutter'` plugin podspecs. s.vendored_frameworks = 'path/to/nothing' diff --git a/ios/Podfile b/ios/Podfile index bca813aa2..4ac67eb86 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -platform :ios, '12.0' +platform :ios, '13.0' # source 'https://github.com/CocoaPods/Specs.git' # source 'https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git' diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 4d06631d7..07dfd4ef9 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -366,7 +366,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; @@ -391,7 +391,7 @@ "$(PROJECT_DIR)/Flutter", ); INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -457,7 +457,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -507,7 +507,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; @@ -530,7 +530,7 @@ "$(PROJECT_DIR)/Flutter", ); INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -565,7 +565,7 @@ "$(PROJECT_DIR)/Flutter", ); INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift index fa71925de..6057e504a 100644 --- a/ios/Runner/AppDelegate.swift +++ b/ios/Runner/AppDelegate.swift @@ -8,7 +8,7 @@ import Flutter didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? ) -> Bool { GeneratedPluginRegistrant.register(with: self) - let controller:FlutterViewController = window.rootViewController as! FlutterViewController + let controller:FlutterViewController = window?.rootViewController as! FlutterViewController let versionChannel = FlutterMethodChannel(name: "version", binaryMessenger: controller as! FlutterBinaryMessenger) versionChannel.setMethodCallHandler { (call, result) in if "jumpAppStore" == call.method { diff --git a/l10n.yaml b/l10n.yaml index 03ea2af6b..f3b15f7dc 100644 --- a/l10n.yaml +++ b/l10n.yaml @@ -1,5 +1,4 @@ # 文档:https://flutter.dev/docs/development/accessibility-and-localization/internationalization -synthetic-package: false arb-dir: lib/l10n template-arb-file: intl_en.arb output-localization-file: deer_localizations.dart From 665758fe6eb7791542507145b3798add99a2a3d8 Mon Sep 17 00:00:00 2001 From: weilu Date: Mon, 18 Aug 2025 00:01:06 +0800 Subject: [PATCH 206/206] flutter 3.35.1 --- android/app/build.gradle | 2 +- macos/Flutter/GeneratedPluginRegistrant.swift | 4 ++-- pubspec.yaml | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index d7745311d..78e82a9f4 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -31,7 +31,7 @@ android { defaultConfig { applicationId "com.weilu.deer" - minSdkVersion 21 + minSdkVersion flutter.minSdkVersion targetSdkVersion 35 versionCode flutterVersionCode.toInteger() versionName flutterVersionName diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index 700bd2c03..676d9c0ac 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -10,7 +10,7 @@ import file_selector_macos import path_provider_foundation import screen_retriever import shared_preferences_foundation -import sqflite +import sqflite_darwin import url_launcher_macos import webview_flutter_wkwebview import window_manager @@ -23,6 +23,6 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin")) UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) - FLTWebViewFlutterPlugin.register(with: registry.registrar(forPlugin: "FLTWebViewFlutterPlugin")) + WebViewFlutterPlugin.register(with: registry.registrar(forPlugin: "WebViewFlutterPlugin")) WindowManagerPlugin.register(with: registry.registrar(forPlugin: "WindowManagerPlugin")) } diff --git a/pubspec.yaml b/pubspec.yaml index 156b2dea0..3ebccfdcc 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -23,7 +23,7 @@ dependencies: # Toast插件 https://github.com/OpenFlutter/flutter_oktoast oktoast: ^3.4.0 # 网络库 https://github.com/cfug/dio - dio: ^5.8.0+1 + dio: ^5.9.0 # https://github.com/ReactiveX/rxdart rxdart: ^0.28.0 # Dart 常用工具类库 https://github.com/Sky24n/common_utils @@ -70,7 +70,7 @@ dependencies: # 高德2D地图插件(支持Web) https://github.com/simplezhli/flutter_2d_amap flutter_2d_amap: git: - ref: '0105ceae' + ref: '2f9657e4' url: 'https://github.com/simplezhli/flutter_2d_amap.git' # demo 用到的库 # 刮刮卡 https://github.com/vintage/scratcher

    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 wQQ9oio>TiiZFxRw3Z@fksBm3j{d)(e6 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%0Aa#&*mwS?L!ddTo=AX9RFGK;x8W-ld*zNn$ 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%0AZ>V{z$ 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ǗX%YwUpSo4tRDt9By(n@cSbA8$SsQYM{jw!V(`3R(N1@XR#rXS&B zqn$v&_?5f&U)DTbkC#8c8ih>--~K8@cv>Net~_Q2IxoUd`v;UW&#)X=Akvk={^=ulNOwa5GU;#zvv6_8Lnz zuVlPjET394!Z5=flo2E&?l_6!kXkD6BLhde*WI)^=vI*vgf zlSj8qeJTqj>Y%?gj_BRn(i#k-cO2Wp7~z4Yh3IG3fKKd0$oeLzhoY4|50RL>P-#srpXoU^P23{3qjc!Z~PdEwV~_P7MY0l zH41cOFF+q@Q-sr}Z~U4<#we*W=7$^pNYO%C-qB1>0AEd$w?mk(A)|$Z7pjrgp^vM@ zB4wABzjEq+JckJV8%xr{B#M385Y*-VXNqCE*e=PXQPZr4x-GFsKU@QHt&cGzp`6!8 zZ`3TPzngw<4HF_|dD6LlVhixuQu}#7pPluq?(duCF9^8MK6Ley@ZU908qfiv$rD8G zPWVkTbnxGR@6$H{_ur7Q@JFr~JbVvCSg~NkcJ&IA9`c_JSq+8!#_T5Xbu{RAG`gB6 z943EttsBjY<91BPsGpax?QY6zbj)T>o~LcE?Z1xgkXq#6T1t*}n{-rL?Dk5ou9sgm zdZlxs)0J|T)qRLhJ|s0?ApWxBfqI+*Lr0hc&_T4bg97RN?4Y}aa33f>%sujjO4~Wp zkK)jbX(U^+!?%%)e#KrxY|CcRCk+2F*8SCOFDcCTV?e`Mw=s6>p|77@faz&D5zQX| z)a_!^-ceoBgR%wZ-6~u9Wfpt;kvo4c*AisttroddWZ^8K!wc%wuANid?Yj*t>l|#yeh-S_W8DubFfw8NFs7lj2n^hWzG| zvipw^%U`jTch}#HscAD+Z_w%4(CLx)D1Q;LcDsj?Yz0FtgF(O$S4apcooqI(ECFMv ztF5W88rD46+gKaJ)uY==VVUUt!-Z!g0dFRcT(c z&xRXqGVl>cB5g*HAx12{i%bU(8N*0k)bkQjNGWJ3MhY?o8WqK`pz^mnGyt61XVl4sL$S1%U8DF4KSqu>{%3Vkz zEDPkjjAxb=g9wOpu>ss~+7XjV&JwkylAaD2sO=G-Rgm5h(@uav-1vzyS`w%z5wpag45?f~0VcX>@588o!USadL@iwDc&G5VljZ(3K8jKhhI_Kg zeA+Q$x{bREHYUD7C4iNLTd?w(9A*Z~Y4R&b208F8o|KIJXo^}pz{om-GsTh{2+z$B z=&oeAF%xg=QE=S=oP@=7{P3(b+wk4Br${%slw9uWy=CJV@Sl%ZrLOiv3OGKyE94RT|l9>dR7PRYU20yklL zK-*<7DgouAirukHr25IKeuQ`imeqcMen0#&1O5-fv=iCDxqbYLuR5J8*=jsdD0F7L92n(%syT;fdNf_s_tpQYBp%W;n^h%0F+f|cA5|L zjcuhaLNU~0Lj(g;VyPiP{=QjHiD_%P!(5E~;?=`Y^}QS~zkY5H{_o|O4xpMB=3bhQ{^n;2lN5WKp{9IPfd_(-goJzVK$xpy4T*L}MaVa<_J!hFK z^ENg3M$v8+(3HbR`!W>CqI}e%N}5}q6YJHLrHWqcq2$iMeX} zmh+$iU`8|? zZZ{l+Lo}oycEu1Ci-yF02qsMX9fk0fe zSdO^XG+ybaa_Ny}v(!?Z*9z>$7H(fqk_yAigEpn}+&~m4o<}=J zcs}@!Ag-GF#bL(%z{@juR!4=t$S6$Ty$&?faWnu;7;H8~)M;kpDIddghqhgxb|_0l zc4O0(iQ;$W0ui0?hD1SWkPa6+1WzDHa0w8+ zx^m8A_wDX`?-<=bVt-g`uQ}(BD(pia60lR$jt?FZSr_rI9;SvOpjZzwN1w<*AC772 z;}quSCzg~i`kV{BM$rAKeAuticp6pxI#W?N^?n!WHz>fZ+2iOR?FmrOF?jv4DdX!U4=#+P^?MX2KySC%o;e1d%=*WSkI)WDklY0|a7R*(` zx|6?)0~OazYhKM7(->xI%j%&>%*;0-18jYxKEhe7kmEK~@J#BTjZs{UmH(ENl#C&} zx{mn@uCQ?kIc5CfF=Z(Ni?#72V-%cT*{j5pI`^3bpAchpRZP2Z<|So7i1{n&8d*S_6|;VJi4@;B7bq}Bmyeo zO1syt*|bH8Hyo<7i?}g`62henB&?l~hcwEg8~;{pxz1Il`?-O0*&nmzJ5Hot2R1Qbq3kE1Y+EVL%v#ti}eCA#B@~MF?i?_Om+p7a>oz_b%V+C(VZ<>5A5QA+(`l#D(Nts?U zgH@>&7>iykeRSPcwsrl+R`m?)IKjqT6WdliYqN5(Qh?k}y`J2rkWQwFKw+T_T9xp< zQXxAss72hleI9R8p3$LpH+R2Ud{e8{uA{nlj7j#e(I=^8`*__^e+iZGLTaazN4J^2 zri-7rh4mF<>85AVYtAvs&K(9sao+D;jNn` zO>GE8rSqZYcE#XNSlc9=`3~~c>hMQR{D-3Y^VRyF6jjadZQtMEv)|tW5Lo`Zq#7Zi z3*@Wy{NXVFe+YK4l=e%VkgUwYs99%U7~am3UX9a=@G}lE)@d-`eBV1en7tV87X6Bl z@cC}pe8uOtg&b^8i# zN8-Im0(uHu8<Qvnji=2OCi6zSy ziY$v#vD^$E)?EvsUP%yBi5$Szp{eQnf8m8L4wrLAg4vY`XxgWOBzLPUojII=xbzA zX|{1JVSA(*(|ld2n2l(_2~iVUUsVNaR7p=q;r23MdU!finE)Fh^n(`TC#4)?1QgI9 z&R)H?E`#|%o5qTcdt*Aay_6r~nrmVT*Ka^6h_5SiIy03lPAGy*JBvg*_pSwb;>eN} zMc)%F-`d(D#pvjfm5_Mt-q!h2^XIGe0;^5NTL|*is=)h=LtE;`2lCZAwd&xW(wTmC zY9kl+|Mb=R6{U2eQCnchx6YS%fBWIJvG?wM9e0h_(sSx{Du1@(TQ3O4hqc;AmC1mj z@9{l|Oq4m3z^Ma@3|ie2goWZL55uz%<-S^otq&lD0`3ZXL6bp3b-N<%@35ilO|!t8 z!@;D!I7r`+p-Rb%nI#pmaB25&Nx#VZ4}?MKS6`EIcSl7RJjR>FO1(9G6W}n|NmK;| zRoe$8F3)xcA{Vja!^e3KqxC51L-m~jsUF+u^{RFqS`<80$viINxrs^7yGI(yJxMea z28H}?kJNM<2`Z>M!9R`~*^LAbihyWE62*JcbjDQ!b_u`06cw70xiBL|k$$CG$K}?% zK?-UmWdhlo1#D+8Jl042MV z555o8w0@gH3zLss)BK5XcGJX)m8G2s8m8E}6OPXV4hks(EAexUz()j87$iJ*9g^;! zP*h@D%P2P*R5@KTi|^QSAHXr;RdK=XYAa)`PpcgQII4rd8g#Zn_)f z%rc#GV!pamj{Fu9yzoK~X1OUOeEBK+G3)()%$MSKFGpqikBe|FuH|+KKTYU6mVfZv z_FHdN9O*tBO1|hxU*MeRvv#_Efmr0Ck9DC413R;)qOGhyLZR|671;y zj-YZsNceggq2in9S9?GD?)54m{yPJHymEV+>UWrdXAOkH$hCy0?6|n@pEER0HBH5A zaAGe%Kl1(t*1q~x@GP99XlFxV(cTefzC1lr6HK1G{_aQby$n}*-X#RzkE=i|a&ylI z@BX&PmDL%1V;p{5ntQEqH{7JR20wlGNCd|Ysk~lSg=Qb9^gVu^d%f!dzg))mJ&(b9 zdeQ`{>L&!1vN1w`@s#Y>{EeKGpbHa5rEY>!s|sI64R=Nked~ns##&FUAL9<>pJs+~ zo*&R`?$n9RDd)~Q(8Sd^24GsDf8m8cQ$-=cvA87*0PL|Nm{ZWL{voG|O;D=Ih*~d^ z31r3ak~qHd0%F1)^yblO$Owu|P_oFN@1O!vxcmsnxswWzT2w9d=OK7c0Mbu^JP$|o zt3b4!K(s3cj0DmwRg~GqAfTs+Djh%_;Qc%Z83IXb5`xw0gN5jHWPXOJkwNRto3``| zMqCHjS*w(SEHLq)^y-m{=aE~$s!V$6;km(fS_`3$I)F@50(Ix$5i@iaKHY9mMAUV- zOhh75M}RV&PJ97%R(=Sqb7)C>CDMx9PcVJokl2QU_hdd3e;c#Mm~}`8}bx%bf}I>WdU{JI1NI2U{LVqlm-0If=Eg_ zfUTzT}tpFh-t_qh|`&5>x!uokqJ045s% zh2H>qFurLou0JWE)*>FkO%N*sWNZei4+RlCfFQpa6#R))x`{MiiF6r>3>}F~Yl$om ziEQ{uQ*a;--6S5bBtCFPl0Zk2;98RKLsFBgwfR9w$L=jdno0nI+g<;z+@a#AwzVP2l%BN5Q~wj|K;NxJFZ|@N~EMa z=Rm3!Cuz=NGOAeoy9GQ;e2l8=G@W1{9q1GSHHm{&fIB_2Azx~`S~RdAO=$SD0C^go zTPmVh2690Ld;>c!dHQ?GjQl{z;7gC%#1P%V`b#Wx6O`#pnJk5$)ySXKtee%!&lBdA z)!C8NosoE(h7*91jX=&lXamT%!7g7DY%9pdbk5drp+kVqd3%MwbQHQw4_KZ^(+Q+n z?jSd!BmBk>kOjZV-L8;C-vLP$a78o_7xfEP_vcx90Elw$B?H=AEJwe&OkN9pZ#$>K*ZbsH*cW$ zW0535v8Z0Lgl(~6XR$JJG3-vZA~|`@CHkvLiO!>nc4Y~BX9??Z3HN%583B8%dN#jl z>1ZTw`B(sOKJI0#)Nwt|K|a=npv-CA|04mMLsZ$P$ufI}kP6%!b9O>wc4RK^@`%iG zu48m`usN+#W^sadapGfn(qnN7L51|OW27322}7yDV}&k3rIA1-vwUT~ExOy0m}_O( zC*-o)$;!IU%EtA|dcCS9hVV#Jbe7ISw#h2iEsaxf%+B)kSCLt76y}w?K z*FtTNd^O&aN^fTa{!}5sM#Bg}9fd6I7ls-d{YE;U#xuMWKehVH$41V{8mFLIF2Y(K zuutvh^>F^Dn&g36wx_0u%zFKxx+lHnH1B3f#)_1yIvAh&H&4yVge@fuO-?~{nAR=o z0WEq@rTRWC22U+Ugsr+Ltp}B5e1`m}jx zwfT0n`E9hNG+05CwTHZG57Tdt@M(|AY7afJY4M;98^ugT!097vCNo8MPot^fb%Gaj z@vv$SDDcYN=rG<>W)pAOzS7N5zz}Qe^oQ^4kOz=+cR5=D+08mcDYQ&Nfmu^-4Ow2i z&?Kz^UFkcW<*-;u8`vpT>Z2#r?=3s~eKZycwUT#aOB6b*eL8(%JW|uT4M866;Ib|_ zv2M-9o>wm5b{FhF~UEBfVU_JM~5kszO2b@8m-FbQ^ML_te(F-^lo6_S$_*+WnDP-gC{j{57 z@)#XtG`4q_gWQ^u@iD#0&O`pCV@};e5LqSChY2MZq8gLnC52Dsmv~fP3tOuO0Oaiv z_SV%qa8`g(B;HY5Gix3lyTf;Y+j_W~dO1A(A!J1$Q>IicghTy4dRsE-zDy}QItow= z*2F5B_QlhAJMqIA-SRt}W|^FzOaiC*q=?a_8e%=CVF;hM#+%Y zt2Y&Gj}4HSf$+&*zH`{7Gc^lVET-t%e1)W7>v>pcvsbsdDEq0BTL4q6MhV-nh!XHj z0p}e9AbUbytYHDwSrvz1A9 zxXNROvUY+Ef=APP?}RYEz5pU`r){Si5KbG;i1dZ7=P1QwaVj_T>)|HJzug+HpbEF2 zGXOJCJCH#;cYrPCs~y$AZ^EA!Tw}M$w+T#czV&YG3X$*q!WpZ32SgVpVv;R>S zgYohiPgVIV|JA+{Xq#_mJAv^4N_d&!6Opwr#<$Nv+WBHI1 z_fd(rGyYRgQQX!I^#(`7w?OvplsI6@yCZX#5}c~4Mv^ui`4dm~lTM?PtICreqZ4i9 z1AkMLTd4JsbJH>9)6w43@!8YK?bG?!)5UG%_$y?3&%EU634Z1IfbXEujk8V93yBKzep}F&!eQ{E_&o}e)e9_srwZ6_LXe!5jC7C zex)b>v=^y%1~X6tB?3Ta1uVxA6vGkBnvS>1_yrAL;(r7XfsfD@E|`HzMCd?BO9qyS zMtdKgF;g`<8tk$XylbH>kl_Rjd?nnIQokwo8imwLN_gJBY$^)y24 z3aTb(`26Pf`we}>sXF@YdzIVUeu8r6Yn(bv>~CM*uwJ4LG;2I>i_cm?e70hQH6M_n*5=t^lskIZ`Z`$`9Ti0uD<<6Q8C%fX$8dK8uo_Z|1zs_ z=WM6vwY%i^gMRz*w}h)#iX>}_5hz7qooGefB0t)FU_8}n zu$;){&cbncSL?8)o_&9Ewi!kFhOLJYgG#=K`YEniM*Gqv#06o!QU}((u6{8u=%u?+{U!g=* zGqFMWT<%CDDQ>O-|A$RP_8*`9cmryBwZOWpk)MlAzf48*h}3x3cwT?_;3H$4`R>D9 zSILE82X%jXIo0hpLbg$##F!cR7phP!4rzR+w=gp7^(o^FPj#g)Buq0^(=htSLMUR5 z;ctVe@T{Y^i-XvPg9Zs%ndIOTgYvP|EJ_3$X6+EAfgfV5g$8`Pq6eAf8%A=qU=mC) zzd>n4jUvPkMaC$N>bN99r7lqg(CM+W&{Eb7y9`6oanT9PT_c+Wl~*e`D=ygY$&WIb zGcAm0?NOG@G%Oi3%}(n$M;3RxNkkA7HR&@(!3Cxc>_ac}K{HFYmwoGTLKujQlAm0%oK z*6sD`hnitZdsHgEUqSz)g5SSfI|{@s}F$Y;cd4fF zQR?8KFc_&boUEAbm%6}oVP`niNp`Z?c4cc(wDOCeRRp-=iVX*4(MjmM!!E2`xKb!E zTfD6}h3ax#SiI+eVV`8gg_>Jmi*YK2BtF(8$@l4fj6+{EM!9wTxy{I2O9m?TX&<>Q zPbCp$$p+;Ff6F^=+ags|yEUA{XY%4GP3^g!w{{s+vL{cdH~S3A==8>#L58))5xG6? zDeKN@Z*x8$`#O6gz^D}T=S%P(`D-OosB#2%D<66K^qp}89bbhHc4%yKJcTr&_oqO$ zl9ibM8kIulOepYBm7ZhE z^mSgj69N}X0)Hx?JyGfKB$lK30;2I?St$~{VdKC88*d8kUcW}QcQ6=`elbB-f`_yc zjz4uJPEKjI18Rs^-I;D=CT-J(h|nBE`Z-dA$!_}brO{bNgLPUnJus>OYIILSiH_xm zLjWz14_Fq}&Q^Uk^u)=?ZCuvdEgBhhp0v&!=l7lqap%4T2TG%2 z=zK)4zZ)Rf-(r^}hng$!IY{SI0del!{L#GXqwAC`zfe58sG^+$Djt|R=jgveoP#KZS8R}4N@p;AepMN=D8;?* zQcB@k{Jpews!6J@AIeTJ7<`pk)as5qSV>o^;fX`JKhiBxv|-g~FHa2+QrcB@GK(V- zg=7&v;)_cjbFk@J(CU+Q@@*$K6pbk!NTUY{eHYTmgnQ20x?C+6jB2*~>}DyHhBt00 z4x7WTUMA0WKq=#wX7P(X2EVT zCuG)E)lh>zLGQZB8zpJtudHdu~n9!~*xR1u{gh^jun!0zS>ZD?_jPAsptk+@@ zKW)4-eq8z5YfW_V`L@gWH4}yNntR-QonUft$uy@Ic(IcQ>ERz*GcTBMi+OLs*pk|v* zN*fWxWiz*&FfRqAS{5Gc3qBa|ms)<9ug0HF)}4jb)tV!T&}Et9=a;#2&HpfNC5Ed< z!ETyUz&}PTIU>IhALdrft!OQ$y}p>ngIH+4^dVYRz#?>1ktFcl0Yi3_jeT$PtjvZH<-a!7rr}|JKd$Y0OFC)_K-ly62`PpkjvsSG& zX~YhSWtr;+4LqJ5Q%80l8ynx?J=#Zv99_~jhBkTH(iU>g={{s_U4(gb?>lUV3Vzy7 zJ2&s#>PfKqTKWxX?RO8HuoE~4ck?^ZsAFUPOnWfz=8n|E?;&d8t3K0}UBt-tL13d( zlxs;g{6wDpyVv|r@q$BRTC=R|q16ZJt9z^}Y?GwT*AfabKRQ_Wr-_wa$-nyQ&mgtW zhLR-Z5f%S@g!2xkrg4RrVE7?%$h#Daal;pfN8y{&8J&lQRZ3aKA?@MiqxOtZ`JrdR zPr zcOC5Z3pMs7tchwg^~);^08cv>p~MFH(9vPrFitaZ6(erbMR8(4C11qMPsB8e23&Lp z6bJ`fzjquy4Xp6jzJ1F@_!dN_D2`i9J`#+S65Yi8P=XmV*iqE`-IKNdMEobR@VrF) z_LNwJz)*wB)B%ZlejHQJaulnTWzIV^ZO}ax&nHyamD5kNIicwj)G55Dk z`zA$~dNLk+L~h0X>gnV@OvumXGA@i_a&8q~$(^hwbz_Ves0Cvo-H=5)62&i=P^MO@ zc`+ReRz35GsUiv4h^6sZ$r}G9*1+O^Ohl+4q6z%tkrzyqIL(PrB93%V*%?I1n|T@6 z3=V}N*#eXClw_ofidgi1b|}o2tm^2)#ffz?xdA?Te9Xz8L4_sF^hn8UWyL%t^Sy=5 z@-GzQ#ZikQ;k$H{2W~kr!2gpQ|q3gc;*V;K2s=yQ=P+8 z-AhwFdsDqPQ+=@0{aDijRMUf8(?gQe!C{uQum(b7*8bVTW#(Rdz`5 zkeF=@MwvTeq{!MCPfB|(>+W!kO;C_8=wW~SwVG9{eIuk6eRo0W00xJm_6n+=cy?sr z*7|*xzJ}T9LT4tSzI{O5_@Q0v4?)QlUtqomz~Vse8_bCRjgmtud4JN&64!?1rltz^ z|0GJNQmr9G3CyZ-6cgmW;Xl*M|ElDP!qZcU{j|~imXKPL{uKmm9cE#43mCS5(pZ!< z3d49G39zuV;a7d95{9qNEZ{|78g7#4Zl$fk5Sf-?cO1I**%=41OvQ1OCN$}jv|E{b zD_8S~oSS%?YW`=VG~zsYOIp?3NG<8oWb<3ipLU?vVe8UtG_DF!TaNd8VrjzMl@ccI z0vmKT#0& z^lE5XX*&mMLqZ3sS-CZ$(25{sg5i60VY=;GyD=elTjAo^sUz!?SxahTDV(o(qi$8HuiONe9pgj-6t_ z=k7yUkXA1}4`g@H$iXUfml)Bk~ze``Hk z`45!5&-~|Z9hd$0eH1CbN2i85torjYR=xd`slL{LyF-AsczI8>1byUPQB%z1jUX=5an@j)DERK9*B zq!R<#q2&JhFpq)Qr)La_#A!gds72HTIEaq?RH-H$?tvVbMu(;M78I!(Q}~=vj>jN> z6~%uwCA27w%fvArW%TyPO()%7D7i-m9KqMWh!TosodUCDokUvXySN#hY}%ELNGy=r36cX9SQi#xMv^w^*F&2qj8I!z?} z4?I)zn`{}3x>nx|kY;Q-LNZsTOL^LkKu{dC0d|_^_>pozTeGCtL#j+5uH+0<&@ZOF zz0%ET{sjN_#oUmFV!?|8@GO+CD}*SS!GRmZH_`f)vl;V26wXCH8|jw_a!aXL3Xa;^ zO?}~peL1&l$2{kGV-eg!`790cVq)e^F`ZI{)ceWB)IXM3IBG60yg!!M5WJoWWsiTS zmxJ48v&h}bWtA$`H&VZp@VJo8xE;grGc03Dw^WiBGic$;4%XzdB^z;@Y7apyvF?`Y zO5BY1wa1!He#rs$?@z$Hk8&Wt#9Eh`Dx)K5b?alG8j8}P5rTqF5e}r1_eoC=b82-I zxvV@cw%USLVQo_Ht}%V))U3bqACZ8Wso8esM{$V=I@C(Cv*m|qQXfuLAK8i*M6D$Lw zJSfEUuz13Tgz)MFLd=J87CF|$Gy^>nPJBCMKaLq&qERx1hYtZ8*{OBeoHoeAQ?srz zP{W&;Y{3~*!kL4jOPkffk`G`3(HwUo>BkaqQcRn)|htyD=h zFV-ZG*i<*H+GtMDvYT0vV!x>RRkoMtFT|CGcQp)aS*~07$ zEjhY{>pcQ?J4dL)^Cga?|XSlNQIAoz&^|!M%{i2 zdKuu(V+_H~0q=75zI;zMrvA~l^$@7{a5{C6Zr$}_(g_B(p0GaKB=tSTxBHi6zu2Fo zQC@~)LURSs6!`~=`I8g`>;(GJgyD`iLkH!g)P=6JtBHW&dBiy;%lxUT`yDWSi6zXHG{#i%Jk`8G6)fo&O zL189!2u=lt>d<~l=ZxZu;8KemCyz*NkL1`5lW~qfgNe$%w}>exD$$*sAghh|CCzve}7l#fw2}RQUWUY`7e^pDt!H0%I08nnNub zo19Eshv$|jwt^2ZPbWRwF1>P3cDASbZHRU^BAhrWmXO2Gh|a@9N9#Zqb9t5Qr2G@4 zd~T8+17P<)O2@jBl{n+W?9c&#%gHj^0Z)j|mk1#+Ucf7zgp=iX4rqw3EWYP=2w0n} zW;9{{2JmoC)Y~If$12pIX)WPSl zn!xh%((%u*HpZvg;3E%?l(5znjl`Gyh))~7#u3jKpG;5lIZ_-!4TaE#H<}(JNjGC= zA>)H{1}2a$_J}O^xgilJFwD7=e-5&(7l089+gLtwlNVF?#8R2a(AKfCUWUR!@iYGLq7_ zBjNoCji|PqZ$r8Ezu+95Kho~xJ|yLa|MzvB+DfKp zgkRF*k!C3Uh~zFt0>bG5AOtC`YJre*zWPBBEP1AGV8PqUf~6k?i*E{{p$c&Y@;?sX z(hvaY^#H7y0F=tYf`LLT??PS%05gLgl6(=8DLg!MF}x`h{r;40QT4U%AKi;_I;%8W`9Bj4MBp`KAYvrXBn za+MJ?o6`hcyzW#Op`O**TDvR4&+4wW3#c}Kln*odCRaOyhLpy&0(^hVvCy(R|1HP5 z_&yX3CROR}erTJWt1_Mw?p(gREOFoe$=>_t%Vl4EUij?tl$A*xmc_NAp2i6S2$S;}29#+s{;qy7l zL@^7&%gy6K*JEg!=)*!;ND8#l?CJB?V(llbf6`G+LYT1zq~bEml~|q`BvUCH_}Ls} zWX49823yh;Tgp2SNEV8kcG@He*(u|F$TcGVI-d&z?QJGej5Yj2Hs~5@nJy~s)=E!L za8k7pdD%=g2hHmUPy(|SWK)E!o1w{wq{Kg8Mi{BLSdbsJzi!U?2$oC0fy_E~RgmsQ zVlg81=!ryfAzflVwbrMS+SLkgP~$ky$!XKPG~-$GlGguk-HWfU$p0-P|L=)rQ{90p zn1)j_yOgR*Z0yXpNxk9ac|lJc{X?EC}0 zLRoSXJ314(mySfJ_gsd7`<#FkCvtwZ^R*zBaLJum2F2~hx|b)dNJP6+v?>eD{di?z zvGc@6g@pgCy-928^u#jPM?M#2ud6o6hxhq{leo`nx8|2}?%cS?^PE=^Bk9Y)7vs9m zAJ>xF1Wq@?=X7j$Iqg3`Z1;NjdEo}dy*_!0p@W}ac9E{nZr-sbogy3=w^rO_O%y$A zW5R@$ctY2IYoEvIPVYzawX!i$GAgdU01gM3JV=Rk(qh8Gt6Bi46cGIz!{FsqgGe=z zACMcxkKE#e>6dhDt;WSy=u`s%1Ez0Pq=iv44?;1achSHi(h_Um<-##KOnZ#jhu;p= zM*@QivC3pe81$~94#X&MPB6rwb}K`@_;+!}WK(DpuVUsvqy*$a{kI^Xznx|zA^i;+ z4ZL-TGnL$S&`sRy5=&x2m6f0_6|4Ce_X|+iqFIx4=n1eU49Z!+X1mEX&a)1(9Jms$ABbvT(Wq0R{RR<%<8Sp zW@1pI*R}vMKuAk@tiyff+R!hs4v)$kC0T3TO7+!A9>y|D9jB=y?FIY0ws)VHQZA1G z-(E*uRi$d(5V*#VjIJ`P$xFo3858`c-y5dv)qYyz*t~MIz~&-glCAW~u#5WLa^=nH zxW~x$SUK7;MHtCgAKlgJ7}5vp{L$t#tE^=)q~lx7;rj!(q~EC?Oj5&$ehpG4E;t^X z7&&Y~ZxxeZ(a*)5XOxZY=m2-hbABXNl)=UQrn%zo;$zH5`XzY$^_jeJpr_N=224Eg zBHi%2u-WKuyYErQESkkqXG0;~QpCa;24VQ)MK&%AxLD;exdXI_fX%!vX?~I7#8^<1 z;sHn2!?d;X-;8`0q_+{lqq`tSspT0dKc_jK?36Fl- z7ZZ5j=1wYK8H8!*EMq?6r?FxmB^zN4yQbR(+@;RJv_iR+RmXZIc1zouBzqqw`<0r* zt;%{wMoSK6lJ}KO`5{eVAQdEm{E0uD%@8K59IgnK;!~fl{W-nvgT$Trr>f>cY+c61 z84)WLP2J&N-1wb1>tddPP+LWx#(WmIYa7^9I;b-jk3|hc+(U2lVKU3%=#w!&1$cCs z*5=6;P@#KA>f~Sxvqr3J)Yi8tz>W((3Q4)uMz%Hem=lf3Z=uh6yUO`f8dSc3m0+4K z{78$hXngGMRMfpvviyD#azBYtHNaij*}w20#kF&n7WSzOzhVRN8?QgV1o<;T2mCr9 zOKg+61qCo@cym|=pz#G_=>!G?y?BDT@O2ysRs)Id1J4fw$q|FzsBu#01QGHDF+>E> z(h1U!2T}bDV%8z%v<_mI4d%5DW~2+|zYoH>4;IA>5$6k$)CrOH43SL_k#7%CT!lU^P^I-yt+0b1#ydhMYGtD#2sp(c1?W_)25I$>6xVb&4sDCuGLt6}PU&a|P9 zj`u7Y!8mrZQmN{Mse=|c0XBM3`CY*b$~A(Mr=D{5UvJ*4^WoQT!9BwRSux1ano*yMEpWklpeW# z9W|~NZN3!g6++S3F4axP(rz97w;W6JI%+5)X00)1`aal-%gTv7c1|aj=gM$)oMk~) z1LRH+f~Z=(81kJ5@MD#v#ya*VBF<8J+^H<<$!gpsoy`Sae0GS^mh;qxh?gY(5fc@4vvZve1yZt52)Bloc@_)3{554 zp$0WF*UWB+IWQD?TJ2!X)V~*c0rbfSpqMoKo~UQViBo^fFSkkN#8{-|0%z zgOX?(#BDPY?eWQEj#8ZP(_HwaMR%#S=+iti($pgf>1+U>tM=2%~DWHy&q=%GkZY=8xcC(7K?2eR3-DECu-Cua=3+fp;YZ(&sQjD6( z;Dq#CoAmm~blD6D>J2J1&3cBWitotUw#?|p&*-#wC#vMYQO&m_Of>IKthB5?#b zkyTt}&(lLNQr0Ve?4`BLwTH~JhrB5MRM>@Vp1@o|wQPJzRV9%27YR_$M3%Mz|?ct{_T!1N1|5S8t~EdH_XLrS z0Qpl!`l(!cu{gXMauy6Shm`;jZM^^;yj~7D&K~r_oU{h)BVu!V)6lJFbp1}uUMu~? zUWg7k?*L{K5v1uSzC03>LTP%eC7CHmHz?+7Stb*O z#g`@fNGgSTIQi>z$2KV4l_{)iRWkTA>iOB9ZQ1(DfrX=0TO$>-$A-VzN+vog9UDBU z)oR$UQ|APPz9bQRaYa|yEo_R)2}j1NATL^Rsm5|nIa)VV87@!8uh=C}O@vsHifW&1 z>rWW~ZK`DlQG#XkfRf6}^a||zM}?=%dZezJK7zEb{B^DiLa5Q29H#YKkJZ_aiNKSR zRGVsrzy%|_n!aidK^(+~E9 zp2)`I^=g_Yl-lERhIiSrjKY$HP3#Iy_O?wNflWVv^`8rBy(j8KqSMUYi3k+8NW5z@ z!7nHFX>liSn_XrMFUwn zQZ_5=R5r>n2uY3Xh}-D_e9ct4KK0;)c8#hW)~M+13f#RP+AW$E3+!^BXbkwS8rqW@ zdX$Q2dH|LecJPLQMP~`LID_Y4tIPvRlwCTop^Nvb9i^bTZCJ0YtJ~?Swv8>d?Gj~~ zv9qPBQO8CkVGJYi1Oov)Q7ls21$Tu~Yl3pPf&9}B;drAL z$2SPMA^Y-!T1#;l#cb5=t+B;bk39PrTETG5_2}ZxST7-t zHxrq=qU=`0C$d@#3vpsARBh5FJFB3CCk+~pS!Z3z> zOJjmLX#(lZI7xLr{8ec&bSw41n1?TM$GVdG+63Twpw<`f*Z5S6Jy~ZqEdu{^Uy@m4 zIezmrX?3GaIC)(ilCcF$n;z<1VMZTx49 zc1h?+$pRXM4C^D+RM{2!jREs#hFPqFxs%N~i{ZIfqIt-PvRAYCZ^d~Mjv2%)5EparYZ1zE90aZb|Yduj|J5~Sbr3IXLeIsnTS=A7ggQp(=I@oBc_5$u75nQYP-n>qwTR*G0)(wikF zXm{j=FH2WT`f3XpplZH_C0f&P^k4W!J($rFJZ#QWmE_Ap>??ji$Odpmai@jMVL)PM zA+gBX+MHg37-$nc^Dc0CT1`-4aK)uy*`>9kfUt zxZZTgU9E)Kr1UkdVQop&CZ9<-_!xOpM5NkB|8>!3GBJij2cweopuHCAgH;tJql*wcH~Y=)Jg)hJ_KxEe-^ zPWWn7&-Gip7A?&Ax0EY5C=#fL94rJ!>#&zLHD?%B;4-2xAqoi;@-`N_qf{TUT|o|q zpOErKO$Q&xuGPXf+&E$Ua{#pw0YmR@Io*%4h21&4AG@YMxJZQg;v%nleh5+6GGfhf z0(T3jI9TI=-KdzPwLqa)+&L>eB_ke*Z90{6OaU~A$Y!6^dHXhTZ`)!|ll)-6xXHlx zAVh%}DtDjts$g|z-?AzGHTr-*>wwVW@F&rZ(T)n6HFHO8B!{V<4fv{w! zgsPP~6K7iihWCf5m8K8@0^tfHWSvGU9m$B{Al~Kn>lmV(ga{Bcz|bU$?e#MBmh`h* z*6j^H>OE--m7d$LN5)eXI!DI&nhxhg**{>RLe^>NSqP=6s}Id5pk(8z+^xhL@r`EJ zlkFMEI_+D3u=#tk?)JZ3^Rp1;&M4mG7?&k47UGx85r~Uf*1+q@-?Rolr`C}?i zrSH!=?Qi8IBqO`Nq!-|1n3fX=tIVA*iUQxJ7X*-|D+q$@H@-XLYK^Z1kFFJ(YT?5J zcEhQ>TSrt;Q`58EU>XLs85yj23eDh_%~hiqQO8XsjbgDWKV|{22$eZs#|h(5upd$q zrM+>eB!tnhOC*XVxh#`PP$By*=5;KJL|FF7eHk;ek$ru(xTCc=+!o5h%%_r$`6Skq zNHu!o2E-5Mnbx|h%#v$5pgf<{g9FG|nu(kBM(&ekB0>&*LJo~uXGtNcUeuAX02&u= zfn1>6|3%zecGaPE>y|i#Kv)ZRcXxLS?(PtRy9IZ5cXxMp3+|BM1Pu@*xF@R?+55F~ zPpeb+R%=!NVSX56j_2teSd>KzV^vXJ`u`1U{{IF!nG%7>;#H{b9iNM4t(KfaVwK4v zngr|mV-z)nn{|A(!I@E&V= z%l_rEUpbavR*SZfjk!&N*?2j1#4tyDwCM$rPyh%q^#|zGPaPY+H)yqoLa4EI_QbHr^gknl}l3_ z&}XP`+vIRs*|d(k!N^G(P(Q6SlC1H*`Sy}kDyQ= zh&8nh$M-M*$Q=(luZmx?s3XSunjS)Cvx)EdKrC@k?_)y^Ks~$}ro?P;<}KaD?0Wdj z9NQ3Gpgs%KaT-CWZ4h>e-XmO$8|C*k3ipxwH{|4Bta$~8_@b8$64l2E!UopVwy6U~ zug6KFch^03Ht`>=Is{EIue}#GOgO7nL4vBjY`;@!%|jPFh(9T4#q9Ct@uMl0yV}L( z{W{HH8x5Q7W^s9fBe1vvbjk-S-+0~Gq;u}?&%+Hg3m=j53v=lhpM<29`iO1&{<>d$ zDPk7|=w~W_5?`!sm8rm){L$%&%WYS|QAs3e{AKrC$&$s^PR$3P??w3)N2FCptIIl_ z+N*QK_e&EI!l{`q9{r1iMoV2ym4&M8!WGm#U{g-SiRkP4HZKR2Zlju`7|bSM^3J|> zGXbYE>!WPQz1T)ff~DsBEqRuE!xvjQA7?L7D8&R`vgSH_Wy2})1eht8( z^oZhAeB?UHHvD?KBER5e;-dOK3`o3VeACmBu+sY=+NZ-qXGX)AD`b`V=eWu*Z~Ha> zZgN(TlGL-PQ~aE_*2mNH8eNZgK6nDM_oIkKG5D@zjGOK@Qk<(>*DmV%o757s9iMa3 zzir5E8tG&4DWcXcHxrfpu!_rHXJET;U;lNESnc(E)BCCW*`Wvq(%a5gFy3<|aBCQm zPo(!9z8~{%%`r2+++PYFF4DbMqa^&_xn2VTgu0QS?jyXB`H35*P=R07(hs7f^jn@kyN*4@5@gpHguiJhd;VC@IuQ%FE zk0Mtua(wjWi}yfqb?dRfr(RU$9i*Smp&#bF-y@VSHl!co3gPZ2!sj#~+L$Mdasc={ zjqo9WI9-bfGq8~*kZd4;99srb%l(~c;Q4^)O&NyecYin*e;W57&jC^JcQ=1)5X?>x z_g~*>QWA7y0z?opfiM9r*RT@hda@6}xh#At+-Tr>B>ZRJ+Mp11@ON4`j{!5lm>ZRs z8_*&g0_7Nr>=OKOh>4|K5q~(CD?AVmGMHr`)R0@m9UIk!8Z`}G=dO*%i<{Zr9V5s> z*hk7Ef*at5fEH%fF3iQr9anA&`2{U$3>al07&0crDJ7icPL#1i^g&7y`7*)-+YZav zq>>v@rDan65LtUfV9XuK*5L4MKEl#CvW%O4tIVX`LZjs)d0#kS_0D<39WbgDM8Ogb zgpUFaM>G5v+Bp!S>c41?5YTA##_9`(!T@A4*-{OKpQEtZbe0PLWAvn=$k!WZHBL@t z{xFgK=aLH~!(WQ{bIJYSgd~$(keViuMEmEGo1+N6+8~n+p{&mU4EbeQx z0FRzgEE7tv>@9*U*Vjv~pU(8_=$Y;cLIh`1_qGDU-qOWZIW_E!#=nJ&mFs9cm`rE0 z-U4fm4rlYl{#kO94Uz2yFD^n}7| zdn=6C>k};vV|SSi`n`L(_ecf4%^7Su7}2` zs8$_AM7M=lRN$Lao;9ngDY&tbO>cn?IAPG+jP=5y`;cCB?zpS6uGDoR+G^eXaay-b z;qE;2r?B=xS7~3@!5UT5joT_y4m=)}!+>!LH%n=qYZ32+n z^6^`)_aNKljkX5{ZtYJfb`SriIVu-Ge%zPOaYZ>uH?Muw9G!Qh2KX^P9Tlh9Jsp>q z)js{GZhIX)M;V__o0sjpQVPC-N6+s2^XGpXJ;$i({$x|Vi;DRFTg}n$hyAqI(GyF; z<>@qu*X{XY)Np0vDyX&h2h*?Ur(fC&eH#lcLjVvleE*Y34JNcmK4i;X3v8%-z&j*e zXtG!KRy^CA_I$Xcp*CdJX+J`w0x<1-5Ot90Q=4z321di!XU0UcC`|$ah5Yhp3vav$3z0^sQZVgYE(&i?tCGi)+RcrAb3sF7RIPz5vMeb5)Sb0|9;4AY z%tntCcptUNq2g$skS$Dl45YfdOgz)xU!vxbjv`i;YDFvFChzDD0g5N-LKh2D-igbV zz6tKdmZIN0;8&Hb4iaq0P|t>y)O@;1>qjbO4tpIvuhYlmN?Fs!r_6Y-Gv=a8*~_G- z7pV&}S6;KJmN;sO3RWB9=-flnf3vsBc$dd#+&ZswE~3l$4{6$==V2rx@eKr!oIpiv z3yU%}!QnD)*jJ^dfq)G(Q)LfqRw+0?X&rBdG83ZUq_vvJmSE)a(WKM>+9%q44mHukouXS2rM^;vfZm#ggq z1EW)1m2MzRgk>#5jZ2a2=2x9hEh{;-=53fE+n#A{+pu=-U3^ zS>qdDE(jz2WuLRj9b~Weq5Lm84v=yt7nIAxQvwa{>T+8Rb_@f|W)9I<(fUW2(ufeb z^&xchdiXyz5e4t+;#jIVx^Z~yr34!jlcx45_&UawI9U-2?&4_fizg(=C`78|(4-YI zCegi2MF`)RWhLX7CCXllG~+{Xc6op=xtwE*_0b%>@SkTS$qq8Q_}c{93YskXRYC6=Gx&4`DLLSj}*&$s|&W!GGQemA4sK zoiX4PkL(;zFO%V=9N8oi{4~Lai|y1FX|2 zl5!@7q@u?J2=X=-ZGVGrR%+M~*3zq=ZyitbfpVX~-w>f2BivwYgNBVkCbCB|u{C7< z?XHc=LtMQscC~ovyG(5Z0aC@UI~o)hja!1cU@6(c{wT^(IsF;rb`V|$XTq6_y)Wum${Sp(v(Z#`1!-(JFP zpd|8$_;0Iz0=j0)HsT1XK_5PUvt2WnpEu9&sb97~ziSd&N$BG_YO}AM!xNu+U}En) z7Gks_>pp1tWIixzDP-)&{K21Y!0%TYI%2!O_`Lr*R6q-5z-*vDwQ&H0Sb*avUzGBI z?nak9N>?XUYke{+&CmeC>yPSYC|#0vV1Yn4To5C65R+CAyL%8@dJtwTfDwUZd znr!=fA+d5l53%4mDjpLz%!xAf>-_+&h2RKDf1i000c?m=s*q|;Pq<4z{qPW2V~@eZ z;AUeF_J&|nFiWc(r`#>XkQzXMDr;6A>T@q5&l0BQPN@`*=|0AX_}~$i7CPP#7D$a3 zTuw#o60Tbq9wNmX4SJxA8^aV{2~S3#jL^ch){4M*p!$s#k@*n8aS)M@fLF*JDXbi+ z&t_ig%;Owj2pbeR3LV7-bT193Y1E2pPmk(skLq5D>V1gn52rRvhoi&_<2FEcM=iJEp54CO{>o4mx&2ie?pCeV02n(=m3qDE6pa z;8cqL(Hvkq7khI=V`mY3`=Io5h21U%&@5$IhmHB19=D%tEYL&*lM#<`8I5R(hqM|G zz)3*mNkG?5I8%!aVvEP@NcdEkfd7bt@|eI8kRTtVNZ!FgIL_0z%u7X+IJK0>$U_ar zZ&jp)=}ILPfs8-WMI=EPyXLSYL60T!SKxy2TawzCg5x+6mO#ObWayn_vqM6p&w!zJ zUL_thCgb>$Kqpd25dkVR=`>u~V?0b)G>{hl2Wgy)aQB}BDQJ+42x@Me1u0QUi8YQX z(1U315oDGTxGt95yQFF2j;Y zJOt4^i6+MBgbiuz6q)a}GfO=(%OBOY(lb*VGKuFis*m~d+L8+QGA9Q6Y0OmLy{x*-?(f%_HM^}qjQmjln&%@yPOeuFR`;a`KHTEw;o#a}C3KL`je}mRZXwvB zONfdHW-EFO=nYp38YrIWxIwq&!}$^GG@Qn!h>c@Pd~&uJWTNbn&7>latJFmiT)(L? z?aTrmlp|qrj!_duYb8U4p;EDzqU6D*B?Z3Lwb7&hBLky}}+)w$dx5}E_ zGA>8>UFqY;A@ifJgjM)ut|pmB>942Q^TubWIqE)I&hXVtIqQ>wHj*dDwlHoSB;U)r zILh*QmCTiM{;D#6kEY47Bqe=}{Z)^u&A7!6@vy16*u^I$+!$2K+N6?&Y{l>aZ@qQh zW!bh(Uh|u+>MG$0NM`br#|gpGM&oaW_?=AwhKJqa2<-OC8|K(#rbJCf=0r=~^E#pB z)uP8kPh&V-yZwjJ( zOH9lF{Z1VB!>xO{_6^+Xx}N(tYib?+;Z_*aKh}w|y5CQyLbo#Db%F`>ax(<)`|F|U z=C^PI{G8u!h~V*GP+)87pPy`_W{a|ZI8J(}chTEo#MFPRso47&N33Hafi@TXm?vO) zQakOe@rbig2N9z5NOoacsU87bbpsk3iW{NNf~#&< zkpXtmMfg}yqdaSuvF=kvg!g0bFP7&0wU3I3;ibnKU*e)e@D1OgjgRFjH6+AG7xxj; zNQW|91%_9Xn*#26<=x@}bLkDK>|y<{^;O6X$xx`p#wRp7o%k}mKen0B$V!DO={8rJ z(pZnnmR2_eqU(LEaiU4lk3Ec=A}y5;&Y+daJWRtkHDmf5HuV&7l-8!Y^t%*C@MG-f zEDW53Mm^DSkRl&~)Yon%QXw#V?qY zL~@P&yu)TZQA^6X+m96mINC?9!_tHd!fJ^#Hb#;@@0C-f*b9h}kNtRQ7ZMFjizqpO z35=QGs#~+nsii)I_R~V<8oN4ckL3))a-FZFL^LmQr4mgEcj7znIspq%N}5=TBewrI zXY;yFC{g;2qRQNR=&jW*KFxCJw~Zw!Z3t0Ajo$tx7PS7MA&~E(;~oT34+n^@?NwONo*}- zWWaPuqcB8%#_F1~<0Od{F#716x)xSGlMTSpHi0!s7X`Iw)U{97*nOJR%_wg9@2sh$ zr%h(h4B{H(`iDAPJahWHwsmxjAk#GO3Y&a}{9^5BZ!AwV|1pm$EO1(_)nB$I>?@_{ z=9Ri_*O_kJ(^gck;{3Vf7xg^f&s;|5ymTs%3PgU$fBj@P$}k60$?YKOf~#(XR_TpP z>H*~KL#abQJV}OACo-%DU_~3A zf);5KUV2?89zn$RglyS|^oP7@88e?+uQM*Y%>~LbX8rE2Ga&^mMA|au!Z=;BucwX# zxpcygF{Fw=B$hn29+T3s%9X-5TB6K`g8iuMwju&n%J9OA1;14)`D%Wsv^^~qhqhEG zpIK?FdwyxJb*=sQ%Sz|^>1*e^ySh(jCnlq7D@}r}jY-p|226NV+FM%99dc(@y3ck9 z6L&3b(`R;G&+FuttnH)n=T2GA8%GLloy*hbZs1_(MQmI5q5MzJ_2;dJnSaTX`p%o7 z!SWuK&JkpY5@GGQSPFA*9G&_eLav zUJp#&4;ftk)r-uRy0*-4N-M&5fPCe3FjV&BQt}(y>)3nwiixARMG(Y0zUFg~Z1~a` zCGbRq^y{vIDB!Fw?N|tvuj_5d zws`0Tg209k7R?C8k?!}~zw&?M7{IFR4Rte}s0ss}FfY;`5uBm!zFHJBM zW;2*e$8c-6fDQJ+X!jgg4vWx;{eev%9d6Oz2Ke5r^sPPiFd#;5KK6+o-`VA zKTe`8vQsqHS`z@FZTwVDdnXll;24j#6VGoP^$RM&E-8NHLjn>FL8erKUQ@hMQ4H@u zLd^;)X+}cIyb!i!B7<=R=T0;fNsJIl!i{QTaB?D&bSyi_1BZ6pj{cFySJO3G1f5lz zSpWx}rz2@d-I?4mS!y-;s7ZwIIC&44qOwY$rk$dt&BJ60uA$*+uBI#w1Q|&an{lO1 z3?`dpq%stz+F0T`s-x=Ru$8GL+gb{8i4%OJkyvX_gN97ZXHA~oNn34?WsD&4(5Ca} zQR5L!a~(&s&=!nXO^0+&pCL(C!^jZ%n2{La7}p^XWr<3B9Ee$#fjpQ7Cz1(|f%|ae z(`=5LI0q=V#5dH&%F)Jb@BrRnW66wjRIvL|7X(2Jro$Wi8Kh~07o zuoyJ)pmrUj&v!5mKH|1%qc2+m94*mcupw4)lq*3vxKq-Y{S|n3<$k`(SxN=2kPu1a zjwz>aFvct5XB(B)kF5gd-(7T|!gOHXN~dxHbKi;Q4=Crjo8~hlC_Hv#ynD(A;1;0r z7NF}CV0O~6uxCMf7T~Wj+O{YitQL^+7Lw}}QhFA;Ch#Oj6w*&H($Y%&(iTc*BV+I+ zpwlU;7a_9@E<$cDD4E9+TYASeQPj6vGyp8zXUpSrgp$1potw|W*oA$&m?8BPAzG6E z09QgYpN~>djO+*pMN;y`xVT@rWOuKGeFs*~%0XvMPc8Djp%K6UP$rIuq4xt2NnL84 z3Gj-?k8UKz%a|i(25k6gJKHN5i((@#A=N%-&@d((ka8DEQ#SoQ=p|!lBrl- zC{?{L>x4CXfU4vniM2CT;{7iNnOFU6{{Or|>0wj&Lj}o^%dAQ@7LO-U|CI%j4JR}F z`yj*ZybwL-5HOSXmki~opB&x?72o7lhVris%G@n@jGZK;`n6iOt|Thk1Q~CzFa27r zlWf~f=5vsSD1kp4{F4PrCVAWVOSZj!C*K9R5SduQUTicByg@}XfB*a$h9RrPn}r#y zpA{36lS6Gh0v}}1^auOdO=2rQyr;}juGMR?B-?crP`_3J!$M>Ud-5Wguk${qqG5D1o_DtDNT2j#oH3@iDz%$BC~7%u#TxnG9;7=^#140MXK- zu(Y_*ltO_j^0Q@ys9W<7$uvO_ERGvjPC9MX8%f+llc@R8;|f^$iMc8?NNZq2JEbgI zBf9d6K}0q>Or^*at#wVQaijZL>xLD&b=!8M%udZt>LgVhduCN_FI$bH%;~Nm)pJJI7%KQTsvf~>JFj#b= zZ`37r<9OB2{;OK|xiiCozSF-?T1o^zw^=+$rVh-OvfQuqE^UgSv?y(X4LsU9F@u~Rztcrmns#NWG|`LjW_{rvs+2DNMt`t@*F_x~UZ z^w$P8l@G@?2G-AB1QGvzkjcCVrj{!}{I`RQxzrHu>p^C!;N7Qx9Ay5L1(K30L`@s} zD+^>p)X~ZnPa~PYJhq!`TYHqoZ7G5V2bn91`B|bq+0q%YKwrFHYovTT0u!nLUSu2L zeb7>Zvh7R6!IczFVZ%`D+l~(mzgOaQh=U0~k%yB+43AD|)sY5!OOeBhj)`aPCn#j= z5KvXbi%+n`y1wj_LNia)aj0;c7JsEdQIQFCU?oXKm!g+`lb~r}p90-bqHZ%TtCzT+ z1Ur8q;{Qf25S=Xz4Oq$qPulfy!8*0crbNPw29=!lnmCyLfPMh!gTd0OF6iJb1TKaNXjY{LE%#MFTl9S1cm~nlJ%Ft zO#0T;;WDUhIz7!@O^tC^GBF?P=Xbh*(!}E0hR4s6JSC@hVJQSvLk4 zM$%VYT8>ek8TryopTVdteCn!f5<9p3D__Bp_!-wIVbAl?&qPu{K`D!zibIpw}*< z=F8P2>JQNsdyu?A=p*|Cvf;xJj`Y0$u53DF(eM!7zNx>+Mhl+DLvoL%2vTFpK4EGbUpH~UK22gHa^ z{IFa_U1bcEfVK)^k64+)WPYy9vH8+y*#cGJ)(RbYHt519*nOAZ4s1N9vm>3grD^k8 z>k;NMM_dCVH=#;u5*T&Mt9uAPx$KqMCwZrC?Qn+os5{#PWb1CvAaRS-3IGuMq;@&y zuV{h4l^#5322Lhi;dtIT!XLY>6@z4ey~gHN>Bjs47a9oT%Gbp~Q`u$=X{*zQBg>ix(*oFqYpjFreJOYu*(64qN@BIXADPMn_HHhvefEh#&7EIAldh!G9qFro>r@l$ zxNzmsK82xwns$r5Ywg#$l`8kUDBsR`l`G_#{PR1bE?UOX8fY&2ZWsl^8N~Yl?g?>EklQwjkc3Sgz1#`m!q3^I zC!+9shcmy>;!l2H*6{IHwGK^2P?;HmlGv|Nz?%oGyf6MbZT|AjzEJKMA6uNT*?l+` zjR}_-P`S|yT}-bo9mv!)P}~Dl5=hU90o9Tit5_0}W`UxY?@f{gQM5c5(}9SbuK4NR zH>0eTpEQkAg9hMTuNNGymI2SofZB^dSt-;Cj1YweM6(4}p(9q>bYVrQ5R5b~a|u}k zEsp1X^kzy=NLXI(`Cu54AQGq$M944(@-RrF;DiBBZFfGK70&~6CrpztX+@Z0B!NQ;*RuL_xYZDL1?YFlMzIec(6BEH`Z1i*lCXbbf@0x%p>PUl! z2rX>kf+IJ44!~AJNU1x+X5Xrg#X=Q7*4|{ z80AP64(&H-7**wh9V=1v0|YHnG1M>~lW9PU@R&vxQ=lou85L&z3i_snH*7%+bbw^0 z6kA$gBr{qB544A$8*skda8MG^?=Beg(V4l`J*E%`XO;tve7i|^gHz!w)^3j(3k`O%t#@~AYOFm+;fh% zX_N{H7b0}`{t7Cj$_N9bF2yHmCaJ>d^&Mwo?5F6_9$)Vnsva$A=>}N}|23LGtZ0fem^(Lvq^oPCBV+s*kZFlt{*6s_w#f zHN8iX_z2u^Y|+tzRFR#u_u_at<1P_9v`NMp@FJO#HyQSjS(0iA+aZ8HX5!Vs^zkx^ zH5H#S7e6Wa``ZP8zYi0aPqEr@@};A?mY4yGV-1}@?KW+em~|x z;O0Z|g7vfcaGv=W9T^Cn`9yA+wpiRqxCI3xp(`{6n6w(m&IM9bnYcRE_>mt2ieQM= z3RF1@$)AjWj@y9uD0;-acf6urmP`y_8OoQe25b`kf_(NTRHg~hB^nMs8L`l00jSF& zJ57eKJeYJi#qT?1cyYsrq|q_f#2?kr1SV`0WiaX1gmrN-X(o!%Z%U@jq8(`5Ob|;g zD%JMVT+C$(^>M9iGfN53%jD8ZoIJ|}k|j80R5l{OSBA1H%V;&JGMSVD8jtMlR`gT32Mo2QmFtai#Uo@zdS*ptXGQi}Meb8YK5k_pZ)LGgWvORnd1hs0XJz$T zW$jaCJ#JMaZ&kBSRjX%JduCNw; z#`k#x(z3V^Uo9)(18S)YYSV_ueYpV)+?dk11hC5W=p-2wz`FYDD$xLnTv0&dqTE?Q zv>lEJO+}5+Wey_H@COd?-V=CkB|@fNFk^*!g%0r@NbWlrF#Sm^7z@{v7cieGMh41a zT=@X3{Llcs!}xB}35pb;x`vK9*#xIdsp}dS{IfMC-q7Qv1*XRgh1%BjD=QaF)>q11zF) zY;#Z!_4fhytNsN17u+kc}qUKF+i_iDT&n^L?wio`lJ3vxIi+w@&3 zm<#JFcj|0(J4?MfjV4;k$Atz-JIlS4Yo9wCbtQitW)>LR1Kru$pDCJ;{c6h-e!zD( zo#eIhb@Qrq2ZRM`29xygp>^?Tj95pq;t1c!u!VtYh%)@Inb-Z;&n}$LBrZST-iWHPPFgkFTB$$N?QJmhrT=(t>(ppo8Akr z+@mYpN2^>quM7BH*cx2_qCw@Cu9e+>RYRHw7oQctu7&q4N6td z!EXZt3d;SWfxS0{gHJ>Kh&ux`;&4CK`d$L^ZuO5>QujfS1z4$#90 z@@9#v1}5osZUM(d2l~>har0Y8+^3SuE{6=YGK%CzOXYx{Ub=SXDVTP~6B@?UpeK_P zbW&`9jnzz{dJ`}t6V)kb-Sk#xU@?X)Mw?z(*g#)xwb-~ET17Q#-^++m^(5#!`eZg* z+i@4I^7LFZ+M2gA&B8R*^;Cv8_8lF0&I^_kKU$Vt(Y9QkLF3E?$qbImbcxE;yLPOL zXyBbU8I$s)mbb`m!mRSjjJ>gGEkD^+G}-|YmVC8fMT*WZS7#Vx6I&x77o7&uqzP0H zs{au|ZWJA&h8vm>>cxxa9Vhnl3jrCj=cY;Un=?$BUs!a==r|yKVKxF2sD>nz1;jpj zA`*T_vJM~<1KKL;BK!3mbsHuciQVj^uz(z@oa-W&>Hv*pg=~we9N&+k9IF*0CK)4Jm%eD_g9a~YD*LjqwKMDB zxJ*L2f;RsJj&0r*`Ku9&SExL5xB!Ohrr6u*`MXR*HRhofS-mh`A%Bu!8 z*dGFWgEupyd-T>fC?!KzVO1jY8AgN}ri=%dobt8TZKIt8`pjo7+Hf()8I8x7jrfgF10oPe9fL@&E$QhX6p=5O0st=AZDim#rhsjP zSb+PGBXTe5OH3V8!8RU?>v!GZX}*lj?2t~=uU)UfrLZ~ zUyh8FkB7yMSYw1fFpj+ZqBox3>VN4q6GR`9BltC{hFX5y`+%;i44c^7b8b!w|TxmRY#X20-b=qsR)0dwW#P=5aOJmE~+__P@6e00YA zJmrXqWpscL_+qd&={u{TeBle}{hfjJfiakVOAv8(7mesrOXD(GWbS+KF@v!Y57`%N zqCAv57d#;mw4b|i3eKu_+!S$NTYmK&8hD<7SlyvT&P$vQ8Rp;JHD7CdxL)7A<}BEH zN*tkP#U%H&!e|)ZJ{pD6-=wJ3lU%<-K);ge2*2y~fg}1UB)%6if36sG4n2U6NO`v~ zwf}?%%)9LotpiBa%qp^6p*!B9@?N?40ion4fh<=}_88WNM=YRmovV@9|h6tguWGmtb^qVEy$PN9{scGUSJu@AnMueZDz5NQL+w{6mNM2^AvRw)=W!wMk%@mKbLg$+@j+| zcmYS;u--zoVp$qWB2SKk>nV6+vivp@bItH!1m>Cc3pK^P!>*){qnaN6E@sdmY^=iA zMwRV>if*2pfe+b5)+mR{@^6-xhY0=mW)yjX!scPiu%4QAyuNZbVmox%0)`;pu$c~P zLTC~dJ6wjYf{i^U5m+GWv~bZC-rK=OPAA1dSTf!j(ZUrrdx1gEt~n|%QG66}RK@18 zis#Zq2nj4hZ$y4<^Wrxwu^Pn*Bsk99^@7Q?s?>~k-fIcmFpm2T#K=kH7GnW(&JL91 z8O4nAd|)k%Qn#>uIAQ>SrKlFB*RAXau~5;VHT21W*WT;~$tVsX<b_~y01_AJtT8iX{4BW;cCljA`&MCXh^TVk+myM%>Xg}twOr(!#1_Xy# zeTh;QUzypIjIH@rpA5}2;NODLZk%ZlI!AH;D$dK~yX3J6jMnixyXYH%lROBgi);ihX61ft$ zr}$NA2oaeo6zmZ1LCz{mtjzj;V31jflB_x6K#H0VwlX^#X*ES1W-w+>j>S>qo#K8R_6!CcMt%G0?3&Eyv9I_N5ub^ zdW_Y^|3NeR-|}oe$M*k3x1Xrc7=W)avaQu%bUO;A^nV2%{@u*}gKh_3V}`=f=nSU7 z&Fs;?@@)Sb^%#bDlGkQ7IM3FK>DYD_i+4ld-*FXJo%_#v44+*ILCxhBS<)wv5aGv{ z&6e*pylspmc8~Q(i?7XW!Gqho>$aFW(3w{}=vGtLh4hkYJK!(S;de8mpc0l~B5@-I zcoNmKgxg$9NQ3`Gx0jah{@O>rC7l7%`5{~| zfp}5_1|6Q%cHgaGFd#SVoz&;l$ecF#K}MZ6#zR)oH_iFp*}Q@d83Mx*$;VqZ+)mEg zjIK1xYqmWf6l3;Nqf|nnd33V`UVI^y+xD>72Gl9u!zq2~g@C8O=w~UFy%<2C zs%8$l@iaRfwBkg%l&-$vV~N8wtiBw<=c8~OB@RQX93xM&`E!kF%#E%E*JFe}B3*;S z^)_s3psnmiCdj2~ws=-hcGiF>){VnFkH*Ay2OL4n&7xABT-4&7Bv?(~rsBgfkL4Hr zs-{0noTZmPX<4x-Bls{^GG28T!_dcYzo8H-a=#fy6Z20sJ&~^BHt&i2zt>~p-!ne$ zCu`byfF)h2j|X&}(~rYh){>m7l75V9lmhbdI!6MD6V1oqdJNxAag(5zU+cH6G=@&a zVhM0PCeQGE@U@v8Zyp7%$B-#{UsvaB?lswn^;LiU8b={8xB4^6=ib6c2ydCM2e%*0 zR7k2&8rEN1(+Ym9LoE%o2mm>ms^a2L0u9e1LgzppyDK)Qg-)IW^kB9<|M!cNAEqk z84Hysi_9z^S+32p1cyu&v8~=J?S|AS@7g7WV>dX@wvvhz3osK#*F}Gn8WY83by8o| zBSje>lWe4jiCs!$;xCg3FJ?~ECLI!X50w_UJWUh`$_Pk?lgW~{AokoVmXyJ%Z+E>) zsgEw9H-%&KMz@y>!^_MC;{L0d%?kz{zSd*F&1{{ULhKwBezw2r zF?Ybj>0$24JLb_yW7Ig|wKu2OZbXsZ#DftQ))uI=3)oxN^Bd1D= zw3%u#S_~WVNVXR7A^InKI?6Dr>5IB~^~P-rdv2 z@NaZ`GOyGJmPu`FWEJANXB%qd!HL!I)~0g#8Y|679s4&al21QoEj?6q%0USnB!0td z#=6hxYl6dV-N@%x{&X9=jgjqGn`hF*+IZjHCOZI+?{$K#x$G^ktmimt-NutQ&phwD zwvp@HM`gF@a-u%L@Ys8NmgSu9yeDqbf8)8+wUu1XNDgl^@JG_Hw|{y=9EIA(q6wkrBFVV>oXqN2jhGef>AYkU>=y{HqN)CioB}Z|g@C zRh-71bkXqrDn=7YoFuZlOQxSfCZUfjV^pEO=Sz98>X^x98oHUqDtUmWa%h}wzjiB8 z8-&d`^dje8<9Bmfi_gF-U)mwcWeeoN%|(d0IOlli3jU35r;*=w=6_+uOOK z#OH@uZzP1LE%V|#muh)9Dv>L!41heXRkgBJ=9DI52GUE0sWD~aft}ZLXP+lBZtaig zZF=1^7+M9Baz3148|jvM>YcKP`ODb?%(J?KFNrQY!FzVa*-hBY`-FIX zRwp9V^_n6#d{LY;nv*Vx-@WQh8-a>xaK{K>QZzO64y!Wu4pYRe$KtHbASS77$auV%Vx|2c*gsOSxYEJU?TF}7t6 z_o91iKs<^y#=uSaeODI@n4I<1Q84rh%ocwBcqxi{KhT%LhED#puLzn7@OaLI`D;x2 z1F%5=k4a_!(IOTJPibOfDOf1Fww7$zgooH&ObKB|KdR_1k*H^{}&$g zU$Ort-j_14;ik@r;Rz8uCTW-H%~tCFw`0;+tnaJg=5*y z#>spm-|6B{4UYYDjv2L_Ov@Tf=E`@qo~^h40oZVzllKPQ!*&b*JHX~&E#f%nnVFuh z8_%?LSP(bx znCu*2Hl}9Yr@M;Jx&LSpm*+HNi_a>bmWzKY;!(F!D#?7eL{qBjgZQJoSQN`ry%2Hf zxU!`6$B(M|5fJT3b@NxNe~w8%PU`yM=uYd0F|AJp3f_=4yu0kVL!gT=tp}acQJs7Mb8HYTvAH&^> zX`1cbpBC|&P21Vsy2B`VOme~FaM^S}tobu0`CyLt9^$%fw{pt6*8~yuYV1aG8IbSY zirOXY#7?@EJ0^~1c^oh%>|*z2?`1ZI3WwP}N#}#Q9*=8N4AM@xYG$5JnI_Hw1)FOM z&(#%l%>>QFC%w-XsQNN5m;Y!HzXEJ#8!i_98T$tg%?P+8`@P2gu|kC(kN$*KuD>Wg zU%)?my#j26yhh-KfBnKbK(YUcIYa=01IPaFtUf%U5{v#05r*cy2mt&6*!({Ytr&lK zfv<;~xCpgboq2H>6Wcwj4->}ULIDLy4KE@$giEREiN=;Q;Za^js2giTSRi~xVQGk@ zC?v&f8~aQ(P#tB2w1G7wB?+LdkG7C2`rB|5;{cBRAO0DW{*L{R3O-%N`6Cs-#{T~= z>fVAa&vZ-E#$8_A-QC^Yo!}na0t9z=2o3>)ySqzp2<{f#B_z0qd6TNt-c?<@dryD; z%^dUmiF-Y3UDtVv;$Fms%NLMh0mmfXiyyInAizcjAwD<3Wsa1RYeeSrXIrv^qXJJ+ znK&h1anvJml`%>FcOk$vH$R%&xzvsBLu z3Xy{Mqrb+a=8MgfAsSLZOsuado3aH#HKgsnEJwbHAM)LPBr z04ZE6*G$G;vBBW11Z|-mPdR2>MrtOeV>oNHEn5!hNgQ*c%?MXJG|olu7!p}JjI-f3!C5Jzv)X*Fd}Cm^xf=w@q3w{)XyjY-p8z(o zHNjMw$>8t$dk1yw6qx0=G8|g^5Fl9|1o`O^kzGaQ-V#PEqpw#ur`phA)<&Ai@0@kG z+ptvCUN}|k5I)`w2_x0Th5Z89usS4cfq#aGvXWilx^IzUi`u{TAq^rCZ z1R8E)#5kLaN26oeUk~P)zva=HNzK|wRQVOQ4jsO$i?JtUsPwXT+3BXR{fMIhy4NJK_CdCT#Ac8XRg&HpjV$KSlq zRl8=jG&1+`bw<9Sr#eG|qo~0UG;|Cy;|AsPl>G5|cCx45Ki}te41xW04lV_q)qqMXdx-tCiY`m zoGQ2AqP=poe?o#gx4A|2G#(~EmZ*G7@pA9@Nyr#Kc}#YChINcEH~Mmd|Mv89QW%=y z>c{)+tV%{yc{L-?g?Kp1zwx9xqo^5!GR|S#SvarPUf=>;WBhoZHEGWm*>m-8RuoIe zf$#I>)1=7TAv-tax2tIW>k#KJKDQgP^FHvK!7oW}Tj9+Si^9B2bMD*N+K zvR+yZ(cd3|@3Z0j@h2{&#El8OD<0qXQr+zd)7|zy*<)`e+t2@6%ljEB6@&2o4KUZm zdF1o0dGej#_R3>+dL8l4S{~y$5f~OWDdYtd%hT%|2rBFf7}alq*grz0)Y%|T%t2GH zhnWP!={w}BDXGYfYXnn8G1_WWF}+C?B&i8pAqEwtK~`aPVbD5)nWb(jIJQ*%x3{ANKxV_R5Lu5u51w}%%oKQdmU4FI6Vaq0Qj-pXRIL1I) zHTx$TI(>B{9GL^*lL{6Oe$yYdydgnFs<5uSE#zmI2F=aExZvnn;_13!@#E5X&XIg+ z;v+##?u!IJM*!wDmz2EcMPklLCZ34QC)M*OqO#U#nbP=_Up1Pj-mDLPIE=Q)>bK(c{B-%@HWQowa^!_>>a_lCc?}ZZ zmn8BpONrTIB=Dl=7(?rb&bjscmT5WU({t)qvRD`jk|h63`A}88&nwvTr2fw-AB@Y? zo565E%7;t9IDc6leMDCQEr%KiZJ$(RT00H@yt;U2SyuEiPqFp&D{WvZbC4HM<$GOW zsZg%7_-Uc34Wq==y<9K<^}>P&1}OrVO1Hbzt5A`WYSCIs*)z}5HR?HzbY+Zih;pn! zord^2{Z!8kJY3rNv{ z`W-N5A-{vWdN;@&i{gM>_d4jRg;5R0Evbi8m;vTM#+y%lPp!_mG6!^quUhI6PO` zN9;NlVsfp%7OcJNbrVfu(Da#2TTcOXH-8%E?L^EVe)|6Y;}(H+pxoqqPu;B;{(5}S zs^SLh&~opKq+=vi|28Oy2M9kBALpFb_R!1n-B)RYwXwj+y_9&aJ{7RbmRx=ck%q{A zv)Cdui-LW-QfFA`8Ki9Ffx}F&Hf1o|o+NXUJnl=W{qIw^75RulJZ8X2`f_hIsWevB8 zN$my_eX2pLPPPboI9cbp-p1;^>kiB>_7} z-8c)s$7|l>ei11BG<#02?*-E8KO`=3DAU+yP} zhWC)cJacyqUNu=t-85G}pS^u~1pc19+?>QeWh4Xj zz?4SK7{VlwCcB09yPyh0Tk<6d_oH4y+Hm#F1p?_v{2{^vV6cIR56bW%0MbyP*cLqM zQV`N%kZ_4FV+s3>Q2?%cFoYH*mo%!i6qb8W(6w72CAXiNbf7ABh`We44X8iPc|fxT zo+Ngtbcql6a0s@eH|AEzTyBtLPms`Es0eo0aWj?JA-0Kom~=R*H4KKWG@2JTih?DU zCU+o>bcjltPsp%u-$K|qSkU$hRnR(gL@alZ$$3~yPq@KWsMD~2u}j48w(sz^SzOR{{(R;-XNbqfJO-{X`=1ut8Rq zkSah(R2?E;=fr~MK%P3pQi4Xy<|@>rSv%*31ReV3$AP5B`Bb{fy~Tz!H3|%0LW;UW zy^$uIY;rM?3XP=(e1IYS;vOJw5eW(s^X||~V>&Lx>MZfOSsw9q21erclsnzH^sho%#dcAa7{Ikct%M#%;d+=IJ#5s zzI=?*n$fnDj?qvFs@#Mla}H=`_V<*4gAI>mw+xlbkJyk>?9mMV{tfWePKEx$K9h5*FpX^Sne3;t3DQ;sG+j*Bx)}PX}370eM z?@Gh|>F|9d4dBxfQUML1+aX{In$da<7N{+Yb2|SIAb0stY(N4YdB@yBYPtvrT@q$ zx$ZrW3fJ_#*Y}TEWKuaNrCfsKnc$WousGpPb%8Z1+4m9IcRUgChw;Ywne|qp9v(Ti zBU#-wDYp*rYi=1XrBvAIIBPt)^v55%TN955IoA)kU}ST^W%J33qwC#2^hQuoCBJtd z@xNKlqd!J|gbjK<>s)@HM#Af)K$~HMQ`q-DjuJQjjaoXLZ0?2?Jdt zb&IRIkWL#mU!7*07Rusrby>3qQ7^oXPuNNC7IFN0ChN!kwso%Twg(7K$ z6lsJoZp<@o(5VfUk0Q{cL*j2mW9vo4#DlhBF5&0Z9N5lg$=6~#=QziU283ir*|gBAHpQMu$l$f6Ewt>_eGqj7 zTYcS{L}x%mjQLuQKK%p(Wwmvkt+i;CFdSV#6$5h?OI|Lct*#suGpwz?Tx?pUrQf7I z54GJ1to6-hYYa+T6H9YwPpevQJF7~2&n~2)5$eZLjlofA?1GMX)=tTQ4zS!#+t;1V za#&fU`<>x^ou3~&haACHqPmDAI`*TOaEA2Fnb8YZyY%99|4g&_(ZwwM^Y#C4;F#8W z)MkHPYx|y-)D@1V{szaS7zN?7`F*X;9tJ`n`*W>L!781`W-;@#i|NS<`%`ncCObv* zhvsm(9;Y+!@7LNJ-G*O*Tz2g8;PfzLEQ7H-%ksgW*MARt^ei3PRP~D1dWnfF1_LC8 zbkqHS{8#og<89Y{vx0K1SqgZ&3}I$Xfs7>@#=$Ee{rEmJ#B)n(sBvkNLwbMft{mek zvRCZnweef1=gX|>Y(Goyg~ok(86haXz088n`N3uPYTlC?oaEl?d@k5R-1l30+?{y@ zv0gO%P26t55U?4Tt39w86r}?4Ypq>%ASniKdYG$^>Pt3cA{GMS_4svNf8g=9bzpkdAfBZ`)g@?S5AveUIp!$4+%X-Q~vHc>J~Y{ zp{07cH2c8GOWG1NFNh((cTsf|~yD7&Tjm&}K0>ceZDDQg%zYg^;Ks`+D)YNTL% z(Vp*Vc6O&mo&Y@XXV190Nhb_Dkm&#nyEa%mU3<}8#lpizK*VZd{ntnhqej%d1$(ix zeVb~HJ6d%I`9U6xH(lH*(7NKMthS4N02aFW-Vo6T&5t0^A8Qp4obDaPurHIeq`}op z^+r%)=pEIOWKrt081cl*V-rDmvi}apytidjQ@=c5aoJV>B)=xxrp|NT{-9Uj`uK2alwe&h*+iGb z_XR74arO+bHpVAg2d&I6K17t%Av}t8+xk^io8MdJqlJ3sIb|*Xv)uR_A+=lLdD6%0 z_0)HS_gfi4C=V(D)xa($S8Utb+0bO+-Oa&E;myMjE_+Hj(JwB0Xdm{Y?T~OF3?Kl| z0AFZ{B2vZgKzv$Gtn@7v00-9}^d%Qkfc>x)CxF>)6r3bL{jfn>KQ34>H&w(JG#-WX z0Bh-9=kk~&4oy2e%pl(wGRLE+JKE?g1L_-Kl5pNRNpes~HS_Cs%tOOZ3 zMsa`BJ96a$slt7NdJ=E^JkI(EfSLVt0JM{#6#GrCmhUhI;mBV7+;W_`>V6Cu3Z+QL z$XHMd8cAzC2?J~HOM@oJL6%}WrQ~60ob7(x2g_0-E{W|=o=2ygIPqJ-Rc3rCNz~5l zGY8@|Fw+6f>M?%jo8<6;BZl-zR15#9^ zlabOGR%DGxiZ1)}!5up!RM(?A9!?tIvDaQ9s=30B(h035*VWX<7TN;ann1|~$r<;E z@sOx;kUs`_)c7Las%O?vdT^m^lnt&(vSL1L)!4yb(l`|cQnKDig zXg(b=Xf@4GFKL%9(jl^TEX@mZP@7e6%))JESpiO63zli)qYeSAy6<4>c$1!|>Aa)r zlPIxBr}bf6mU}<05t_CS31k}RimPXR=43~Gb!^4vtoiN1wvc$4#{aA>t{AhwYwI~& zX!L~RUKJ)vT8}Y#uDp*Uci&$V@k|UZ!!YdIBK2@tegs&9GN@mFsH|;`c)A=fl-gb! zu4{S-bpA46Xt(xC;8mz!!uGI#WBwV1v}-n}rr&-FJDlWdw1ApP;9X54WtQA|hgUwz z!raigxKgao=@#*e?Z7$4nF1QCNt;pe2pDK>BI1QnXp8+QP@EV4YSoN6sNjbn)6l{uW z+kR>emuJUxEmjuWk(z2k5Kr$|JeR`o>hn?8KBbX9F2mGPie}06UW>Mq;`?g%6NC9L z_b=ElpKS#teZh_1hW3BF$7roq&~kn4vXnEEmDA(ozr;FTqd?GO}EE_@cPNuIbB40n*e(&%s3R5Hq#}lx&&c0qH zP)vU_TX|eS^LD-i?{?zqSs!1Cd#%q4n?|0_dm!T|0eUjMJ5eE=s`t^LNLMMed-OAp zEZ+|7wnS4s-#76x!eydeu@Ufvs|=;iW6d{Y1!DUr6`I)xYJr|^llp!&FK~@gyAMk? zg*RQuf-;g!PvEMZcjOTq8jz8h8P36cpKjBK;)yV})rkBx8KZg+-5+bT4Jp|(pI=^e z`T3MYcH8DGDn2Ml_wSIMF@AM2$*{+giSacL^0F z?#|jfJfc90JqOgO0M*B8KoYjaV;UtAQiQQQ&C1rq-&s^NpBhzF*k2?xJaH!qj3uhj zUC;NBJA)f#s6=Og8+~&-!i=4_mkmuLJ~}WT{|PL5;t*xYGPs}!d(|Cv!`(efEGF-5 z)cXaLQEof5_}IRsSo(x0xl~^E9=aLv*fXH!a0z=N)y9MiP}zbey!h^Zm~XY&2a27n zMjAEUQu2m7E^9Up2?)p3rhx{1hvpHF{XQPIH6DLCp71`N7$0oE=j^8E&P32WNTXVa$4+tS{x3L zVDrxZUZ%SzHc=bLp%v5p{dG#5FA0o8Gi$Q5u&9mfoQya|Fq)4*Zda~sDER036B`z{N zYH49Wv&D8k!1Rh4TXEd+U~r{M7Y#(&Lgid)qeDLA+?8hglc=oFph9{Ac4bJ;WY9S@ z9Z$%tB$6_DOtY1*fbN}KGbwbkV>C~y&`FZikiHMoJo&+nxo772>?=6jyr}&VraTY% z!a6*BxCP=m1(FXoy+@p4vdn0%%yP#l{Z|DsB!yBsg;;?S8=*`(>3L|B_7=4?2yjvi zphY!}X#MC#D4_DLZs>yKZxqu}2v6ORg0yjOUMIC?c+GFLFW+fV{{%|N9v z+GUHAr;E!lD*BEwt8g7(qg8PAW{f^y=|E(~!(qwkR0Ol?0sWACiIoYURjMTUM4;Xa z$2?zTDfV?x4tGdSY#^6!x#Hb7go8m;A zN`18)Zymq~Ioxc%raUZ*+NABr`SN|`dEi`aW{DpfxXS0~C>P4x)^y~J zP&$`iMzN@HyH-|n*2@W+rdkX}iCgI!oEN*^>~vHbXMKYwcS-MZXM@U+!F@bwKF;r| zhWgmsoC`0<3nu?sFQ~2oE$|kiD>}RuA@?H-O?Rhu_wH)#326RT;~p%25`5e8d!Ekf zhCrgvJ*VyUcp~kR#&s07T(lJ$?9J^NLt+f{9hZ-oPP!;O@~VnM9cx#p`f_;adT4xl z=wkFJOizSJdYLlqC_QwVyl$Q9p(wX=NE{WYGEV>r?>10}em)j0j^++(AK4M42mYKM3$_$YJhNN)U?ZEa*@O=P1yC-m$%obkkhH+uOP z_QYvY&S$Q08-W3Q%4>X+O@7qU-U%vWc%{tAH?@;5Xl+cO6HRdq&+?Lp0x0L1=-~R? z8|G8W+vOiYrx4GlAo`~!uo1U=XIb^N`0Nc+fUlhst__@^n?3$|9T24O_Q+tp;#Qjw)P-h&o`qmAO%0ma1ePZK7@|WG6D6vDf+QP^y zP!0jWrX8mtF(BF=kn9Uc^~DOGIB< z+T&M25d0mPfzx+(f|L6AK)SY;CjMCW^@QHw8N^$c}GZ|sd7=7+3Jlz`I>6rNoq zOjjT79H=kKC|}8PbGj6{BfCf^z5|qzunI`m#RRQ9pF^r+QR3y#HqVX#TVHvR(5kym zVYXy2{ZN?nxy0LPK$(sZj6XLZ6=SG+J$*-^>%KTD%Y>{wONcqIU8q8VXF}yd#vo%F zcqe~u5{b$n6whb)F`51}1P_G~8HLCQ5~}u!rx8sIITNxPM^U;X|3m$(yH;D(rQUMzLvmv83V(0ca318$+Vwy#4j8a@x$ zX5Q+F>`0TmLEBjNxjYl>zKeb{6pRJ{`D?Hz{lDH&ewJnd`x9^5DLU^T8_J^bjDHH= z!V$>Mk^Oz}_K#rCuYS@j*ca8fsFmj5f<0CGsp;R>elth@)=w%(=?zB{yDt3Oeo{8Q z(7&bcQOexSN!l7tq%-_!j{HaPw%%p~7`(mx-5mM7Z2Dp`Dj)fb<*MhBcnvMNJImgZ z;h4%k*WH`iC*Xdbidgg;BKLxy8>D59HjJptIySuOf>AI!+?*^3ng(~4ci6Hzywamp z38oy*1bIMsIZgO>q;X>(FxV65Vxo5)jJ;!xwO;aC=H~Qp=beZZ7&e`7Wa{g9wQUT!_|RY2R#G2MsO@4Oh*z4jQkzk;_Jcys_>ItE$V2Z`N= zB{)sHU%^{G3V-}(Sj^yd=& zinixUy9RpG@wj5@jv_>G=uSg|M-ms(0=yPAPGnfE7fz>l!-FH(5~GbFIq^$nw@H{Hz-&|$5w zjvq0;Yms%=o!a}`IN_HAq>EmC+xM%2B^D#Tqks~G_QK8$fxNvf19Peo?dFz&5h|g) z<^K}QdlU~nP}dvN5EslGtrF(E9qDa{9OSctY3FcQgF;9P@0G8E@De87Pg?g07rKX#lH5kY=yo)edw!7`7f&(i4EvkDrz4tKXiu&N!1jLXX~i)ewn+z< zE`5n#8V!6Z+gvsv9o1vMZ`gs=fiXDxBx9?xh#c@1DfokgV+t>#iGmM<8s#DXGJn1H zOR?w0Wj3IdN~|AtiVvkB2Sy-LD8_Xv`0s+Z|GvHlWm!3V&mwpIxKwh?gE05ZnNrv+ zQuq}sTvj7#w&7cg&}dKESYwLPWt}p~5?;k%qw5mZ(lD^*3$*}Y4pI%s6Wg1kgz8B6 zEb81MjrlUvmYF~LNnH=u)&7VTMr2|WJqAM`LKP~0%o@=X^Co(BwjZ+YwMN=heUo=r zDZp#AM+MpIK|$>Lcu$sR(t-LO3I;cE-Grj55ee>GB5SwamGzf7SBbJO5w<*htLrnS z@Q18w_5t;}y$H9-@14i&0vhzBIBw~N#uc1xSoQPNu^6kaV`5Pnkb^7QM zdn3QJd5JK25Zr&hZfh<)7Etish-$o(GR?G0|sxIrM{2y55oL1M;bw{ zHuubX)jX4X=WmPN^=?H~NYF%YArXc25hB%wTR?9gle_hw@Hmpnbx^^RnRj8I#Ye$| zzeWcJd)}v?$6CwNVM@siF>RkmdRL^M`;H8AFQf(l^*xk)_an-{;BB$|9<5FIu*O7P z%2x{0;24)tqZ_0I!x^*vBoC9d5Xuy`gk`p!(3e`{*!s+aQyQ+>dwQF$w_57_EPN;T zlRg)3ol_7FW%gUS0vQ|f`tsMsb^E8Is@8Ig*^Z=jb@V)q$D-K?K!^<=W^=Mg3&iY_ zWfR--?SdFK)Ct&^veM?YE}f0!*C@fFWEb89TvsRo5pnIXizRq(KRU<6GuiYntb@6V zoZ_;W(uqs6Se=z%ugVZVdqqKh(&6VVj(}sBt*R?W7ock<$KD!Z6qJk+a+>xu!#H=h{up z`MVQ2i+NWtq4ZRvs8H0b)uDhJ#dvexQGmn4zFC>a%)OOOzS<{(^mvc9nP=JpKB(ij z7Y~{(27o#Xsbe(@D+bZCgpgu_sOzbR=Fe4t*6!ys7i~USLPl5nWdSnh>eLPuRCl>- zW0DZ$NC+roYo<&JSSu*J$%7PkrE@%!CAL0;v>2LkWb=z6iN_N~VLnTE_)}Sy=g-1# zYCr8f(_lIIC^8aVFV_&Nh4~4{DpxD|6AxUQFGhQ0?#iXl7-na-yxT9eP0bog$DQ`4sQniht?5HE`#>K!B#l=y1G^b z_0Mv4Rk%?U^C0z3^sn>mPAvZoaQG31qWK>$Xa5IxVakn3L6U~`QDK^S*-=rZ>+w-> zPADy~b(CU#{BLNp=|f!+|5fXVR%TRq)%De6tv6Kcbo?uGC0HLYOCr*=J1YVb_$5YMb*7i+wX{eGU6ekAyc2>~k1T^z}DcDEBJ zb>>=|@H$EO*LfDnnt{>_=q?0RRs^~WnQ)zt6PNoQw0XnYA5O5(Dm_kXXaCk+=$)2} zr?q(j9DX|0ij;ub>?MopXP`D4IQ*zYl$>2|{&W`>zq>s>{+Vi?r2jqD{BNUj0m_%a za(2dc4k8eh>za=K(_Q!jm3yTRea%i(7snLBY>MHbb6ADtX%=#pAPV*RFii)>RDiVO z-N6fHKNYU%t~k2YP_6B767h^x7^r&|S_n3X40T9ED3D|VE*{C?$-+$h@Y{Lz=kW9Y zp>;GOtMi*S`)`IHd}A!Nh;*8|i)0%o3VP6RvA4#K|0riC7|uTyGRt7duU0q#-G!7i z?@EF0LN=j1Fc}oLejA`N5a;D3(TI72iAg|33O?Qr$5^bC6a}X;nrQ}w`eKhooD=|6Y>sDrf z+H7t39pM}}-EwUe49#RjVSAdo)#(M&`d94?RlYWW?S-3`j}Kr@lP2#*_GMb19)#6Q zy=V>@H5pXxuw1Htq?)m)eV(g+l(T=Pnjv#sW=Gd=+HN~HE+M?*F~|LX`_=y0aRmW> z)&CBd{j;TmhzKmcSR}s8FEBd~V0W0B{+B8DAHUjYy#+1ge|~LNu9jwuP)oJyt=DL0 zD1L^4u8&-Ppg?|fXqqZ@NB1Rf0D>5CyVi91IKt z1%2stDcK!OQ_`6jYke#3MN@otebDN>)Q3q_PGQ%^p);lPsy(X`>sosWqH$_{{LyrI z{bSH#149S*kcR9CF}_Jh>*c{zzD^py^R+QnLr}CN(Ky!sN5^$oBZM@? za{Kq!rs)v)tNq7oBR4X*uE4i_m**|0BW)szLrOlNAO=;s6_3Qi^FgGICPL$#sz&RY zjIhp;K|D0Y^3-eMm|U~qVUnam>8BW=DR-^5*WCOX0o}qdzawJ#y&aDgRqz+1g@bg1 z8w^Vw&$3psRF~G)Vts>!*2DZa60lY=L5iNF$rce-M}}thz}JRY1CCZJkJg1C57daa zEWEJlzu9p$F9(9zf1p7AzT^5YezhU6Y=5Fae*J16tdz;4Nqtt!h3Y9N8?b&wOEbhm zQ?@LO5!8`944PznA=yxqkIDf0v4d5gG@rlT0B@tBUY$03o~_-THPo@2^HzLPS_&`e zYC;~liG5T-PW?(!O^M)ozWsajwSv-{n3Q<~xkl$jgKp8)9tlvWHjq5`7u7S3hf;3|`%BzEw;Z?Zw(aKOdy>Q~&mf>&@(!F+QeFg?=fa z=WBZHch5ImR+9piDONE#w;B6S&(XWt)q+w-)!nqGBv9|3gkQd$eSbzQd?WN7VqB>G z1*25r`c6tXLii1F0UhxL2zL<#XLx{AE2IX#mhgAbDq?iobO^c=$;EaFpTMZPnBb6uPi#o#1}z6Ualc{- zn&#vE>bUC3VO?5w2wXUd-nu7YzGxA%qh2`s^8dNxs-3{93hdAXkWrprw=4Yis~rv? z{@I}^ab71@`|+!tKwM$GMh8TJd_-i4KJPV)K*eDMVJ}E*ObTZ_;E*pwuQw8AHo=x@ z#WbAxk`@#|*_VkUYjj2)iL6~XQh+mdWPC{y7GIcP5P)NIyqn>szSCo3sVKFgOr9c+ z%+wyiVdpy|$f;T!*&_3zGl9omaV3Kx4f5K|4L3i8b=#}fu)hB{llX^>P!UamKIuq{>KO>ax- zEh=Kw#}=XjV-q4}FIiY2QuT71E##fol;=H;_NUE##reuD`4L?yDsiS*_N>gn1$jj} zY@&v6EKZ-Jyr*O(qYl-k@Z|N7*6T8j99s;p@|HYxvjdD8gE!SKYgk6FEO6p-Xlp1? zx0ExumZBL`3}cdyUhiNmkG{I$1RJ64V8oLr5j3p}M`Wn%kLaYnd)4rrmjQ?ZSy=$S zHZ?Jowia@$D=#ZIO~0wFR@WbHeyXj4%p#c*Tw8{H;;h-6^uG6Sv`!IB8slvzA4ziQ zj1FwPJ-5)`vb$~DTvK-IlQS@P#B^C^sPw^%fsVe5GPDcCclb1jt-8Kz@m8w!9Z5Lw-anY4+9A|c2Xg-MCxEF=zk=$RwC0G&Ax z(*{-MHoR9{2Pv3p#~)?wFdy^MnHyY{s&FVzN-`f7GS)e2!W5*9bx#(hu9#{uc8<+n zM$OS&T*Z=RMNOl^S0He%O=8T}v{k6=dv&vvGZf5oE zajoC;u(1%IqUYL|_<|1|Z>RvPJ<`@%1NzQx?-bV!JKVlD=u`L{yxp7^tnB$Z@-0}& zyXJeWPX7x;_jJ#tj8^5{ByR9|@(|qaxazktF|*58z5M+#$-zlz(yQ!_9SXus473vZ z$2{y})9|J@ku;Chz5$PxwSx2?QeD4le!brgvR~{oj9wniKLasZyL<5vtW0>p zI1Y;oS_t!PE~x&nhgOigDJ1=J$F%btkwmnJSj$me_bzdBzR&LLO}#Ucd)!8~_%m)m z_cO)CcaS--?q_Jf?^yKJRD>1Heh{kuQ@t+m#$GG8{s8O%u3q2mUVoGUp9xLQ1FC?v zp#Z`=e57!)CV#(MH1E9NfGLzfQZ2F@a49@$6eer}@)9%_En@UTEXr^pm=ZIN7D2AN zfYkFKuGt{11`kn~V4@atX)R%?JIwK>-~&*rgIOe5m=F!>*RWI}nk^xEK$iO*9c_!C z;ZjHyN+_gg@F-{K((6#wqEOt%AX986TW-v^hv=5nXs@IR*$&O@mxvUw!~C(s>9-tP zXTt*B^wH8>Ag7Tf{|V-9_YZ>rn}tcwvVb ze8YFej4W%3tXPV~u8kl$2L%I-8kvo#3di7SVRkFgg~vcIgt7gwA8wN$!YLAELmCam z8rgMd*N=_SN{#kO3oX=Lrkk3%=?)UYF=p8v(A0wAK&?A?M?B3<`_|0^S|t_|CDyz) z$~8C!YAd$+5U1`ARD&3pE_!#(4Y65 z*iblYZ8#2SJi#K`p)}xl*aqh>3L;LB5>T68dlhQqoSq<@0W4m7Ki#(JXg|YYkmexMdBN)7gZutSa=Pcu(LuI96z$=E z*sDm=9{qW*Vij%)hkh*D?G2|@T9mM-R0fFoRHlB_@j`23RXbsQVo|kTW@DPa-*!?R zKYvVD)6d8WJSxe$+SZNTG}_irf&GBqopIPTE~V^QS3*74SvPHZaxj!_MfS_KQcRQ5 zx19#g+q9E^po{DH_BThRzfQWqqf$S*<}U>izT4?J5PJ86=JGrA?&1@DGZ1?Bo5b~} zg6O}9y?5>lss5n3oT~`DR?~7@BWN}V`#|1_62t&3Aa#P_FN4>{{Gz%1ioKh8pS}ET z?47$!Pv|%3-9N?Nfs-z9uk!atB}U8Lrr+D*k3i@h)6=*9AJDs>G?$_sjM~dFsmUc> zP-Uj)>nL5|q#J272|Oyjx~Dqx6+!-fUzAX-s(Q>s|J~?ozF#K;n6`u?9a?jD^RwH9 zU)+leOZF2KHZKV3H-G2Z?B2Q1k5ChZ#8AOnPsEra&^q4&t22n9xRx4e9KMO-J^>}J zKG-)H3fR z4u=b)*COz7rhyXIw)4NzT%Pk9gRZ8PcH1@xd$5K@{v*u=<66r3l~cl6D>)@sgn)u| z!f!{VHXsyQh%hFVMT~V!}cB@#cgh98<=` z_fyf7jaf7b?6ffcRFNv^Xdx}=m=lbuapaSmeXJTinRQ~Nm9Q2cs?M%hpe z-c)d`gyZSR$9g&|84RWrCFofB?ZI@Z&UKmAc$r4?r}-++>vAJR8; zJfNcYOeZox{iZI7rfeMWNH3uZk#>1JPkZ5{RX}JIq721R!ZQ*uSVC(B$L<8 zPaEL5>r$RAShp6!*cC3Ul9?1T4Is)mD3Q(;uDxPE>6doyW?k!aCm~rR7{)@a)2~*? zcsq)yVgL@Z636bwily*IbS?@oP07>_9Z)T@%LjN!k4wSoseY?yWcVG|wEgLeJqXAt zBxrU)2bc)6N20E-j0P9UL!*somJI+7Z3F>uE-uR6@iCa08RQLM!~>jp8^x`ppT_aj zfn!DwoveQV!Hd~U{;BBqea+A700;;-$Oq7nU$2;S&0k(IdTisofhcUCihQ{CxAN9! zY_ore^hOgg{t)TuTaS3K!2Y}r{9fMr1Kp|{8}U1n>_52<{IRe3pF_9)zxj&&IT`^x z>3Dl2Gnu5cz85kt0`6;ouNbBBRmYE4>_T%?*lpqcf{-V#nNl|N9&Cy7DS|b%VF+Pa ziGCpCv87IoAgz^dge31#;cM;4|HgITKVy>p@9%5MqlAGXy?^X$Y-gB|r05;XA{1?F zLolE-&IfvON2apzp&M(3$>81PhW}Qi_s_2wyD>5HbN-Oz|4-#DLSgw>sqb%O;^1`? zcGK{Z5BA=7YkC|U$;1H;a{gsB;$OXDV_aYVh(`SBIslAD{7FUrXOW(dSk;U0BmCUU z&K)@33=HeX0CZ;mXdWXF^b%o+8%QezerX5-=^nU1NE6I|66u|yWv4Yp0D!O97D-5r zWD7nket*cvm0l6k@ZNBC2L`l?|5Bv)&#xG1Z)DLxQ%y~j>HREL53sydWf^S_0gpSY zMZk*FAA=aMgS(tohj#`S>rjwS$ObOOCrJLzt095`a8WD@^)W7-e^Wi zt`H@TjI5$+LdqC9B>|6=JmL&iYUVBzBaf^~!bMV%{GQP8+=$$BUP1-}1-%#$-5QD- zls>;WUB ztg=p7f4ZuP1w(%6CksaBba0Ww-0w2eF58z_H%6A6C#9&dk|UXi9j1JG)V$NzYKe78 zCHac9lX5F2XnAPEicq4F23<4x88hb0%?_$k38HX$qeX(%b85OPU?pE*sFZc5O#KfrdGB&^)U`Gc-gkaUfbp%%?D2}i0#Ev6o>ims z(q_y@wyXx0wd>ZcXG8@J(x|Ff$}2H2L9E6-;$wfn5dV2ISUp{)LEJ7g<5b$h{x-pQ z8=Wx%PeTeBb6R_XQb4Lu=J-2UeoYly-XzcdGHSv5^D&n&{S_oVPuG}K-x;R6hhZf) ztwcZT0YR3=Q=^4^Om81oz8u6aAkrBt(}S*!+4}DWJ&%>TN}yW?2>c!1J$}Asc559W z82+guH;>QQu}e0a#iQ%#a#P-~{EBm5yCD%k{IUGvYXF|aCKM3eiZ$^q7o%fK$iuzr z6!AP#_p?6FZghWlYF~_@9>xFS?yS42-q&|cH!_)YcXzikX(rv>UDAzocXxMpmvoDi zl!#IS3P=lxa;C0cd#%0KKIe?z8RNVI{+NUB^L(EBzAl0Sz5XYPE*-JGyYx9qT~id| z&ds^K8fgZ%abpJ#S+DO|21o&;dj1#By<6YoH@kpBH)~Y2y~w2!Y>n&(SLl39$dw#X z7tuMd^7X!c(0c*fkf&BwBV`SZL2*}B1L^jX#4?@LoZ z7^=Ub=6|{`z5XT2`Tf51|I@s3vmwX$$NLhbZ2oW340K=N$^zONx%Seuzn9JRJr2K@ z&3|LG9lmC>h0H5~*S$8lIWEgxSTO;kHv9R0Keld8ON*bk?kNeYV*T6UgObF5*}DII zngN9{zx^lF{I3jE)=Q;dqMRR(TIQsfj=!VkkK0!Na$fPJs{im4L-jx0m)HwKSdW}C z(4~pahVvEgYe%uIAgFn4(&^uC-30x?|Mk}WXNKzkVcFca3H5eY;DNfUg;u3rK(`%< zdhb25;iJ2N0wVRhgUX8fyAQP;CwCtqsQE8Pt-oiq{ma(!1K{V6NS5jjW#9~Vft8v+N~ z5>=-M;4Y7ZJ=4JknP=i*Aq<4`*P^4Rq=?U6Hj+Of-co+hM-ngZnhOsHnaW4h8 z*-#|ndIw9MebAN;IZ&bXE8W3{UBl+AE=_QS{L{Q2l*V{85*nZ$RdO>SBQX{lpH^!| z%i*0!8El?nXilw|>Q&3C$w`-qZH~GlCS!&U7ngBF$qd^_&n=ZqP10&X;w~#~NVq^1 z6TQo#r3$9LTZs3xk79h(FCB=b+&!kX5ko zSw7)3Z<8fOh=RikHP8;_LLOY>W7a-ipMZKlq>kZPBiIqgqJW< zS7T)DiONs}C4h@?W`vh%Daqk&zQL4{(MYm%-l>EshAIf*9Ec8AX++N8WH<<0@vTJ- zBs>jPd=RA~C?*e5pmswGZL{TsH${a@4yJg1sckG0E;%p@tRX%;pode{vG=KMQjLUR zC?yX|L^vm_ld)l`6j)+8YAKPWuaflg8Si=UfXnhxFJZK)0Vv&JM)i(Hii9(Uv7q5p z8n%Xk$$Z77t6Iz8*Mi}`NiR;U^HML^!xLaLjXYg<###)s01m8A7DxeuAk&}W@A}}Q#&3PS88AsKWoU4Oe%96v41b)Zk-fV32O|ZmA5CTK3 zb^%FNMgFy1xZ2P%ZZ7et4>HVaI-!vV+#Dzuo5e2}{IF|7a&=*G$6fH`9ZRIn^=C4M z)$?ZPD`T*V$WQ5r0_g+Yvy67x^cNY#>s>yR+rJUZ#dAA^k^GZFfyv`WxW7JX{0EywGo-c&#k4wyawU!NIN)n zy&@>To~4s9O7r;EXlFvjwR6 z+CB$fmcukjYs~xUe7aktE3YfjvWng9S*L=Ks*k<+DmNB5TWb<5t#qHutgo(zY%{Iz_Qrft;VP zcjn^uT{=)LmD+Pl%HAK0B)p0*z||>Jy%|Lixl;>&@_Ca|m^-_IU`XakcD#MwQ!U57 zt6+KGo<;OKkZSccndjNN`0!?MMLygvsa++|iOCAH(ld7Ab1Vw;`=;5iqcAxnK}&Vs zz)q1wvVEfM=-w@V9d+9`2!(ZAyS_4=-Sc!ln7tOyER04Uxr7C-yr45U+XO|Ad&v0i z1LwrpKSFz3CE$NVP!S4~yul!Z%}lbk*ne^q<(2TP@sP3ZOT1R4K5WEIse!$Jgus+X zkTnQ~)!$o-M_Bz0-+Wj-U(^FiOh9c-i_Qj;jlT%IYRsx2ICa?SOH)0Wv((TA`5TN$ z|AGQBws>BY_EQiFo*A8_e&x7jsXM^AIq)@}cYcZUw??D7Q&4QFHynp<6d$HEoUyXG z5gLb$*sh9ggeM-JHpYZLr#VLZ+#}L7PZ>8K7k3LmJo$=oT0MYgk`-!bnjt%qa!V`y z7aoMxOE9nl-jU82!P$vmHDrJ{#OM-rK@x?R-|*7i8(2t3%B6{Djmf!d6d)Ozi0f~} z=XJE~4Wxr+Z#9~=3Wq5Q_vDuQux}$cu0szW2+yI-fC$vym3$hevKpob{Z373S+Z2p zT!~JQt}L8=S49uWxb%VD5RpTj0td`Rs*ggORqvDy`LFEv@ZngAOEg55s~M zC6wYKeG_(7h;J|q${Z3h1W>kO5C=n_k7|JS18_jbiIq}QVc`(vudtL@r3G+v$#1-v8uGKF`bZK=wi3R} zouJ!}s4gx2mk*y^idLNt_wM1R)eTa0Y0~1&4(M?^RrFt_VK(`ZaGT}qNiYY=H||>7xP`3X zLh0kctA(W?m}Fd0LnpI~-(D*oCqh+VX@^=^K$8c1m4=YW0xni1nrPh;CUsKr^&BId zIN^L`;4@L^Rl>Y8`v*J?MlwBiGleG-xGikv`Td}8GafEbOQQftBVtygv^$k_DVoo` zkX3s_HBs7Kv8pihMioK4U~1~f32qbyoZJa%L+e)_;60f`jY#;xv}g%eyc@ex9A}uI zC`$E|&ktpR(zk9!otbA7iu+@h@Fsb1L3uDmd3rnshD&)9*fGGvXZO3V?r_ml833fz zhzlE0ISpGmnjF=}z%tr2FiyJc07~~2MyUn{d{HdvmROxr?gWF_D!tEQnEB#zAS{KW zjAkIxh(RfQ=s82U=WZtbgy!66CLBjRBX$;Xs^XTFan&nbrARNJM^qS20)tPa>P=o^ zM9vE-Ira~dBzMlcNLkecMo1p&ZlRjwuMln}P-+vEl%zE;%~4l8lVK~9h*H)2!0NT^vUGcHL}4+N;L4W~wKy3jN{E(l z&gqR6=>SYAdnBy3Q2Ar*Ts&>NpiBTWlC85xVD@`6=P}zHWmMd?;skfo`OdoaT^qUg z9LJ)8uXuF6cEN9>Xg=jD(Jn7K)2_GVL&+|;+2nIjEH^eeR6Ij5V^nW=hG(?3{HU8+ zd;%8=&(}Hbb3>$N5v`TqYmG)kem{yD_-jGHRdrK3a>KWE1g5Qs2ySJzD|w79J-&zR zs@pKE(=}OGm1uO6mRH;+CA&%$@JbBWKv6yMA@x?Fc^QQwf3&20E9eZ%gP_L}vXt)3 z%h7=4>{d(qw3=3JT6ipQsH*K@3T2ZY+EyDObUWr?yFzGkKYWLgiu|}bfE^XjeAi1w zt_~+zFR3Uvup4kZP)CpoFogJvav0i1q@I~bu7H8Q+W3h=trkt45jl87H?pWrZ5AeN z$7)?ys=1P4-QpD8=0RP)=Oq#o-Ra1f^+KUdIUQ!s%p0~nErYZzL{LpRU8}?0)iG7V zAA6pN^^DkIRSGd+E}?y12gB(VUFEI#59YuFKqT)Zpxk(%Zq z>5Y-o!4YuLaIg(P)qY6%Xv8=byF6x;(RmbQX4IH?%v5-6BxFdVm#Nlw%zT5ZyJzg_ z{n(p%RU>8=t=?hq45usF_y@HiG?ywLG!{>099w%Pm;3Q>zlq4)iRgmfiP(*a_+I9a z`-$XQ!X)9zbic{Wd)l;KrVrVZ?qcHZN0Y^|gnGhL<-+*8L{mbhBL!kg{<#EgfzK;q zahmJ_ZNk%?xzpXf)4dzh{rA%Y#51DjQ$zYQ5QEv6AA3;lj1R^1OfB=o499HlE|2E0sGJZ{U0*1ziVL74#FdY)_?ZCSUuw4rwE)al=bAM2<6y|)(!i~q`%|2Zk(DtneGElptlS{(?5pRK4% z56Q%y;vjAL0TpG6Al{eE6+=Rg0~0qy|A|c%*+~B4s51>n{gnB~n?*m4Y3#}inIC{W z$eRVPx!KPR48l^=XJubAO_P4;@dz1^_x^Ze`Qw|#PdAowV;VwiE08NteP7fQCDjVb z_u4zLz~vi*bz$g&KxI+bx_4!9)OJ^8N!*9q%F?8BfvU1JnCOG@SQnJ4iqzofs>*B+ z+Yc2eH1s*uu-+rpqV?GinsYU<^MrQE&~uE5^<7gab`729jI|BT>nKOHBPZaax;j$1 zxyC`(kM?zwiql68bCg8K?du*fb**cUQBOK+H0_SM-j`1wckH#lX6`=eXZY*-DIA`D zX(|F;?Jt?wf0Gp8bd=8bOSea=fg}awn_(_yxPK%ChG|DDpeGpEZnHe|u1WI} zbamX%#J@0Kf)rr;+@xCBL%GE@$lQ29dKgPrOU64_JYqUR+#aj6k|L^e3N;QFYtnWO z%4-&g?7R!^Z{w~vgI_&}B)&C#83))<>*-T}ZTyi0^Bn?%Vd9Sd^o!4fryNgjL9t3F z+%G{*=dMyTofs;`!AY*hB;+TiD>d-^Eqb3+ZQJu-<$!@tqYo zDtP{^Te6%^qT`b#+4C?AS3D{Yt!Eq-{yn0r zzMsD78GX(dyp^F)d_HyD()#U7$``Jz`)%=wuP)ayA=t{~h^dp`q>3MZ6POE#i6VQL z*&itGf(tY^LxO{C97I{D4JkY$Lvpr!@`h$Exa*=2MVfOcthJHjcIVv!eWzIFh?8Yd z)t2f}(eM~rV>o_k-o=BDj6~r^W2D+G1yIRlgl4t(S-hkBC9*fB zf0oeGJ=^f35=wV$nW@hC=n!=U${Nl|NnN0{W2iiBSM%ht`T}`J=We_zEjY|AE){M_ zkq&b^I;izrI1U?$;TQ{iCi*nJY{o*B8cy=MS5>%)8|?bHi^%ifJQG!~%-R2T8W$4_ zk`%DKom-U07g2*G1>S>Ge@hBbElfLSU*sOhSNv524Iid-E*fgJ7)Nh4MF%P|lw+xt!~vi@4%Hau zfxkX9-wbSD>*|ChWE>QG!!}?ASw9JvUz_cOUw_&_)5jlITNW)_nG-zst z;DFb~>Q~>&x(NuKjM`D~U>~ML`;lpt?$2~yyM1OBAVC85N~|Ys@Ur$kla2TqW$Yfl z!rve=sU?1thJhM7N+-+ViFBAeb#6HV&vNE}!jXuJfG}nO-5mRf(r{&>lj79|I(mZr zbgHh*_&YbJHd1+FTCVY_gQ6ydP+|fJ!8JlJyY1`TPCg(4M*29vM7q=M!}Jhx zi(K>(VN!77%wf`bmUoJ!wXHXU;}})00OkJeyRMm_liB=nJ>lzGfw%xtZgG@41re+) z>jYMe_@tJ@R8_&;7^(D9>AohVkc$yj+O}%BXMm5Ciwgk5wpt;}502qJ%boSwbtT9j zgXaWR2Ci4?d%Qmy6Xlo;FIzSxys-b;smn6?bhV*u!7f<7XKnRFv32p>KD>yKZDqE- zbFjsswUU0rvD%|$yZFSpM@X#BaKHJjf+L0d7s|c&dOdv2j&3Vo-s*LKu3|$!4Svb= zcJ97?5U-y$)TsF_T7s7;oFZ|A=fvA?2z{5&-}s}pzBqmW`iOwyIr}r=jEe`>uBjRc zXUB5CJ@#?c>4e+!%-4Q0bZli~j+c4{nZP6E_^r?GQ^785k?yHa?fLQiD~_JFAHy1{28#^EIlACI(^CrX z&vPUKs)>P$V{`GkOT)NV*6@0;1D`!59zT&?iN{4zTJ%VyJjr+~!Sa+Wkfk&DV$1!bXNV+D zS^<(_nvxo7dIKojH@-~PvJT_^s!smpD+s&eA+;-k0+llMp8h6n@Xjl~gfeP<9o~}s zo@eDGD&#)<(gpUm)4}H>(fh0M4w&)r2l3~X9?eOdER`V_m982U@$iH3 ztjQ3ebb`8OJc$*x*17$+Oo+5P@ktVR)FVOoJTW&Z5k)5n_Xi+Pz*Lveo2GmATLFfAXQ8tRYDeDP$yL; zD;3<8Dt}AJv6iarO{OG3;iZwL;+;miZ7S}Pf-sl{zm-;qV_>?Lh6kN4!kcasl}=rf zrpv%?pM`CyV`(msVI!MiVv}JNmEoe3fsUDh?40`OLMPBd4SqfynIaPw6F-sx5N-oN zhRdWa&J2^ylsH7S-OV^L%Ob>v%FfD2G)c<}%F>?1@p_e&W0DOUlzm*8R;U9sdX=d% zpM3+96|j}j8iiMU7}qFE-6fFSFRRpkNZiaoFnpUc7DYHH%cd4ZHtn4YnXL7p^FGYy z&g$fuX^9rJ4!!O>8&C<_L~a@+lWuDF3Wd@p7U< z!=-|0t0J7E;)zM+#e9JfsPguKvXUjJ5;LvBN3aU@LOb3^eys~T5nR>mRW;FCC3lvd zD_H#vx{`9Mik_mHps1P#uXMGwtTa0%H7mPGx2D~vhUluSF*}pZq?$G)vyxD`zguD$ z%#|EfGm%}3&Z85(uGmvui-3(Y2zGgaQnxH95bIM1#H{!mmXSpVLq z{=lbxFT4H-h2x_j@#cE{c{k~&^|}k6hMVk$yJ)=&^`b9el`BGmdO~2OO%{Ai(L;9Q zZWIvlH4!WmF#YfeW=s)+TobNd6I@VJYjxwvO=Cz?O;2?bf^+c>bS3q)*&A!rwY#FH z&M=5u&3tOLeMQX(pcaY`>t%+@O6;!zWKIAPJHQh?07!@{FuSG31A#cF)ey5$f~tkT zxdp73q+G)x-;=6Xqo^^BPf66ay$-M6(`Y28gq+$IgNaW~1T-gVztXHD#%#byZr4QY z&}(XL^=jMUZlCudviwpBl4XpJJUG*0-tO3^u3|v$Ts?b+ zkJOb`)1H~rmEF@NvW+Y?-IW5}Oc0d$l2I`k6|Z)xhCjI**SWn=h^Xv!e8rdUR#d9I ztlYMop34Q5`kI~q+ivT%o_?WTjpC*jxn6hFUZ1GmnU6FbHR%_?pXp1#tAv*P=k-?~ zpC%A4L=M;fw@T>m)?diU9!Q0~6!nw#6ouqNqgfygY!c95>W5Yh6`Tlc`_&E)(Vhw* zo^zx8(5kT|({%FI{Z}V@i)3|(_H;uX6{0;Ak0B+|!a7|1b^UEL`-ArM@7CW60-B4< zkE{P+{p|pMf~>ygm7Mx-dQ(8pb_@YdF2n^Ix0*`*N z!^hxEmU=tP-|R-C-tzz5$^NJH_m4sOs$Wj_zXauTRY|K4ieq_wDpOEFjEA5ULUkKZ z1~BzdGzVqL2C5(&d{~*D99>nFT|8A)o!^X7T~nM6(VkYdly{Vj_k59kXp8lXO z{TC6#UjPKp`>?+hKz)S|g+5WFL}o99nFkJh!$}~=&@Y6eTg^c#PVmH*P%7q}7<>c) z5Rju4{T7rjLfP4EMQnHa9+WpRyb%l1Rt|sFP4UPTABvTz{`?9YES#jn`?DSXJAmN#TD67b?8{Pmg{nVm)m-eQc`f3F zT&L7rj$12=v1wmH@YzRSTPr_wZ{s9QEtLyiRVl|+%V&V)s=-%$nhuXtP=gnKrW38{B<+gBEBs>k1<)#V3Vp5T+MdU`)QE^q*Eyocy%8MaH9q#GR zrmoKb*~^FCVU13WHXQ~ri{*K z85E!6s@RfS-ttH`K2MPUBynz+`(f(kfV4RKLUe`k7~rM{omMwAhSy|OxKqB|Krbw$ zeG9I@=J}W7MsX;=E&OPFWvE94o2twyz}I^XfL$~l1Nlm{l;aVR;ihCa$U8U@(uhbX za@736j!4su8B;rQ9IBdm?~Jw%FM?i*4X*`-Mi!5j$7FIt>z=1%7r)M!btW5^WpbgX zg2DAv#+vy$X9~dst4%zcKbfj2-*8#Ku0V^yHZz&9-bipDX>#7h{(dstI(bC>RN?fH zp-4s8OCD!#5V-=D?Ax#f8?aj}CVHA=N7Wqs{H3Ub0jAtOZ3hg<-BA52mL{3Rt9n|+ z+K}xRDPDJUZKN{wd-^#B7kAtjBr|mZ3ie^dUF`iHNR=@!j^>!rCtm9Es+GQIGvjht zMI3gk^j2^<;O$|3(;wX~{pQGtFSO2O@Ook?j>eTN{LLmohs6d7w+|NMnpe~30)ISE zz`z%?W&ic(FFBnOaEOHv6BLG?Q-A7a_M^FrpB#p5dGCmtz5#zWI?{lB%IeU|q24+( z-o|+zb|xf1^FU^5OsSX}E1WxEH1q3~z&s&WEASf*(zKq}(nlE6LYlpbn1iSmpTMl$;NbYrk@zBZh-Y8g znTEWG7)MSS2Yb!@;yz``t5Fts%7~OBA47$bvQ{`EciT02Bv5QBQ#^VUC@XT6X+z4~ zI=+x@#^#cm`t7>R&rgi$ZQ6nz^}C^m3s5{dPlT zBA)qhsG%yU1LUm%N(Z3|UPNGg%yRdzG9G{i61P~SlzE%H5k3^%O^7)X>2xWN6+To~ zJGWhBIQ(F^qjva7QE&`paG0|_+k_Juhp-SG;2Az<06iDK1_~TUBrGTr+E_1gRiktc zMd-m)FH{9pFOm*2{-#+2GVr0YI-^8(;1Rc?aG|52$)m$4qLlfg7_Z=ILD8^-(M%~( zRFDapA_fK&Lthe2ND`fmrkcrzK7*fp50XKOUA zJ3NIy#TNo^bu)qNwTZCXDdQb}G6JcxI!OnfSbyYpK|$3)7yak4S)QII5GF((|8K|U zM>M}1o2MXSGsSOXGa{q%zl_cDFh7sYJpb+3yf>Z6Ww$xg)$-HWtkB*1-;d1&ihbQz z|7dJp!9;lfsq4Z2gdPj};H|43J@q@$WAdf9fy*{xNx0%|?&Kj6R~?1^hz2rS;l$?% zTcA31Y)bGK1?_oy5+5zOpRY#0l2rbE(p6cC;U8R${=?W@6iNGIZ2s`yCtd%-MvVI_ zw<~!B{2!C9-^b=_scF$qD4*qeE^P@M`w-{NHhOQQsu~=>UHb0z4V*DKCBvcOISnB4 z-8v4TqoO(cU`hX}UwVJY0>{A&;dWKjLXxhZWL>7&hf66c>PPG^Uhq5KfoFv=dR%|C z5&utXmHyl>y?`EoBwfuUq{Qoc`s+mCv+P}tjK4JteKPv?2+}Vl({%o+U;1;>_0x5j zu z;SrmQV_VC#DY)mvi^m=g+NQuN`7dS{?E8wDdrSt$h%=F*mn?zo;&kDSL>w;`7|VdRDK7^^FaB{mW}ext zXqBo`;)G$o*1DC604a-yc8K5am*BNC2x{isPZu zDO78SEu`Ja&MV2_K5gd9y)d?3*8I>qWlkfM`63^#g%sz&K-i9IZhMKLv@FGjB0FiK znHCft#G+z84OoAmJm7C{t9|M@{d(Yqdwn1JQ(t06{bA&5-Kw%;yO=NOdz_!UmSvxM zm!cXpsCX)w)zy0xxf#f~d-jCgK6M&J-ONwSFxxj!_nFp9-f70A|JY{lw9K_UFhLS6@oFv6@t0(=|1hH@fCW2-h}GN7_Nopm71{w zKzI6Xd6R&QniB-!u15w!L|o5l-CCRtP{Dd9123;- zIn+qXFnD*xGQVMFTe!-{==d5?`OVOaU>y&H>UHdw%k{SOrFtUTZ0O{47+e}isSIBi zwJU0|RFKrN5s$p%rMgka1b%c4TGyVWl^NkFK6TL8&_Z|;ga;rEjCIW26x-qlNj!4N z(KjL2;t;)=gik(q$^!AA8!Zw&;&jz$x}z!Mm6?TYyvSpcTX60=lf(%A#DM;WT$*h{ z8y4m_^f?TK$M(;r2*~4GXdL&70v&C!M?Lb|+m2{~3M$`+o1w==1-YQqf}n?&Rp= zznvmp)IYJTsJmXb{}cUlzYc;v|NPgKitqH#|B6!a6oNkgso(oJ4+snWvR0^{i&gS$ z!cHPxbeiso7Z4HjHV0 zp;X}i)bI7ZlIJ5+Pq-44;r1<+^P!e6Lea{^W^p>EV*VRS1*Q9g|Jh@sgRw|}m>wvR zpO3O#DQYs9vZa(>lA^vWdTeOBsg<6H&ajg7#kOhV2>xR#!lYPDv@Bp&CKVgXNSuuy z38A;e7}N|$Jc%Av!aF2s;pUV0h(jv4!2{_osOCg9=p71VDjA99vZVM}b9vk@JQ=CP zWKp{?>L2t^7isrsg)-H}}e_v9&!?q=?4zcOYBk4^W4KD2$t!px~^y7;s? zL+zG^J%Rz>1eiiMCS1;$VUuglsYW~NXK5`zk!THe&0OBq5VCiE5tBR5Rc&s{)KgWe z9ehFlo_UUsDP=Y&bRph`iblZZTrqCKl{{S^EQIR%pp;?0$S!}hFP@qCav!Nx01;jp zWFtQI%xAPnm(o=1`GwLO(NrP4wign}t@Eqq+$>~qsMzA!FZf*>xDpk#uA# zSi`F4su|R?qQ{-5ENiyKbF{u#Xz0J%X15vzXf&ZP=fc$1>c`osePCGGe3Mefh-?jY z3MT9qoT$^OhS&QD1`ZOAG)e~5SYgX)L*2DCB}$^0QB5a~t1eTd_tjc@bFRH0rEbZG z&_5O6*5@CiHkOA)tE=TyEg;yp6-yk0k+PPdXvlG&ykL6dpyQjgZiz_|a;)K0u=m;s zC!=FRfz|GlV0&~s1Npy@JPZEw{;3byKZF17%b`~C`!5H{Uw=6mCm~-B+NK|04uTHC z|2JQbO&*l*Bu}}2uzw<&#wq18i+#DQ60+jwescYd8Tx?CEgNlu*dL-jd@FuoL6aDW zd>vjWQzv1)1xYP>>BB)%i(B@@{`A|Cbzw5wQS(`mlx|q{zmPmvSZ<1=2i9cFoCQz* zr?}C-Z(1_M@jtCrPsr!oBd#p+x1eGw^O1}Zy+o6ESzR^uFhy7kJx3^7Qwuh)sqHni zWUB8&kXx^Z!DKpWDu$LzY@Xn?%Wj(eCc)G?uW3hKWzlTrpixP?eB2J^fTR|81tsfD z-xl9FbRGR|(-O7k>31>&yTb?4ze+6%JF>t!qZM=#M%)*VQ>v97`;ce&ZA~(E_yH$b zVXx%eRv8gpof-hIY-YCe{J0zi3fxXa8_Q=dAn%A)+;R0AF0CNNC*PZvi`ee3P`ZNK z#J<@dLzFGb@8~yg>IQe7K(vdiH>UU&_1n(6n?H}CefNqgZE#!XHod}3DK)av0|})BV^#zkfMWJoz$??SlYE3b5j1MF=A7mb#IJ2z-#Ujb;Ui^p9s7 zt%-lYH+p5z7%3ALhGH*c|)ga+yH;i=3SR z*I9Gacy&7Uxz2Lq1*P0LS>3jy!-ryzOoaTP6f2DlZ@eI>(ZYl-3-eQ(tQ<5n$|LSV zv6tav)s?(>R0~n5ZjiIhp^|9zLi+c=>pM5vmd0of!i~n! zd2Q&WO1l;;BXpc1?CV3BPD)*Q+{B>jdPi5BEtM@!GNYRCe(7E!ttza_wzj+)TeFdZ zQR+(Wwo#X*?s0gHbM~6jJR#<@>a5dV)v29K9Cd}ryFpnn{aizY0IX)(@^}Ahj^P+EAecXRZldA5^;x3<2p< z(l?)(UW$*O6lvJ8IjMuNuO}L@+hN{84aD|bWIJtK>rwbxQy^oeL*0~$D#ci@@b$iU z5sG-8ph*o~2u(grt4zF#h$x^+oO@|xGD1RN?_pM8tfNx?hWm!Ie5-MHPLvR;ojcp3BZd+glwH2&RX*{hK6sU`T zR7FK;8>Mhdq2qtm*Q@`rBs<%*NyJtxQP9NTm?c*&6FAM!j)WyQ{rY5W?O6DvKs132TK z2&vFwiKus=dN9Ht-(PTSt0fL+`>d#JrpS;zo%2R?(7R#7AZ6kF-j1O`b8gSVHT2-# z=E;ie0>z`OlIIl%wJIf}x%r)+-eZ4|12Mf~dhc4!WOHDM@x`ankhVD{FVxuRdTnL) zaZ5{H)>Di(%L=m&hj6Do$ZK9H>JHHw| z&Z;LSopucj>uSxr9ggxR-fU@GSPwT2*X_)4O4BOukSyUr`@#liP%px}R=RE2rmcx;xWd+WC+gw`1p-UTni9AJ$Dw#zXj0@xz*% zKhc)fdBl@fbevEV&rmu8%c;H5_<10A0Ze)T7CsbCr0`Y*xD?M<^-m3ve@IRL9+COm zEnUs*pUzr8Z|Qjdc}s^ffB2;#^3`8{X7!{2LQThdqne~4$q18%okrcor9EYa3|7$@ zYx(ikpMKX#o${*j(3T@>r0_{-P*psy%$nBJM$_A7)Gl9V@pn$+0Q(F~@1Zw?C2FDd z>zo9K{txht?y5rKJ6w4M4{#?WJ-4x?)zJY+q}1*)WN!-!o-~SRmY%EBSNzJ7l=?E* z8Y+5QbZO`d%d2f9cKt>p2MjN0y=8%C`JI~Ho@N|D9uAqcsQ-?d{>xjxnH$S6wot1k}6h*zNOputJtv=&9Cw13oGnz@ufj+|XNge55% zk8G7{DOHLiw{fLS7ww{`jw)L>!|)4BQm~33!J8IEB_sZ~SqmI)`QJM_{yPd+V^01* zjL7f_5SG$AtXmCXsNm6$SbZfJaDr(vBalN=i(MWj#ga%6#YH@=7{xbYR++?%Bj(g& zsDKE*1cT)-UZBSZLn1N-mXNo8vy7*6#)>kR^H5XvEFr8^5J!h=b1oqZfw;p}hqzJQ z)v~^4UGf5iCCRjEn&H3;HZM3ty)4#q^E%{g)3I1q zeu`ExU-^8=`KZGUIC-W)Pi1+X-Z^4qL`167VArnLo zgD*VJS>HH=AFl#10#^vhVepV@U^!3qr+f<|^@Ffq$wIdD4Wxrr?nDutxZr_xV=3a* zEEvl<=H6ifOm#c6sY^C>m0p*9u zGNOlhS|t`w+S*W5SY?agllH~vz$$9a<;5sLiWFOi%CSC|B`=|EK!S`vA~NXPbiYPq z;NLwq`_7X5qoV_z@j22R_8_J^RSH(MD!PX{m?hjr$mWAYY4?)&S1t~qdm>jx=v=kW z6-7=bxyEyFiCgj&Bsj{n0tj4g?@m+4b&JtuYaZ)Zch`57BvEl6Uru#v(-gFmGyDWz z)kD{O8o|Q61Q!i}fIAUvP5A$^`;ks5K%pa?)+toWz6_^p6kv0;Blqs6A>u;ioAjAV) zMV-8&x5`Watl9SB83j$79MrUB(vhA<=uZ$)RQ$Kz>#Sr>CUi*pGen|;>(gGn-@crY z?PwcBQ1+?$q~`56PNx2E=#7Dh8;suw8C&7f(PTT^CaGlO`gZl%v+iV?;q(-Q(P@F9 zQQX+D0hg%=&`n`|;qNd%9~IMHXCtcV3${09+P!>s_JWsbC!>jFjAynfKB#Ml^anMa zvo*JB^TYtVgEh4=F=L}9!Tu%+Y{@xPd@r$6>s2I~?$X~}`-7Tp{HP^!T>d?04uqPn z*pj_6^PcxRHQg!R^;2bRFWvO*tk+}oKjT_|!I6|S`a@dZ__e%4&1Vyo_>x&tX8 zLgrY12sND~O-2nuO=ks5Ge1)VS=}vuo2Rebx7fe7FE>NtHSbiV~i=p3O_giyHdxA9+gj`7W&#rxjxkYjXBNGqNv zE2(eNK0qj3TC?8;Wqa%iT{BjS7um1x-$TZD*o#G{+%Nb0q6Gdc;cvTIdaETmtT|5nTsSP;{FvQbH?k2r%&iQ&|t<HJkEkHL86q;QR1c$hiisKBn4TajPLskyhW4mC~2>*Wa!?KP@>F z_I=s-At>{gRX-G;LVY-Ba=iSw*L%OC7wPrFGwtlzNZz4PK+$AEj3X-Wt2XA#JMs_x z54D8>Uqd1TSWBKf*YAFb&`|lD`IDn0QSrII@!`FUu5^CO$F~&04WSP%NzXcWrW`~6{r)5DV~9AKp!U26xIL?`w9xD8{&W5>bIv7X1p4n zs`@OLB3ykiTyx$RLfS*3(D%@GRlE$7--^fwMKIwDc~xQsTVn?zk-NJ^f+!+5A56kS zLFz?Xk?WswM$BSyh-wjWhqh3XRp9Kkf=VuZp!VxbK9KYKc4-JS%yugt4q8i7i*_?~CYl*c9+pskGZq-1N5pZj2{en}?LnO!C_P#juh1C((IlW71Qf;*TA zn}YS&2GxroD+(r?%~`M&!2`Y}%Z>`*vc_7kgVoAFZ`mbJB^C?L%88)NQUJwv=X@Qg2nT(ITAMr zNOrYYCcW{Gy}fHFvQ1i&8%>g)3@X&N<_8Dm!>Q!$-D25Sxm^-qVo~KI6p3%H0S5#a z->szyZxx&m70@?{p)%rQ6BZIqu@H0@krL|VXd4#5tCqbZ_g!PAo8zatf#=-HRdz0> zz9@9=@G~^VS7#`Bm0S#S1`Rt{l1b&yb5|rLSW5aiUm}}oPK}fGjwLoNSE?FQNtgHP zAX~1R2c8iaFAKn0j5%{bz@x}DcM8BW@s7&?9h2wW0ZTbm$|*3V$E$eF=k4@AFf&(U z=7|E2O%&-p#GGW)O9iOU1n3J6F|9kqpr*)PhZhzt6q!_NmYEz^$((Q~?j$j%s zLhhD3(`YbR}zl8BF11C=OP-+%BH3|4rc@9i#l|QI-)HE(GHC*6oMmLU><+Nnpr*hFU#AHeghoj z#99O0_n#lih5zkCdGYU;H=MtDC?Eapp&aKg9?EHBDZeYPm=CuhB7je$Nd6GPqI~D? zMF0qIimnj5njt~08q*iOs%-l&ohn2T(C(Vb7k=~`vbheIfAkxOICQeFZ9jUjI4?f! zFY(7)3O;Q=-I++?^RN4%yn4-<@Q;I9Uv4h`AOh&;lL$hht$Y`Z#(Q9_g7}zzD-;`u zkZFaWpj8y$gNgV`nJAo|(h@(O-#CgkKNE6d)eSd|VW<6U8hh6ywiAajJCPs9Ps{zr zQe>*4M061Td%t0OR4Vz-W&*OjmA^MnJw=x-^VKx`DNosf3u-Zf|AAPK>~Sk2IlSVSFb-%qTW=tRfPI?1oAyM7=EZSqms!p2_w z*)Hu=lZyTmLYY1JygTb;=yKi+yAz-#JkN&v9Z6Uvn+q5tu4s!Mf=}3W0HLc9pNqFq z>z_}tXY4kqnU8FkO~Y*2LzXwaGS`>*dH;*Kv+%1zTh}!qU6XF4y9J~hoOCxL-Q6I9 zbjPH-ySrONx?4a%8Ug84?!>kB>b=)G=iGaK_n#PJeBXGV_d!0N;6RW&pTsMXofro` zKLmszvmKt#P-if5&T1MtyUgj%!#U3D2QzWWvP9clE}EOg>-^8YSUnj=J)BK^{;de0 zQ+v1Z!Df8E;Da?064uGILIzEHu_lKi0w29R0^ zPP)(?<2>7qomLcgXd>v}*rn?!8?TFj51XB!)N@HhDrsqjp&yHKZ$>&<7?tjn4XWpy z4JGn!mZj;Zs?37lEILK$ixO@pa7DMmFR^N8@_DfZC1GS#jl}SC1useoYUt@e1idAO zYC<9?!kS%{3Dw}fMsw_Ot!c}`LdVfE>&P(Ovx+2I%7DyAWP^q3s3zV=ljltYCVTt7Fcsjf!2wr!N3aXF;*=izM!`^ktA68x{( zBX|fzh$6^@zq=Re{u`_3;YX{&HbZ!_~+gmf5gA)>iq@$!_KAj)oBGAa(>Mo z9ge%A@wI{tITg#T|GQniaq)mPTalxscN7oCi!a+fYSPBssK>d&ZhKbK`hDzD1it<8 zV#G1eR$3zlX1qrH*#!x{7^mX(!9U2qx*-3_R`Z8>INuN%N0n0K1!{c0ung?PW*nS| zMNGV;q{UXehI;5$qPA6sz3D!c_TM{Gv3cUa75Q_rjE& zn4h|O{{{a2_b)~+Ntue~BXuN!mdjtddVftY|0#P^VbE^-XBVW#Z0}Lq*Z#i+|9EPD zfPeo3Lyk|G#Kb|Zp+gfgpH3&y=G8YuY+;%sxxfA(|4$OkSD+kFX$ydo z27yjWS=p109}k{ouk4A3BWdEM@#$CUq3M{~_!OQkI)qwj)z;I5|9mkLoPo{5f4mqS z8)|Df}SA;0-hDrcC!K#(c{X_+pe8K$u9?=-j@jf*PdNH`@X?A5b_d%e7J-#vT>F+f|MBpNCNP9V+GN zT+eLdV?bZT@VtU8GC_ z*O`4fFKcZ$n6EaX7>jTk?4gu98Co3$as66nmf(*|^lGfV#c2T{^Ebhu)#+zf$7^84 z?}tIpA9ZF$j8&Z-cUNCO4`(TKb^gV%z6PFm%t?Md*2SCYRM!LW5H~-Hw3_T1KoCC$ zgDBOV4V0o27M6qP4c*CKGW7!i{xG$)Mk3|QwB(VzzX;`PPC{OVh+|k7gFmbAGu<$m z_cs5&&g{PcrU=rS{9b(apDWmZ0aNy`4Xd<85FS6PkXG~isms2ABc&h7W5+H($k)&K zJqL@=Oz#RJmrw((n>bz~*(z;Bfg`1OdO9*KyMGl7n)_he1p&wSwVQ8?HnZo+Z|lq) zUVn0w81KW=xm52b!c}$nfari!EAcei`c$I;Ms|3Rsc__Un6d@AP6@v2E_~$KZ+Py* zOaW0`n}2~RMrrEPiZ336LC`l zJSu*j|0O>ASEO{h)p0GrD%fcqx>s&(oy{~794V!7ci4>A&|_qZ(}`M`O+`YsnMsH4 zkebPNw&iX2&#G(*=;!w8uHzMufoCS{?7}YnV3*-c5v8o~c@MSw1_)llbQ?ceoAX_215S zs(c)-6=oj3*R#L6Fy$14AOMgzny22t`n`qbt!6=^1OS>0G>PT>HS<7j;KG0&wdvS0+!0v zfajgxD}JR0B}ruN3 z$iafvX8si_2EQa7*wOeFV@x_g3oG*=HzcNi`p-fcZSN^A|&r&<2Gv z^(`?M5?@k|cui&Y(Vqjj&eAP&wlm&_a=YLJq#^g1E_H{F5y+urUOe*L9uI=9h@%2N(i46J=h^V!V_gDzBJkhLJLh?%KZ(y`gG|M)jZ=8!hLj5$@(M1c>A*tylAtMP zCByc;7h4F=(nPHb%;hI-r2Kne$N)h9Dzx0w6JpV-nYl$%2c;y>h$`9Fe$Au^N)*qT$F@3VU3-m7;`3vY>Y+MlQNCk|R$3#H*GgMWRDW$>Y(f zCq3tG+$&|$G%_d~M`;yL4JvqfkFF3pU{Pr<@>&q^CHvbItWjq>nk==LsOn5|@L_>V6aVKjvl zSCHFx$*hoN<|UUpeY=gE-HicYoK{;C_Wev-DWm)k zR5BMswG0D& z)}sx^wFG>aO(ue$A{8G)RiN=WxiyYHKH6X^+_}27s9~p%h-I7Yr)h&Q8T3XLNHwb? zDP%H<91nV0aM6UH*B=<_TOi$n$l+0wg(J<-|Ds|anvlHQW+-H?X zpSt~#o{njk;KUh+Fud}fdzm`HN<<1!@MG0+H8BrJ1nIRDmy@tU+3&H2xz?Um9rXs?z*c~F;%r^u_)MmDl#j0)h3IVKU6y`d5HEV;@KBm!$L;08aTmnr z{^N+%KzzGy_}@N7{?5UQ0JD24!a|7UB=QVX)hV8Jhp}#q$a3gBt+<0&Kl4Imw0>5>h?p}`#pz|kyoUcFwlyD!`0b)Ou4?0wSzQK~h}FB5 z#$~$$j;0ltI=7}(kLZWP%TLbGQB7-Jm`84FA!wQI>*3%r^K*pQk^5%6g007LtdU;J zcGB?*PaEUEcd-83jB*t?_w$>Kau>z!9Nz^q5Y9|tx*LD}KtR<$%C7TWLq-=C6G~0h zcgHQln(BBJvQS;#;D0Xok z557+=(uY*-YiUer`Y0diS*IE95cY+FTdaNU{s2Ce|UWPZSt8d4GI z>mEG401`&zT#E@uwvqLx@ zXhRkrD8U*92qLQ?LvwSNc-G4H{FOD3=u>eFJM;S}eJmrf^MQWGOY}%=NOEGTIvBs1 zXiqxv5cCdipm63%w0w_|Xtt(+lw^J|!lVHqzTu#xrz5x1JtbvXGPd9lPH1VMAjZ5#ZJ*Y5?y|pJRut* z@YYE@sX97wq^QiL}?+ltV2@&iC4geA;+`kHSbcR6FCIkq*HW^rpNk;c(fP-NuMW?@>obXMi)Jy5O#4zK6<~BM7 zkys^4IT)|%GYcbB{Jb}XPjW<2gvH~M6;i}qijQBLDG52ws@HC%!shIq$L|Ab4P7Wr zGk_Z7^nDuqU|&eezMiRejGMWgM0~oOc2%v0_+kPRAB>*Rf;3KZA~0#;EJ-CvbGGRm zTZ|oxOi_(|ApKI6ExA5X7lE&4bZocAgUrY%Tx;xYBW;2e%wRdcRctq}aV>pIiPdvz z^|6OWN>1hs8*$x9yp;ofxFF!>xahmi!n1nlvR2# zw*KJd^ntQu8>s=aS%(hqa${dD8U{;Pb{oN0?B0V;O#EFzibg~alV26v6&Jv3NZ-(^D3cFem_0KdWp*# zABFPGaw3ng)cqRY_>abc?zlY^ZM1PTwOd>IT5`&n@OD|UDej$qBWkciF`%~Xun?IC zqw+TcOz=}CR84tf7GqAm%VaTJM%FdRy>*#zOgKWAw-W?(`$-1cF%lHFlg2p`u{x9+ z@$L9i^t>STo`}8p0If`D^m7SY;|+K_3UxH zaYvSte&CRutb9eV+!wf$)MwwkTxya!Fqq)FRYs07SfxhOF)LITC%uUqN+|ZN>zHR@ zdmEcHaLm40zh0)qZ1VB;&34SYTfukWXy1`L_WXFadOgS2E!3%^@8;1Y8eypF;5o1jqf%sVk6>t8>h#O0uQ?VQlps zw(*H=MY~8s5UPq?r9D6+WE%w^+5&luKl0Q07X1yknW5g(bR?QB4>C{Bh$xV69Lz3_ z>aEQ7pp$?bKiPvYuW0&My!t4fr|`n?=o9f3NA{QO2FK4n1l+}yn!)bZx7ABk%9B*_ zp)FzM>}oDeH(WHU&yA_I$pkPvi=sb4V8o<=Xt70aj$5W@lQ`4tJR)_=dvR)rf9Esy z9kaEpZ_%+oWcd^2I!JT=llGKz~0K|YOd zZ!WiGQ|2g?E;|r(hLfVmRz5V^KKgkFIq3jj^@cPaEall(4j-#u!(rw`N|RQ0#J9~rjV(hnPGcf zaY8xz62$r<=ej>RMcYwDvQA=a&SgX5CS}0GzzX)k;3i+EaT$V?U~iV+=Ta_nAeY*e z=4-|mz@wlA5=_@?E6`%F7zI>f1{R(9Z`A~l0`XMfDPVxuiO=zv@VJbcNzWn7VH|?G zA%iOFyt;c0kjaC-Vp(n)1S_I@+nAFg8k=(sU@^e?W99_=0&z@$q|Oh?*kad!Xm00w zGt!U&JDv->Kp@@*XK45UK6&v|cs0LoP$5~(>@*vJMR>%KA)*8Y?1gww{Y~snp93NTdkCw_I)N^Cq;)d-VRPiSg&0AcnBm6g9VpOyYQbws&=_|NWKtyRA}B*W zdZaOigeNxD53~;%`_LN$)eE9rjFmEs-Sdt8o*R2X7R&4rXYoKCw@MA-UX0_1i7V=l z6Xc1X$d6m3ju%gf&oz#p?2nbci9hIzFEWiQg#=fuCd`p1piB8`E+#nVCnQTI=vF;UonLL8&j^&$ZpPPdGF8P@QQF4nRsY48c0n#xo zAn!S#*Ol4YgCsZCiKfQ8XV){ z$2`CY6!nNBb!!QE)nYPW3ot^bRxOs^lY>>BkOAuun)C2ECBG*F)*v%Vgvkyn71tm& z;)F>l8ArMY7Fr~;Qz}DOD-lX0vkaXyu9qYMN}}F_eLR=IZ;+A~j`}<$$b*YG4Ljwq zH?zH#KnyBJKbA%Xq;W(?5v0XXmlGSjsZN;63K$~3vcRJl;-yI?WJsmJxCKmy<_3ZP z^jj$6=;%h2m{#I)Lp&&$=!sV0S^M#cCCKp_L-F_#DTJ2tWK;P*KFb$#QAM1L`rMex zf*x49kUy-FhrdputqfqZ6pR|A$%Mw7T@=a8ff=jG*DjT?Zbgs4D7?cgvRMi;OSRb| zmv+`J@>(kLzAbu7Q0&KB9H3nsl}04gA{g=6hO*dPeLu2Y{i#tf&<@-bhj0mz28Y zZ-_~a)y}8q0%)}Y8W+p3&!WC16lsAz)Z+DwdBdaZT+jljBv=D3uRSSCZD`w%=6X`DWHYR}mUe*DqC#(xJna zu-~@;#FWcm97@T^sLly^d&ueUwM$XyiYT3^5yLIe8ES4CE74p5C{|2n%JlE(0r26( zEcE&NB{eS>YYwDSbEa$cPKof#YB_Z3xE>B-CR#D7Q;AcP>ew7=Gz=I`JekFm>q$P6 z-C7Dsy|#aLmxiiJ2`FS{4Ud66slke+8Fa+pYm0wAETqF%uY%N=H`QP)L!IGk3oQe{ zk*eYM%@;9fSTv|tdtHx1)+Df3SDKpjKnC-vr^!U7ZuzPS3A@>^j6I-??nIL2bjrJHnt8prRr@Zr2L1(HbQiF;WVEoA{F^*cwG#DPE$X)lU7)fN?{Pr zt8l{CvC4|%opJ%_MMLiI?g)k9G$<3I{mINl)pTI3F;-xkjz404Q&oL9z^D!+ordg! zAyY0c10m4>Bx)T2ONi4T2xzvJX{#P=-^_%A7V2`-2qmAUoDKs6&E+<{6-3I_HbM-x zcZ4}zFrZFI@IYGAizT9qU~Pgy8i!*z z64nAID;K-5z61G1IPOU70OEs)n3=U2qK44ka5wh4TxSiYQbIEfc^ARDRqR*v;j%Wy zoI!kF(yTAtmu`JA^W9bst#D-BsScj8A|JL1ag>*X_?KRpNH#*ZZI3&)V(76UGU>0H@32^kn1k>*Kra<4|N1C zWGAlpCy*<~5F;m+h$cm`nokMPKbH?VEf1j?bZ7=oe&Xn@8^I`GoP63dX<{&Cr!*Pj zH*yYZO?-`E&pjohWJdm=HciR|;F2?2(0xg=0%*6!>!HOTPsgDBhV!w1N}g>7L1m`< z1<}{L>23yhCbGWra&&0{9F0*NSrooX*(rpKS;#mgU zR57yf+<4~FE^d^-zMaT6V@7s;ArPmJ8FEpvr+=M@IOGjwKGQ69ZvbWO;uB5l5|r+q zay;vbo>R7uBaKU#PzCKTag^^rikM9DqmX+O&ypA}k&-QMpN))U)E3GvOGeOwDUQ~R zr(YabnjO^CM&~&m$fns`J|Zf;@9SY%%AiPLA|3A_U5O-9Tz0QKBvWLfDArI-rTwIU zt3y^%a3HXthcZ((wTM0GyFvVs4m8K&u!^?cZ>{!rZ~hYj!!)$=Ct9-g0XaMd3sa5j~E^+i$JN?oue^Z@C8pGP2ds8{7~D*&3F0BaQMTcYtoNNQZQwbPT&F1MTa zBm8=(l6&7qpAutCS^?O;f3iMGr0Jb`J36P&OlXz4MSO_ma-@96u@jpU=C!(w7`r0_ z+Ggzg9Mivr{-Ct2AFq6vG2dskozJ%Y7IllsmY+dz&y8%4ZgrX>cP%n!FZAW!>dWHn zDBh2kjtpP+zB>dJL}9N{?w(BU!%`jym5|k6V@*{7!O17J=t}TOLJ34WK#o# zDrhd344{XFlS zOyBUUc-srWXV>Ja8#|gWg~-%+_a2aM8IEVJX?oWAzFcLF`*O$wtcaCydnPlwa2r0| zW}@ujbbaN1dD|{T7&nfg-Km%%bk%1|S-twz&S2}q*%{aBr~X&`MRuF23Iwv97;mD# zbv(r+e#pF>t-9y(-ZpgjMj`T@#_5g`dN`N)`}qrk_V!^fU{co*Imc6S&FDKiwojoX z)U*$_5K1iF!hSF)B;v`6>!Lv@#DW3b)#~D5*kreL$x5Fkqlg8(pWr)Y3xlZSGR0Gr zx1ssU? z{8LFH_9HFjP-3B=2q!z^p#-K^{X{A%EA1%)KCr~v=eu6Fb4o$MqJ$~7Lu;haCG<2}LJ#N^>aAUH1-fPQoM z03Cp}f~X*_RTifx_1^MSNhYcEeCiZ+wq8X+XwwH4Stzm0|o06XJNV$`YQE3Wogna%gnL1~56yB7 z%l~z`JY?Vt#245$+a#E1c$;mUrVtTEf7AB8*xtn9lOZ0*cRQm(a4WPbBk%(2p)#*f zEN3*#1gfWXf(2X`%`_C8mh3(VxUINVjkvD*zzMpq2RG3RzYBdK=&_}vyV|V!%1+R8 zuc)ZgGcqwhUFV=_r}Ooh*VSr;>N}b)ucL6TuJh0jSAwL!rsg0a01%as<$oKmketb{ z`F(1xRQK1$uAdF}UdhHq<5|Ms)ZEYn$z&eb78i(bQZiknm?s^nsNy&CYrI1L_lEn! z`Apl-L*Ufhqb=_Lvf(u>@{Cz?l>H*t_zWnxlVY zfjhDP0So*iHTM$>3<6UB!UF&Q-23^b)ZAg?vg@BybC10%Vqe+`h1*Z(te86*r=}}~ zj!)aD7%pKM?X~Z3!)dyq|Iwd@qX|(BU;iLu6WA8V`dF9$lP&Hy@d~E%3GrX!70PI_;V;&GuZJx`Fph zo;Bh69GY3)>(Q?k{3DDba`7iMt2q;EBF((=2tFtGvrnN%S*IJ395%mrJ~tWd9#8QU zX77U#{#Fd6a6UQa;D7{gEhxq-pOQjqP)fTtHu*d)D`Erfm3=HII#gPnrurN^+=c5Ql1Jr&P9&zNgwT*k366<3Rt zg56SG=K1|JJG9orsQ2kv*7%cML1^g-UxNCWw7wky+|r34W{h-?-U8kgo=JD@`dqw( zV#(1IrKn2BOk|W2u@|?)hVp0m-x-Uap)HLhDyw8OMA8AJq*XvmSh3!sG`#QWh9SPj zg9HQ3UKpheWwf3ad5i56(UlGguAG-}Mp~-e^i3s|&ZM%s(2>=YDpwRbr#uTR)hv)! z2-!eLDp4&J)%DaPJ z9}Y>Sop%bnGwu_n3?G0fw43Aq0hKqGn?R~B4o5+SqOnUesH+nzdnHzR zd6x0}Q-s1lM9?5=UsLu%t%jjE2;tVS7pFs)hXPG zn&9B+aD&xM+@f!4n(FoOcCvUP+HSmA-jk)X<5!?*(MZlW39Dl(gfv16@ z-tSAq_0TgJFKRyqd?Ei`v^GD)USvV{1sISXjg;G^oRk?{kyitKkKIhk^D>c?7D0T) zCCyj*IU1!dH~&p+1s+J7nDA`=-Iv)CXG)PFQme}@fj37bAEiG(KygA6T<+>o&ScSA z@yylOmPUe*O|h!fA~s*TsVvjoEE-MhwNh zLC@!)n1{c=r;Tk}6S-X+16=Nl3j?WT!#~tkG^3J#{;Wl3q=9%)V6Va`zDn>yWHk!4 zyIMeZPqOmMRJZksNa@Eyyf|gvc@g)>Z<5l3sC_suO`UXL$V1^KXK8WJAWYaISXBhw zS|1(~4g)}PpI+`zC2vS=Ul`4fsohDclJHGck9?!XjR(+#rm>W^;cTHzdbHf<+o7Ty zZ-yb!MM2)|y6Ag8MlAuC1d10&A&`8_a8F$YF7Bhub@`T1bj%vFR=)V)aIDh^&82U5 z94pMl$H8b`8?WLNkh|=YG&;Ptl9F%6-2~5zSibE)f4H5D77(jH-d}Wkb-7m5 z@o**OgK;F&ckiOrD2bft6<@4PdiXGK$D$W=O|dC(O?-NP67F+z`-=1i7Xs3p6>`7_ z>e@$e%kntK8*ae|0uKUp;Vr`TTcnV;PYm87hxmTi@Wpa}ORV`8uC?zAh~a_=YWtST!Ccc>V*=-_U+&`HDuccj`> z#MX;QWrN5Ca~#FyNF|EM`Q1oO$B2y(+|3a5HO;8~WWv2>&oZ*$g8_#65Q47@QE-OQ zD4jiElp;9wF zu+6%0&FKIQ_6eS`NkToT1)+>Z_-PsRJoy)GAU`SY#}A+NiS>C z{2kG94bppCu$mWfooNXh7t`5A1ZhrS_J~GErPwm0YEobgkgDl2 z_j&MkTQZA!(tRv4VaT%7V-t2Ev%VN+5sD_4_M{x)3n|@XLGflk(awhT%!W_RMr_SS zUdl$j%|2dW{yDt;16IX=z<`K^1=h+E8)K*t9j-y=(SC`k?!|*&!M|is3Q5{fAb^?=egEec%?GXHmB)zSfZaCp0ItNQ2g_Fwe@|Mhh7 zPnaC!=fCs;e+UzPkM{_x{R4;>Ps45tca{9&+rmq9IGkn^9EprfLLg; ztV|R{>j*zHIrzP#$Y#KI1WS)rfgDsJ<8b1itpc%NtH8g9RUet03>q;%aAJz|CRex* zzMq{wFv3(e?@`9}A6gwp5)q)KfHCne)Pfm*6W-o5Y6L*&P_jc*6mL?{(G8MFPmyIt z7(?k^4ahbgfs#13sQ9n}zb--G!IyUtr28L_DdcX`oOi(h3h8uUP44?}JTPPO=VK~G zxmPTS(P$`L>gOfM?~W-Y@T5ThBiQMW4%(GcRXk1~jwZ_ak7%W&IF-dLaMSL|F974e|-reI3WL1AsVj@ z;(l>{B0+a>Av=|2seZ-Kep$8T1Dz#PW&baX$v;2`8!r|9atQ*k`S1fBtO`1t(^09o z+%7xry#EpGd}K_1S6g1KR?ZJb2a#ULp8P*NrYt6*FBkN+%c~cRkHZ>!O^d+JK>NRB zOyHQW|Jf46matUv)?eohc335Ehpug#XGUcgNs$25yr09DC+p02Nl=K!w~h73%wYKm zuH7S3|6f0*x>Vkr&R0FNIe+@4@*Ce}r~T`j&rc(uXoU%H6ntR*R9mhgXuHuhl$_>nz{6>EApO2}> z@>!^@Aie*J{KRXHg`6Gei^U!j(lZ zj}sU*ZYk**>)Lp+@D;jONm8ODo3YhiiA;En(yHv#iFiFGBF+}Wdbg)ZV5WYQKZU{& z@ev&~4YMp6F>M`8o?kc7&)*xN5v`M};Mi0a*BZ6mrb%1XUEq9_pZu1o|HT;?jqri= zsvOLi41(n+w`W-pD6~7>T15^~D%t96=2FR_4PqErIl3OZsi@i*VWQ``cwlFsfYGFC z!#g^og<@dO{3M9}OP&@(iBwwdR02*x0rO+|?C%TFE(6j8Q7n!2$!fe1UBZzC=;dNd zRa00SN@Q%Xl+c2v-t#xaj`)_UH>GCdIbM{#DSNNlqaCMh++YZeK&SP*Zm^7g$koy6 zKzNy#wi&j&(m??J<^0fm=j}z+TaQmQSa0knmbLRDTA(&|C!&9bW@4_f#V29oGv6xU9RLTv{v!q_*5i5|$IjTrC95b@R z9zHp@P=o=Hv!sxH&1Tj$& zW~D*mlMa zO@DN-&?$rTQejMi4^pb8V!;0RZ6h2E=hX;jij{uVXoYB2qYNsKitwMdGy-M7$k_ojcmFaD^xD2>lVuAw@pXx=V8sH}1wI;iS~ zB~&l&#UWHp2)(g+-}aTO&$d0^0?1OmvSMN@c3I1@+;#;EzAqplbOB*tCXqGdjQPvgS9gNC2^m0% z$*(V9Wzw;G6*!Yp`e|liDJ}5r`cU0)*<9HN&~vP?KXCLg#+WkKm1~T$y|i|cLBE@E zQlwPZiJ9QT6lYWXpylqY`XrokH{d~B&dI30QC@aq`F`CV^fdnRNs0ov ztUS2W`A#xt9FX-DT0-I5wVAV5GB#qC&I zAa&iDY;VuUw;6)Sw@^tk#>#j=29KFV8%HKO!6c82kd5dlCZpw`)c_*F_F#X{mMQ*5 zh{H&_wYZ-P6^YJ7*MMLJ_<^^OCdAblh;ugZB8QvR>U98Cf;#7mI7$Z{pD%e$s3ilE zrOcoxFLkmcj1NHV)7az@<4V#SR>@ZSm{fjv5?t3_MRjALLS)qH%cP<6p5eF>ivq?w zt|6_;QKLNi0wy;)%$KLNq}zAoh(-v_ukRhHGiQKQS)wCtH|*5o)>{Kn9z5!v2pmcr ziJWZMa+Z3ODMTsx&l#rVre+<}cfE#jpx2`DL^hwUc}ek4-*j1jx8(k4O-0jm@qp-g zdq!1(KhFQaGp568oc*K&o7N;{Jb<^}ymC$9*;B;CKxJo*%l6$dZDS=Zk6O+}T?NTQ zO?kh>FUrN`5>lK)TwKhS`L3T=rO$TKC{B$F8AnTUCF$ie=1_{>7{U=I?Ws7E&)D>q zt16F6B4y*aq(7(JS0QegDbc>L79iFnc9sAZS+$fe?Y&^?;XRPs@TP46vf1ut-_h;SynpEw&=|#ZrZ>zj}HUB)?RgJ*GL<_+T%GPpsfGepeJ-zHu%l*L+3pTD=Lic zM*`5L>d-;qYXl;O2lfTfmBUy6yW~}bapm4HZTkgsZSc@@?WTqT5zJJuuAhKMhI#lk zPyXJ(baeI|6W2?Wu3Lsq>AwDU?f0r$)-i}~@C`mE4ifhKtR&Hv*jny$5pbfPEk>XB z4|_Vw@*Axl&Qym72D0a;T9ZXfEFlUSU;dx!ArR2wq7dFpk*kM~3JKV6$T+plqlP;Q&eNL=>hZVZy z3pBaMTgKeR&N3ehH0R?B{N>McUkzcw7<3;=}@g=m)D8U#AdxOLUsw5huUCqRQ3;8aZr8$G6?#_v?LwL zeggG2zqmOMEVnodF5};U$ra$RdKnGpE3iH=fw}rh<5?ow+dZD#*D*Nv55#i}d?~Vijp{d(Wc5NFBr#A*~LLbi2=grA4jIW>6bdp1Vx(LnAauU+P zypF_yfUglc89wVIrpoqdk9=Suaqx*g^S;)23xa%YZuYh#&l}o78I@b++m#Sz42BaM zuzejJS5w3u<1M2B@eaCg1GFC^H_taSW~ERLAbjGTjyuyTuh(G#(>5V?9CxrP_D!5y`! z8MO_ssgLfs;fsEBj(!LP94DJuitDK?a6#??I&iphn{jzhK-`m2SS9Fp zg%(e1Vu#sdvHK!*{Xl6HL>I9P)DLu+@MfT==&^V;62zghnxMG4&tY`yp{*Dom=pke z3Rcg2EbC^hu4ueA2d1DFy2c)sY6-dy4`2D>a$3pvja~fbm_9tec$+rWcFP0DBv?+ggSk*;6ZPt{l=3M8cK&#`W9cB zfRLU65s`7pLXvpNjUrVTjW-qTB5mh4i#{B6D>L4h)F!4*cns%L>F*r%RSfLd4J)q)PS zFCw;|k*ro2!CojIR`?{ZP}j1s!auKjppdszCHDr$DF+nh2R1q6v`%~aQ5CtwWlHyC zrp_e1UE;1sDC+HvQ+zPXlNQOdbuQ*7D@hhFVWcT0HL^9yDcNHuXlc+ixW#4VafsZ@ zO7!G~cPagxS32BVdcR)!nxL!}5jSQiM@^|ro40J{=6Q81V{>U)!dY1p&-1gK;=nk) zjxfwYUOc@a?kGfZ8AME%CC1@f`q8C06j1CeB7?>vX+L85+O2Xjd}i-y1(87|8&}2p zP&tKz`f6)sMP6m{Y5CVyp5)uos6p;Y?W$GLs!aUSdqf5Z!s<%)>L(1k!}}}h3In? z+G_xHIQjuweK4%mC#Na~20Wh7hNP*67bmGD)AgLdMxr!c-n2$%wT2c%Y=yLR>yMWD z3|RAF+{(i;wn(+}@qt!^=&Z2%%_(t$>P`1#jY#NCKoRY*@N}rNCf{j9ZbJOGS|%|% zsc%GdOkZQ3TGFdq7EqnPC52@5(810mYi&|)b!uznzF{rKhlm_*t<}kUCen&PmQa(% z*+0{S=+I)Wf>=2862KDF$-4{+BUl{;sMCbx)u5u#T>7UyX*;mAr`qnUiiQq!VKP|wKADx?c|CHxM@p%;eieO*q^mojv9T@m1jzLM_yOp8AL-2cPe zTQF3Cc5S$Hifp=5x=Xsd1nE?|Tj}oZ?(XiCQjji1KpGSTq#Hr@*??os%s2C%FV6WB z&wAEc_qwhg3X&d(gB~qQ6fjU263}i~PHoK`p>ZWITFz;)P3&MP?ZVrKaNa{b@frra zf0!9?Z@4c|mRn%hTNcTuH$^l--@PB=6VA_zFE9{{t_nQ5iNEiqeaHG?f_mvyrK8c;G)=&z5?6Skccq{?Cdqm3-(9 z`^l0l4;3aeZ*p-CDisYvfogPZew+j7i|5E zCOao>{9Yg!T|up|%#7jR#p>KY0Znz6ynmf2he6mz^M&7vFr$Jk*OK3cIIgGHO*;Ic z)4pH#p|Gg(%T{^QE(k^^u_nJ=KmGTpfERKgX8YCA_!zI-arE^O@=1)Gm-6@wY@yUy zJaEB4k7W;mKi?2Qb$#(?otalwv_&U~(&~=z5h9rqhysxK92dfP|L;VY_rFgFUPi?1 z8B)^aAmr$y`!)L-!E5Wq8Qa%Y2yKhuh2-3Gg5xAO{Grn(#btKp=gmb$TFoZ^mC~v{ zOe&JQ&PYv$Vz46^LSOGp%n%F3trMS!q@u()ZmJhy7@mj!2{a*?J&1H3&LjMVTGTI$ zdqZjcY4LSOX)QH>knEF3&M`p2ZhIJ<%8O3{87&?ba2Th^MgAIKApY-RbkyWtbk)S8 zFZx*_nMT4y-x9wwEF8U8T(^!yo`woeDcp=R>cbnC{-)(AUAq~w%@^tbfLTDVrVBvD z*beR5Y*lbW1DFcF1($JurKs#>FqV^IPj(DAmCGb`1rD{c=jz80!AnwkIdWpAFE57H z>qEr65MXm;LW->gxuYYV9X}u>pBEt^R}2cSE1--pODu#}3Vfkl$T#>ozXW_5V(3t%;7X zTy1rgZ7&S0O>HeR+%Z+B*Kn-ME*Livk+CgsY>HJRumFXjnvV<@@GLE&rf0 z(Vom>Cr6()u6A%LwR1#M*YA>e0rjl8|AtyLG{4S`MbqR_X`k?FZWD&Ob!w#2v1w>w z*Y&Jz8L7&dOH(>b+x~^x#CFHN8EWOzk>;LK23IrEr7z6(9iV>N{b)!h1W7Grt3b`; zJ&P{>PLm{X$7W5lc=@ZIsw{LPykAq?TspqG68sdJ<5->El2~&I(*2rX3E5TDG-tkG zzM4?8LmwY^yCd{ZkcWHNQt}^pD~4 zZ*y`lahw_E;@c`%kZgDtF3-3F=G2)l48GH!@DXYI1<6W3UU(BO$781ZpAVNW(XT*! z50`(7e*{Sc-?GY|1Q;xhwzu7}`-t|AX$_7(Hdt$x^WDZj)WjG&+ZMjuu*&zeAV6;r z4AnAduWI_O3W8YW{}=I(wItm@>h)y9M6>l2)55=we?-0AF+->IWDt|j_Q%8}$_5|z zEzSvN-`dEF{vnz&F5UcZi>AsAkNIeK>L+K}O+oCwvYp1}H!pW;8r*+WL7sU55Uaeh zp!57__r)>pKxFL>HJ(-b&0aO}?3#AJ%N#~_zxzJ|=6nm6UqyGbOsA8Mu>Te=kLt0W zkff|gc_DohE@%D<(U2@F|F_|Cf+BkJCcgOw>$|;byW$JS{~aB)2)!8k<>*X|SF9A6 zJ37j|nn6djR7}s_Fsav7ZKuf62h128VB0}oEq(OS)CWmk!&pFq`+2`=m3ssMG~?TI zd8q@pLx^rh$|E74&W;+z^iF}AEg8&H2wUD=Y8k|_OQM?mpbi6QfH(BSQ}lbLoqC&$ zuGe{s$56RlIv7lJ9;-SK%ro84t&AS+GI{~~urctH((t3tV8yL-gg?vbJ=iG8F67ST zC4AQNfNmRI8<@@!O+01GE3UmPB<Y!^`6wxH9&{(8>;}wY|So^8pnnuaPm?gknz|v8p z4l2JkPORKUr+zjd6WQR)(zuPn;3hSkajz~JWS4puJ0KfRP?s{kJx-N{^G)h`!zzDN z09}{1to(uF)kU0Ls$u#%SrK zRenDcvj9Pybx`5`RoyMSPvmGK1~Wgu4L4g#EtM<2)}FJCtVkxKae{p0xPYgH`j0C3 zGmA(Br7*Hfuc&Wrn4$~)q0rWX1umez(-XdhrY5@he$oXU)X&*aZ|TQ){(NO zXM@vanYzR#8?>Dec;1X~Ke5W$C7G?J6p7N}2NWBn{XtSsso3`;uBUa`ARV-X%GsKz9|dDHU{_Z$^x;)F8v>60ku?O@KSPb_K|8f5=mZX(5diCTAFL%MTU7Jl3uRcOfU zwrmt?p{F7^O!}%p z8Mg1gk-FRShCyY4quAC&`)q!iA^v#b2o;#dLhby$Ig*?GfH)h>vCEk%DNxDyA(lhN zWi7eR-evu@@W{nYbM#?dg!|z`yQa|HcQYhYWuWHhgQM#!V?34x2Zsd zXZ*6^UWHJZ4{|LX<%XjGCoH{Gn#=)~x^S>n{bI|-pTeG8slvUIe9e-25N`VCR3Hm| z$aHBg0jN2OjR!YD+sGqUVyzXLl8Wlw@+FD!?-L_63y=Jvut**Tl?Ag#@n_EjgVQB> zSk?#RQx9)l&u=GtR9a(Qa@-5(Or(Z1XAcuIsL6!vLxupGR>T|^1%jFv6^g>BvF)-H zYWynFM%+qNeNZV(uq-1cx31^EQdszhl5ULrew&BG`~@}{MmtBeD_e|5jHT1*G4OsnJ2u_*wl3!#N=rglEJ z*ezhEUCty-HGPz@qMuH|G3aqecq}tcgtQ!rK3ltRQ%w#Mn8Dbr1_y6rbMMF_*H3xx zKN+9;08J~c1Lm|_L(SUNTdU zEf+@WCrw_?{f^Flu3OFLO8>=yRj>Df4BjPSz{>=wYI^Zg&2c%ahA@vZK1p!BWjba- zQKT*ymbqzUNbItZlU{3?&&oOTAAKPPR@AR($> z7O&d8vbJXug3wFuc%h{l@i`3ER|OeX5Liaaa$u5piabY(Rd#){N1u$a=rVFLV0pTk zMkzj3lY2sB;9wp|V*HLn>tsSRfwg6ePWvN*=)|jc$@xCgN`97K3feYzm4qIdmul~t zP%${*gUB_iuwCyeG2zQqtVES%PNw*!8XEN{yq+3z%Y1eeMi&z@EHri}c6J_}(J*rW2k zxt+GEDcJurDx1$FKUh;IpNhR#+B|a4*%gmNk?Pn*dtN4WuKeIZ*qFO7K)`y45^diO zcp1y<#WP)Xeb#xILYs+{xci6er!lM66hH$L}$PW2RXAN<}wz` zy>mL0WN%_g!8%xUJZxXVNiU{DABq`#V52WXG0uZC??HcG6cWFF1>bW+KjgFLfCrrZ_6mqKeg4Mr{*O5Wl-2)OpEd_<*!g(Y7-dZO=tKC! zi0VIe#?k2tu(pGlRrV*a3yg^gY+DJO>IpOt#-a2EJcGlhp?dtZI>-qd%cY;d13Nen z8~@tZC8#-=f!R|LwLh4Z*@L#mKh)Ro8iqy&4e%3g7X}OhtOUI6w{IfNU!?3z6@E?G z{rD!@QyCThb;>SRJNK{2|NknL{lj!7V^!2#V-Rr)bM5vmm5p{>{QvTs$h8eVnpdSw z+}?WfdFEz@{(XAz2X0qq?4QX0Qg(s2rnCRQOb;@vYFMJP+)?kQ2l(00B<35r;j>sm zd92h3o3eg#=9>l8;L>6F$&OpMj%cp%xjk2S8llJ=yd=@E&1*l>8m(_`!4u#{Ww8z zEZqnS^Ra_~9CtuJc^_R}+1aq=(Fo_w^gtqJ_-ITJ_VzSA0;5!%vVtvAQf+AeO(G4a z_1nS7ReGGq--RyEzpk=?gf6$I=@D;c%$xp5Wj_&zVO=768`gIw{A@2?MsS zsp!Z*!dLI?3zYFdbFIU0ZF9%h4|ztvI`tpr29r9cOL_H@qvcX~m#Zhz}fp;J9>JWMF5ud=7;4Tmn>Pw^uutV`eq$5C(PHRyh zyoqe2MBaP4`< zt?D^u@JlbraeuJp#hq#jj1emc5+o?1xW|oc5h(u72F0Q0Kxt0EWXt0q%$_AA$Zt(hF|?&=Dz`{$d{c{2B2aZEH_uUDjNZ8jKEqnC z)SaMT{quyPpJ@&uTloN$c}@tJsc$7zcZo9Oc*`T(^}3zlP3)}$fvQ0%1StZzbM9#k zYT%51h*zzc7RTHan5=a~1=ysLK`C_e)SE_*d!`wUkE4hK6B`uOtz<2PVFn3Bi{N6s z^_j6`6zSL@7Bfl(EoBg(pRfm4M#Nc77YEeB=%TgK!@19ePHA1ERf>^Us6g(kuI|PY z_ag~D+RTR@>bAMJ<4pIQNG5ve^sr>wz(VLHEjT=)C~9`^ybCnGB6qJUab1I$mDPce z4?0H&jE{|!LoxKD_~Rz%i+x)m?fG?R=PrAi9YOXX&8BCn#2AeM4m-05!%{v~vJ2K= zWI1n>YjgW%pKJ^E%S1!uHNAQk>Weuwh|oLQ;7>^*mZYV(QiOU?E`?;R329q#>i8bm zwo`23W%NadJ@2>?;qG{B<4RUVb;L=kN#HfG1W2IVkjSRUhj2Bnt4z1|2!t*Qjli zkKN>9iJHS99SA8VbOfD{Pr>O zDh!-3Tp#UeefxFSag1m243x4v`nuCmeHCR)w3j3EAXMjSg-GC{ zU+LO0$w_^kJj$hyvLwm@7H3h6$oWkg|8a5F@TN-E7qIfhlL{}s1s(aznFk?;&z-Us z9lV@ImNL#9VLf-x7~Cl^J3V@q+V=dit`^2>B>iD|H}e?Jx0JH>-!^$JrzyMiX98OTjnoz;c-A01^ zN1ObmXZ(?p{pI`phnxIo^^olvpw(v(pbS(Vuwi1H2VlYlUaumekp<3C5;Tq@@KdQ8 zb|Ew}v3G*`Gsgt-s|PJYOA-tD5;g~=O$RMg`o>~`S?>Gkze6A?4)Rp@$C~hBAYqRL z7Gv_7nrbck*0A2pr?-Vu+RUtGnI8+4Mo&m)~&{;mNAKO^SOyE2aPy;QJjH(J9 zY9OMf-w;B&;-=pa;Xe~G-yhL6?R?MKUn$sKq1c80oagx&SD?Bx#Ei=)b!Su|m@U@e zrQo0kD~JNl%CDUxtkE%@*8*WhCG*8ZXnfQrOaX~`pnGyBqk>4({s2ABm^cMi2Q}4- zXpdrN5#wMd0JvJ(W0eq=Q2902e8F%UJFNg{HwbVRb2uFX5;M+x7yYBaQBFV>&@Upf zDHwGCa2g$nbb$rrTL0B-kt11!V>KSQ5}FXjbLS zlNSA)+Q646Cl(hfo<%Q#3Ow}HE8aX#7)9>@{fB^4KvGqli?}^X1rv6F%aOIyZxfb@55@7lka!)qNAy{nTiU#sK9rpggU3h zHb5&}qP8w84jf>F*>v7v_ zc9-Px=}Ss~h$hI(nXW38>Z#^##2J7@!i;3kLnvallkLo(oTeF)2tVN!4x|FWpQa%& zCrLld^e%A&QbiHznJ#=_a(0l{+z;^*H#T%kYr?RJYZ6+7M?t1W5e$yPV0KDTcQQA9 z7{`p@;1Jsg#>(sdkW#lyuZ}~wVq?m$PF7FQVAcom2B9tH@O~B=Q)a`STWvMhGpUjA} zxHELHOf!I3sY{?Z(|&*9J$oJ}t|WvwXUUXQaBq|Q4_sr76GA1T?*mC(8y_o%xDPhy$L(W7>OFH~-No~uTlMk7*~1fL2V5Q>8= zi!niV-OO@IiKv`L=@2N&oz)M&4M=(Tn?~PxwiQD z`}yPaA|Pi4FG@3^^)iB;(w16sX1206TjATBD}nH+{4>1GDWycNj6f@hF zn*8M={*9dHqJ>SbG{b8uDn%;rU7R0C*CHdLzXmL9)sO2ln zAnblX=1+4wBi85S2~BWvnZ-gGu7eIgPo2Om=t-^8->l`>Ds`7C4AE@hF-M{MkZozM zLJoskz9v$PomA}-)$}&Rpe~O7xKuo}jyp6%*W5I|uaI$$DMKTlEb!rdG=EO5=qQe2 zp0fA^Cq(VJDpBgRW607<;yP|T7nPKzH(Odp@sT1lg4Py!%0rccgO%B|0OPHUCzmMv za7<7!(fBLKY7QK{>LKPZv0CFAsivZ1ntZXd;(4XfveLQf?@O)^xh8P4&bb8`$dYT$ z+e)1B(x|MVHIIjK&inK+j0{vn9PEqKq>^!99k1t0cEpS9rzI_mbK-5O zc?!V^4h?0?Qu+R^yy1iO@FYcy$Dw3GNk%jL$FFp1sBuWmGnX(Wwo1`2o)w2<+1 za0Wa~{b!N5V-S6wwHlnZTr~a_G@V7-c-PQ_YW$eU1}Rj_xfWt2*As>#EV z0QUq&rQDMtlz0l9@QH}nz`DUBWXSDT8D+z-fDf3tN?3TEiz1p5#$B44wX?f5x;vaI z<&(R$2VX-aS3it+Yg3#LW{7On1+8scD~0I&m39>AfUDI6xdRa5AQ{hDUzs{5%$89d z*Nq_9oRMW7M6lCo$vu!;BJrAI4BM^-QlUNDoI@H>&`1nsQKn&)x5-!3%;)lLL{Kz2 z_gi$7x<0jcWv#u?=U%Z3ZX$RU$bQp?GYHz_Flrf-ldvfB2)(u;EiSY(+dNYSJ0-mR zp=HSdF*WccTm5)?r6KL89cD9@?mSHm&~GpE1FagaS(5e}y4|_Ti=WJeEu^To2E`)g z$082L(!T8)d3S1y*tlHnE$NF=(~xKyHwKJIl+l>$@|Z81?P2Eu%u>%$IJw0r5LK?B-eogJ%hoYG2xeKJl<(A^6ZC8rOL~K4iWZdOC z`fkRWDiL=;N3{}1d^8|DgYLmpF5<^R^8mixaNhIOxCbmDXK#cVP+DMzV%gUepRUEe zelOygp&989RI8HbpI&@_Ke(+@aMXX`qW^hFPAo-eNtrSd4X+jhi@q0Jr$Ft-3K8G9~Y&$cebJ! zBqeIiK?$Nw9ZI27wd~p;*NfxYL2bOZuwGQKl;MOC3P2S}r=Ir-X$}U;e1b~H^?0HJ zzdMo*7k-i^UTFG(M8WL{cC3JVv|7>?v(n^nh7Xg$V~DUM!g~AJ*Ay(fH#55!ZD0LN z0wOFF(l^YjBqS#hlXts=0EE`Q(Q=Xdav1jQm@Xbzk)9q=3_j?%U=R&^Z!`B$Lw(9S zwxEy;4zA||wVJo4@#ja==r+AV;X9@n4uVROhv4@M)OIj*2#zv8KcT^R1?#itybf@7 zM>q2ztMX@@@FHMD@gT&e2clI2oj2LM4#B-p*XLsi75A(7Tf|fL1#I>k35U;6js$(S z2V|0^mbO`_+}L$eFo6B`84^fYD9U?;ANeEA$_sifcC~Cab+S&j2=|cTydHX;%G(6q zx5=^dn6(}|g`VAEnqyiZ6m--%dnS*))PCl^bmj>>^CmiffaGz!v!7jb6qvOVOtcdU z-0vAZ5A!;Y)H#pVxp2zbvCX=OsJaNeK1~B&SRki6M_ptKG`MD=8x{jrtx*hTl3Yat zWeLG5vR3K@gc@|5n!L_h_70HIF53hyyBMS54lZ9ZUiQjgd4ycmdtDVG%Q7-POWM20 zk;l7AIm^}f`joc2#4F}CP~dAJ(bx2`ube{DHH>>x+Sgh|WQCPzCt4?&E7uR@uu(s9 zkJ+G}bOPpV0B2)>3m_KQ!Jlxu*b1v4+%Emoo;%zw2f_=u*la;J!rySavZ16rv!cOq z>mb}NYv?33O0j&dn87v658UoazCg)0+^%ZnlXg!B?D|~wYE8db`Z<(Mk$SU*jsQG0 z5N_9DXR$X;ZSQG^!W;;<%h{z9XaP+mo~~Xq>>38b?c!@38V*vIq>^cC92t*h@OiPn zKW8z0Q}8HDH5KRK{OhtOoq+^er=i{1lL%5+nXO3h`Vmu4+$gS8&!`|9vlvE*h@BXgjz0=FszH9u>pA0k zW(fkPk2MlRu;vF6B;RnmZyJc>3~Qw*v;0{GD-+}2G|`v#unhGVPu9vXcDhH(F!hnu z$+C`-Nz1ZL8>02IFZr{UbAHONljGUzVU_1Q`&cJ00EA+DECfqF$^8)V(H8KrD3*nl zg2Y_ULE#Hhk9tKWj~X_mCUm4orAGqL50w?twrrJ^3g}LhRn&|cRMd0=Fh(cz3*L2V zSoA*Z)Ox;#(fPy;+Obo|kGxUcAWDo~!zjt9QNtw5=$(>jQ9!Qf0&$x0)59p?xtcDT>@Q&1C&lz-SgZaR?1n!BO7(u$Ehn#ZR7Y`x8<69~g=+YL+k z!uA!i1g~8$mdOjdJ`c9-`98{`7te+m`*@#^aD004d`tkA&wfGz_Mu)UB*c%53K$qT zD8T3_!$y*9C@yP>+K!w5Cc5}jMunwAH97~1ggZJHf*IF4FPad& zL@17sX0sq(-`uP)9dzQKo9a7TQk=zrTUwHrt7)EBRGV5_R>lvUEiJElgKJTczg}8e zS-oC5tKEr-PABy0zH+%>A58RituFi=UCkIS9)0aw8ZG*|uBT;Ijq}`d^z}>9cnl36 zG_@ES7Yh+9TUTpkD%;jyhV8ZCUnil;363%Z_OnYrc-&b&R~6)QTeiwpJe@Iv-l>!&(`s> zbu*@u;qoTH-zJq1mcX^uKA+z9q;u*1(Jl-$BX2ZU=NZpIaxecE`e2@_YTCXyN{U|$TcsA5PEbpZDm=D_Uop#tYnjZTq8%{#oM+*wa&!+qs7 zx3y%X<86RnVicn$%KJxjky8Pe6l*{-lnTVf{W+sz_?7Lq<-@aRFWv$gwShs^e`}M+ zi61oLK1vx6FJvo9AyQOFbf~Dt*jkhrv8MSLQ(jldAyeOJ_r{cbIbNH4WMI^ftuAB# zCb}p!c9&84hJ;z%&$#|oJN!pRC8AiA^2R2AhlJt46}N}c&A>;Zjs&B56ALq*M<#|Z z`DpM>V(W1M)1Q$rzuDy5aZnKR%{163S8#q%`PDUjEer{y)h^Au!clqK#06pYOY`X0_wUz1r=s4~*UNrKk0XvGPE5$oYGHmKQr}&-$uEz-IEQ@`=T0 zb7?hw*qST`3gFBU-$c?!Lo_=r_&Y_-)omA&l`4=yt**J{aon=&x3l; zEu_?^#`39E4LrAa!%Iij3gK;V)%IMK-U6|*aB`;=f6>HOq;`a7wwARsndiM`Vs=YY z(uUabyM1#63z4vcABueGT4dHu;>i(P{A5#z)d(dMTQt`glrDzU8xKVqhjkf)-VbYH zvZl7&TW70k0S;TK!lew{L*b6P7`4f)OZ{-~)B8=XF*knJEFiBb?~%s1KW2UIg7yZ- z1G0(mr}gQO1e?-zDJ0Py^#we#W{=!j$I{lLAvaA?d1QKC0hsNCl<5@|_gLR%Plc5U z&_`<^_e?chOUBtOY=nxAPPMV02zf7Ts^eWwORQ9v1?-?3GV=H|2g=veqwSdO^_Th0 zJ`_(ku>v6W%z=Y7J=T6CVKEIgFZ1Y3uxAAA@U{4yJoA}cGX0i5E%{7ruOs=&jw$-) zIVmtPI{IDDo*-BAGM6Z40{Sk%H4A1T%Z{ndZg9U-<%KksN&PFt2kqfJ#;Zs;oaiVY z?K0gH`N@IPT7w>Bho8&wbL!2w9G`k}q#C4(R;@*iJb*lmTI1#5K~@+yqB$D9*Urq> z7uO;0blmi?eI0PcWu5udW~Y2ITFfTXA=a~~;FX+%a+TK1Wsk#xWV@w-(=&rNne0_d zAGe+LF5^E&p1u}xCm|3RTsTua{c^m(VBG{*fF|4H5;y$-263@iQG5P^jgZl+N^0c+ zstX^%Hh>(k~j zk681n%f(Aifh6Ep6W^$zk+8@!9lW-K&!aLQ1^O>gkT``5ZH})Wdr1!oz|Tw6E$_g? ze$iIC2AXv(<+A(dA4&*!8uWLvL7i#&Y*R)b+YopaMx*p>O^=)u#Cyb9X0e@2qk{)y zK&rDH6`_4~;!x-!!-??{T=mva_7?PWN8KQTJ=euBMfVR7#gW9iJbN%7=S_CtHLr$8 zFk{(gV#7}2tMS}d<)a|OIT1598*4Ku*13{vJa9N0{cw zu@2r&6ueYK;>ASr*x20IK2pi(08=7`Vl<^-RF?vOOlC*y_y9i@l3j6tkty~GKmcaN z+#F5-KpKbu5mbJrD@lbtR*0g;>Cql2j%F7WROtIsjqI5-HiqQ$o<4Gye%-Z3vw&tm z9MCBcp(ePV-R+%tkk+}PCzY9+k0l4Jsj)&xtX;^1m|&?1e-|PDY)+i$8Qk1p^v0=B zUhpspmSA{ri-$sC)WV_UIbo7H)-c^+GT`9?>OnFnJhhx8B_?PCrc(IEVbnfhKG+c% zD**8b*GciDY;gxr-e|@GSgL zJ&Fk;>NGhDoz&(WPH5a2H4iJ={b4lMnjg}UGsZ*|RIbfE7l6-MwENpY@GgV{CB!v! zFibN5js^fvim^(n-RVzUakir3zc^@x%5zh=62UQ;rC6s`rm*Dgq0yZZB zqB{Y6IYE~T@brR1eIWj^S)#N{qTE1ifkL9C6t+=IBDi8aF-v06heR7{9OnybM1v%k z0c_9roI2xxDqC1M;Up4$h#<7&MM%D;#|TTXOh&e-s5rP{>a3bwT)Pqg3=MiODV!8) z{ElQdR5KLSH4dy0lmaP^GHSvygOsGVslFs>v?6Jeuadb*(ugi>KTo+eRHw0%#e(~$ zWoe|pc1iD-!hD&Mp3fHV<(G_g1f#JM>t7oh93M)2;rh%sqq-<#F(m^Y<>x>W92gu} z7I^YM2a<;Svvd3-{@VX7^;|bL^;hf{n@L|T$d&PAaB`)+5ai1EBe%{_o;w~k^}kEA z{r9=`zYHXG#^+vhm7MN>=(8s8ymMs)X&QGPL|sGQoiphQgTZty`uyiT!T<76?~oW6 zm0bC~K{UQVic%`802o1;ys-c1oQaD>`f~;Dgzx7{^7kO@7w!eZHi%|xv0c+oQFe#@ z`W8r1wfIwR{bM2`2G2Sukd(Sn`S}(Tx%c9D%3`nm9E6F~zux9Cr@w}wTNi-9vaF8S zAuQj2`4i3d-}eOH0!iO`f*oQoVJs{A@vnpx$8TiEQbGQ2iSI|f-vddyL7=1FZ-JzW z(^<>!fh7BBtFr~?|JidUw~+vZQp+3#wzA8euD1wge_$fBK0F%aAlgFjI<9hCswkNpQD5?Tsznb>0FaO?^QNDs=Ydyo04dEBxWmHq-iU{fn zC?&fQH1|Qd^>01Fz8~?uoZou_%s}18J~Sl z;iY3PV$|~K3aC{Eq$kpA6NKN8(Rq;$X@GL;&BFx@P6K~nB7Y7feJFnYy(f?wnYXP? zof-bC-1>%W(O>4)i!M8CL*+dYda?$-2-bmx%KP%mWPg#}5Co)-sX;Ac6iO!I&{Hz@eckb)6CddyD}JQii#6PQ1^AuhW`ok%L0KQIebzN-#Mk{&ATd|4vM zdqI=nIE2ZoLd7;_3&=${DVC%!QoC0>na^HU0_8(fi*F7nJ(MouCV2O@kvm$ApN#k} zFA52o*3iL#5rCzF`~B1NoOf?B_*d9C&NJEXRK~xg`2NCN`2IYDu1){zv!Z`g8EKgK z4<@r({L@)c5-P&ej=QrWl{)x8R7N_Z_!oog<9RY!x7VhB`8=2XuZ?W}&GW1e8k#DJ zZ>l7y8kZRPs-sS>CF%yYe0Z+UaAK4qml3j_YB{B5L~q_m{VCmk%Is5y^Lhzo-0}A2 zr>x-`hz-!S>917ApPuKz$LXn#n#%N@v#MC zu0p<|yewQ=%A3|xKhqnUT$7S6c?5G@ue*}kVw-Xbk zYbFtK4c9M>8WbJqo+DWKsf?QDX^Q|Z`P&l)iyQEGr9!|V9WtNT;| z#0g(16FXj#(^D4?Jz4DsWorr<14w1{?%z;+3t5r|hK+AVHvU;i zc_B<{_j^(&e>~5TuZ+QZKxei;QG6@wl6Ilsc|UB%xV%xyJev&RJ9_V5M;xC6_-$nK(^--9o7mLjd@?I$?XWGNknl4StdDt>r3Rq1vNS?nrC1c=r&&4- z=yfgu&-$l_nbn-P_}5vwkhJ7KKg`D38cZQ?ZX9zvoA#yuj8}J}eB0`L9~^2=Vmv*9MYV)8=1F%czWGi!hR(RAp?uEv6KoAT^TNny$u*t#smO z+?n)LOT$doB3_#7qSU!R&e?o$ckk)`@zdBy9wY-{eCzSw2KfnheaUw|4E=HMd4pHK zL6LmJ0O%Sv5d2|*@F9m=@kduRT?yEJ=erUJ`OYue0sMR|+8$%v0Eiz%lX4>PenEt+nQR zOl9ku#mKTsgMR(M53Sr8h*k2Nqo9BDm61%?i}RaVx~-K=bQc(w50C|m}}6|k59>od(;b_<|{isdlN~p_V#N5{rIps2m>%y-^F*=0qA%6$MIrBkk8}b|b1BPSkIC{C)1ZCV`I!s|?K;^7|Cj&f1G)%%a?mUt^7%`Q z*8Kpc@Y{ROTMGo)IQVlAUj22cBmaE-0?;?OxEm=Zxa9qa9h9@^00$mo$ZvEXrQ~jw4z-5QN|D>uYf1`F8Ze*h{o3yZY2y9V)X{$1 zmYfEK2NjQ3$Bf~JNkb|~_G;fVKRT@(j5%N^zxN)^uXotE@e>zbiIENr%ZS$kc`DLC z;l$wPh-2$>s+Y$jJRxMGV9JG=8~GZ1F03HD`fI3+i{m0e#@aCeQiSLh{@uN&F?G)U ze|ng|-Fq4@yv;U3Fdcur&uWAqS_pyxlo6LESZi*wC|GWKtx82_YaSMGu4xDb&~SGu z8!-!6$SS5tzbn-|DODc<;nfG)$k8Vi%*t`hn)5%fREsw{dy0Yo6^K)M}@L z@nyqCuPim_bs`@nx0PqFGV~1tgjoGZ>FSx|E`TGpk#*@>CaYX?T=CZ8l9_w5Idn%C zOrDivnLt_7;(NG^K@9b|cdh0eT#0Pis0 zQ1bKI+v+X*be4943>K(&h5UQUx)s%eVU?3Lm59$(GAy#kTc?TK@uQxcTIk}riS%~B zRYff@a|AhA4y>ybPrO`@uyZD!NQ|!#TkX?hw0i{}UA5gfV!6jP*DiU;E`ph6l|na1 z;*N9XREC7>>NdRyS@OK&(bR6nM%z4wQj?`q?y}R;@G=-zg7>>BJCzHHm${8HVuhA+)0_cS{G$z z9<;l`|g>^^7MR8 zo@f>CuEf-i+JZEH;5IxOecaggb;mZUZT?ec8AHAGTaoTID`i4_Mq-Kadr=!$q(KRmPTxnm)IW?q%QAAd~5M!_bG-gR{tAg_h9aml~*ztoEow;v1 zEJ2<{OuWT&er?8aUl*X!f*GBxb+Y2`cd42UoaOWjtb2We`5d|Q5pS7e&u8|2Z|5` zy(4X|zOe)loq+BazcT>u)RezJ&WHMpQM+nmFI5|1^$kd*{>s-Fu6Q!*HQh?J0H?}Zj(a0xwq?8y}- zXGLi633B1X#fCxH!j4z|4+dc0U4-Crr}epQZlMDlVWH5ap^eZ1j6rVlBdmH|>eF2>0QC~M72ra^)jlkmh2C24w} zrBV2=2X~ZUS@|BNZ;*{MX^D=u)U#&n4~KDPJsfk6Eyz4YN8~@c0Me-+qM2RNB?>?v zj(RB;WRt*e?akML*)+Ucw4ty-t zsB%;_^1j+u?6ZAkc4DTLgYgUf$V6stwv=Kp3A<+9FveAV?#pRY7gD8dkj(rl?hgi_ z_)d8$rz!`vFt)tM3b_HNAQysST7u4QqvPOaq^~IklrkqiA^i7VGP*A z)-Kw-J5xHK?}wLtrjv?k(Xm|`;Kh@+bhSI(LeWwwgdV;O!*kxPs>dWmc5lTcWrY}P zY6|au?TVMeF>&HM3eOQ4s?F6m>VC&sP#8ew23^tIN}@0jZ%>U%PZ7zIQ>4B-zkjM0YQMYuDhx;@pJ|$MxItk4=+6mf zUf3NW*}SM!BD>^KIU|sFIT&YPj6NP!v!OYe)T;V=I`6di^=$bc$EnLTdqf<^*NEBi zU~m;l%M#xIwHf{!!gf=l4&~-as~xyYc7p^&CUQ7u_ycQZ^Sg z$&?bG#g1Ige^n^=yobg*FqEj91hdBUmvQRsXYXI#jl0cMAcSoVeIr~K<8CoCH!f|I z`?diw>?V!?s-lz@??-u5kmQE@@TUaa1H)@T5%VvjsN@D_0+ z`AS=zxtNNQW-M~5HkS~oL{j2zocf*8bd!KHgV=AM>g&U3Qxg0{BL$vWaRkDp|^|^5A%>8gw!89D>^k*s0Zd0Ad{KC~fiWt}XxqMdw0$=k z^_W!H{XQB!k8y*zA*6Z>{m(E?q*8r_|AG_#|1kF!Y*lXW`ZgfaF@r{=ySr5yCf%vh zAPv%?bayjBy1TnWxpIT{pv*?X zcazwE`9{F1hg|Kf-d@FwX0sCq+dbw@|ixdd031dmgfjU8~vi5!B55o6#5p8y1D7>KWobW-q0vIQ} z3^WWIjov-9`Mc5R;T0kEuMSzKl#8!5buOG&oN!5Z`OgdHKRMyZw~m+6oiJG79AS}y zSe4z&J=kdUkC<`rOC8H=lh~}mU6#}JcugDrxC=bb)6KMw_|tn(mtPLqADr;3H-f~a zZ}jt8;z70dt;nYIm06lNZXbHz@m>UV;r}pCR;OTIk4D=D>mPp5Ke$;o%uKlWmxt`- zr~QK$wtp$eh3%~V!#t_Qa%N!Wf>EUp$0pr{l^yDL8x|>exe@9YZ|C2)O)L_h-RVUhS;*Lr^Bk{)&*=iiv*XO%K}@3a@vC z;2{AEVg7!E-49MUJB3Q?f5i!Jx5l{fD4-SZxP5ou7#um0i+`VoUM4im0}5lD5K^=$ zr=!QmEr?n&J(5xVnwL->eucu5?d+h4xM=!lmMvzQfhdihgpC)B)`PnN@7*Mx)G&<%T8s82GCQ;L`T{W zGLuaNixdb$nXd_{+>)}mgGw2Y+3DcgVr~hTNYP<7%sfG!q;E&Jy_voG^I$0g<^xT^ zRqWb3lj(+DsCsLQu}xFz<*-iO{ZHS_lkR$!X4z=--9#EH`%5L~D7xvrw?9)wdX*Z} z$}SA)IIGye2&o@pwc(sTvxdI10yC#f#>H!JW#L+%cNZ_pJbS~K@kPOkQ8j8#n_{PK z?*PG$!1CoX0(D*ceH2?i*_ag=C!7bK#R1cBX(OMxI%Bd7f3J9H0A;Sp5UAJ!B^KUw zKNf8K^8U6h6#CJDE-Esv-1Wuq^5^E`kR`8*(sIUv@3+l$LIM#E4zBdyEaH}e+0cIT zR{kVv{q!8u+ev#<3&E@uklJrN?jPPtNC1Js^&(E?Fa%I|9bj|XvWIyq&982o#QgaB ztJ{WglJPr_JIQ7N?&&$&_uFQC&X10~$|$KrJQ3kMY9p~fnYEpSPclkY=nq{$}2Nu`d2& zKnRv~;Y`p05OGcNQvx4;0KymUH8H;C{_Kc*I%<@9>oE;R(X14YVx$;0T_>VGa2Kp= zs&l(3MD7)aKtvwkJseBpT-z<;NSAZ*M};Tj}2>n~!}?P1VNcsI`&j&=BtSmP04+IT1iXh z&=)j#R)%G!@5;oWo-cJ9gz7v%wmyOL8oNW7;h*P3| z$*}%L7Jhi%R%g8_kWBi_mr%6_0oT1!a$?(fJ&_LAb5j;qk!g}9GK6=+>vqY_YAq_> z+$xEqHjl|6?ZjK0BHnYUYCRWdr<0x;ZB8~KJRayZ>ZLg1p`s$3GgadJid?lLs?=@K zVg1!=#52C!qd+%$BQKm@Zp`qBLF7knMejWH<9`udyZMJCQ|?Qwvq0dy(snd1Q8?g5+pvCE~6*97}yxo6bR6ppteQ7 zhsK`_)FBJF%>-M-RW)>9-8M`1QeZ>)3s>C~m!N%&@!J z8RAF=zKW~XLOcFAgppFdF( z-j`9$8d8rFSEE*aR(u?~I9qK<7ii6C378$4t8YFk+uIKit%fF-z6Y1Pjxxe;7r$tK z!cFnigjV}pfZZ1~ryZEEppX5{a~vH}YK(n8GpKVlkt#Li9bOo_=5aHd5yxpw4sqq? z!+6|HI*YScJZ@^#hy4xnU6;Y!^#X0oUmOKrvLE3!>|!vA;gBZSts(0&z|{}?-ahB8++bz@Ufa@$*@)Y zu^Z(bhDZ;&=j3tpJY0z+OnyQIZXo^y$#(iU&g`{^@~5goJl1~u90rHhr}+;frM)xc zHaU1Jh8j^j$y>r>*;20-am!$+{kw->TIanUIzQHZ$JE3BFf{rw3_D{QVM{Bttj#Ne zgFfz-*_Z7UYIPHi0;``@)&9k=V(8v{8?tnJ&FRUHsQPPj>ZIDF%$_x=~Ux3 ztG4uxE^n7ja}S@*HAX%wdF&;igFXAA;p;oPej$YiMoP0OGkXb5#ar)~b;;{_P*U$6 z=rVHCIM`a(pR3)Ew~*3!dA?RJ;#>wa%t2g2lW>9akq6kLQ$2sK@w%3l1Bxvg7tAOK z?Lb^zZx#`MwU5=lQ*#hTE_cjuS`dtWG<%rCPfh=FF6j)Lp144P?a?^M!TO7 z_icjt-IX&Vi?Sc1vT-Xbj{y%-)BRZI#7@Iz*a-q0g;TddO+>R9JwWDY+AE_fN{0=H+l#R_*-|y(Arf_d{ueBMTo>bj3+l=<3PHXoY` z>n=hM5iaM`Eh@w#4SHcw|JNpvP8L%Zyph7ku%*;5|=W2&;VM0)*JH>F2m&uSnf> ze%eQaSEdX&;028#vkoNz;e&Bbr5+OmO9JV12512!^OB?l+F&?vjGwi2?Gr2%uTCF! z!g=34dmj}LwWBfh)LUP`p@X|R|6_4Kp8wigNf4m&J9t%ZKH$MgfIgjehO%b>xxik| ztz;naD$F~H;y35OqZF&b9gGV$zw@l%snsOa5e*RfR=ECNU~-o2(qmSaV4SwMUaqbH z?^>UhoZDfSJ|0$_0B-`k5vjX&njtPe3}5<%8j(XT3xK7(ce9f5ld3{)R0Te!6O2nH zbZP|H6yCGW=BXnK{s{957Puq9lzIe$%T-~t%1=N*-;*`qMXYH108YQT01oKp41VC) zN%#ao#1vn|mA4XBYDtb*Y>Zg?#asDemG5&954&%q=3BsKVPt+o1V#Ev&JaPE}PQFQOz+?Nbu3!rga z;Um0~LVXCYt%FDyCCeAnTCc8Sy6D-Gga&{yN zH;^77E?EeOWr5bwNQxUiK|mw{;V|Jbd8|#yU72mV(E*TA6TJn!E|QF;L6LmXR8p~W zqI--?5FLSe6R9>KoC7XZ0ICEbH_~HNP>jqSD;Z$O0w9TB8&xAIL?xvqHboIWx!fp0 z9v<4Z8lOf1eVPMxw~w>xOVOJR&p!p!JOUQV2$%E6HV=Xtno@!F#GTuz<*KQHVrj)) z(CCB&1E+`GkNh1>(iq9ZN9ofhU=Gef;FLCKel``AAGAPE@R|^A>GBa^KpSUOIlU+# zeW5zpJv-e?`57a8hKpg^`zFBdf&ncsU4=b8nICkl4LIY+88F2?TF79ECqJN9MPT*1j5bDMJrGM2ich#az_oK+THn%ZP-}W)_KlT=ndYYNm)t934^k^uoQ& z?X2bMw6#RMuP8aJRoR>dIV@Q@`-IXe+7Ntqyxfp`j?~%s2pJ%EM*P7X`mW$rzZ~>q z!WJG~>>)6takiHVA^#^`cju&4ggj{#T(7}gWU+i^2)-mlK|3T?Ayhjb#Y`W6GnxS+4ET8#z}=K$+L(OoM}_hO#VeF0HdIAa$hS>^$D8q&O(lr-#n@f2174jss}u#k3}2+AVWHIHCf-zNv35)u zF0fR2rL45pVn6`!rWt2Qrkv2A4A>Pb>K2R2UhW&4&<+Iderd8R|;x zW!8D$#P=#xQ)wYJe@A12UhhyMXD!&^Y)Pp{*Z^>>RF@@i5~R2FXeb5|mRM9IWj9d2 z)C82&Pz*B$mqa`*0fY^M#l!Haz>Q+uO)>J zEIv&XlOe{4(s}CW>8?PMX?FUaYW5H?v;>?$jC+b0-0Y#`A1YY-5)^s{2qF|*QuDD} zX~x`d$#-m;?T?CbZ+&q_lOxj7q}5`f-umbgz76MQvp!v0rhr=*S8ITMv+r<8Q+_+7 zua=g#cr>MQw*`DG2tJe*Ztw^=f7uRqs}n(}6H%`d$+HtB4Q9G-<0HS_;!}Zj3oJj| zf~MDXQ#`IGR3ARN3vcQ6=F2WK_Ac@jmsQJHA|a_avuJs69UzgeuQy6qT7hPE0BVeG zXO$kFB|K69oM3AY!b(rX(M@Xd-uVR(-w3z`*i$Cf%hB7(AI`lbOGA3m%OBG$lhvzM z3RocQgAeF=ozg+{D5Li=!WwQL{723VE@%B)vgwbsE#&~qEqJOIf+Pd+^!v}*59@7- z@U)oj=y>z`tlu<)QD7-~dIwE9@0k-!9 zE}su;kKnZF0XR!ZyTb|Spsg;e1Bfxh^~9BtDf&D7;Bks*u8+wo9?V# z5R|6@2zSP9S5ey#Cx)^oC`7t%C{MV+ayLKO9SE>7N7=t&cgPVK{KoG1%`a2)gWXY6 z@Xastr!mJfs507r=8bD8VPlRg8kynx{|MgPlre?*W&U7y1cMo`*d6~7y!qeo%lsa^ z`34R*vH_Yq>7O6=zvw>x`sB%>#!cRZjAfe+M-^C4k4#JX#AMieWHw0OK!<57Mf)lJ z)|+p6V}k#mf;T^g>Tff=kr;k2f)vyFBZ%x2io*u&+qqKrLt%ayh5~w#3}=R&LLxlr z9r>*Et0D+R;iKZRe^mteuY)(Tah@wsf#~MVt0D-Z49YJ(y}#L9-YU6^b-lU#^cm7e zV0In6v7+g{{cWf&#K!!g+VCHWAXQ}8ZP~*8lSYS@9ZY*%vUGR7=t@!Wn4RP`9+n-= zQ9?S8UI>?9IA_R5Svwb?q+R#)o@M3QOzS!?*_q0_Jc9;X9>2OOf;7lpUNE1$i6NIi zSqY|9c)t|NtB@`jS@OvBYN&p?k!%KIcci(zzxK;qZ!QI%!KIa-S;tje$v6KPb695! zlC|`AMZogL*y|o2drQUyoBID4s!vF<{=2*}<&u8OVE=Dpj*vLbR>Y|che70f3kT44 z$Nn+|263Mi(WD#v$Rc)G=yzp0vEg`w*)biI?!7zx$?ou<^0~Dd>Q~DaP@EzvhqKO2 z!~(hhfj(LtF&Kn|)*Hm;c^hzP8{2wDQXDLj3j_o;GP~_ZE5VkSe>GJ9y$JGR;Cjqq z7aoGV7FzyCA)cw8awOpHfni{`-oRPJ(;>&N-X=lUAn%3_U*M8Y<`0&_d!34AX6r`9*<${ z4jCr%WtyuZh<%_N*hX|P6&|jD$Hi|nGyZW}1P5$aU?}HQ{^=QxuZiHwH+Bcu-YjBl z@RI0BcjfJ`dJ6ZR=8gMcIx6?n0PpR~K>gC6XLSh}myij7LnZsOgMem|&h(R>2Ju{y+N;uiX%`>2q-6sq~2H=a$A?19XU**z{bIa*MhCQ!A^uVWM#ol}ado2qYj z%75He@*qJys_ipl#db~cLm!Iygfb_U0FvDoaDt`1fsEy^4Vk*C12y`7jyZCy>T38; znao`%7AOC#9V4fdRj`6M*EilIHhw((vW71)tL@gXjYn$iN_H(?FZHNxTqfFI!wz@`t z8=bi>ivO>eEB>b!5GFh7mEi2{A#>}G!pl{3=Ktj;;`hRfiF_$W{6>P!t+yyb{2OzHN8a6^Tiuasb49VEZ0*eV zl zTU`wVZ`cKNE@1tK{rPdo=Ow09VS(S_QP*2tZ1R!A|16460{f3%{6|roIH>pYOM^AdNc364o*xj=SNMSCh<`5zY$?}9`0`$kHS25VBsR&oQ!kIn1a&eDn#?=b_nW_~?!=|I|eM29N5Wxna?R?tKhc zk3SlMzv18vSS^9Ya{a5fPacfbPb&3hPOV~-{+B7OB z(L00v1zdjn%Kq#q1Iqae?`J z>J>;OAidVRE*N(g8mF`vPEOALOivyalA2<{Rgh*uBJWcJ%%ni{OPNB<3twc&ucywz zb|}85wlk@tUZam8_SbbN791K(Pn`Hq$26+sz~6;${(MZ! z*kF8nC(zT#3>~gb{KE4nyEA%K7!Q^0_)Sk-rW@M6JoHRA9{2k?)Wv%KC*$wOJE2hd z_QM1+H>Qn$QyBlJ@XZ5$jz0^AoXZZH^LksuuLVO3I@oNa)?ZHC-^IKN&9E!^`k@LL zrYF8bo2l!J3+p9LKI^{{44F^(fFci*w9BZp$enepP?lBj-T6oY-f@d(2h-&ju7)zz zZ>@&0J*Qg>|2Kv4-+GDv1IFLaULtt_-Go=TjuY9_7!8=F`PTK@L|{deRr!4Nt@4XiK@>m^$j!%xy*q3HwJ(-F1jkq+}?&>alj({s7g}1qwBC(ts(4>PaPVu;a|Q{2s7og5k@2KcLMwW>)P6%4f4n<8^NF zTEmtqF-yf>E+<7lE}mW{d-YMkJP-Qw{WBF#+#7&A}fBkJ@25?x4CzZoxd^uN*l@vH#mFVpItHj{uI#vZ5=8U zQE+aG{d!!pB6)YtEQ99lA|tD}jPGM#{X>#ue>FAj-4`nBkz@G}^5pkWE*9k{*oj0_iOiq>lJ`7}N zPjkBi)1qma^|CPRIq%u_0i3wgvakllL;dBfg6=uK!Mya7?xi657QSf-YNHmYBJ=b3 zk9UH^?U>3ieMc4Wnq$wCfGZE>T6!&YG`T=Hrp1r&&3>foHRG@U&e{GSjK5e!)9YR$ z;can_gBWT@Dk@s~6w)E9@c0p9Ijl`iIg39Mj#L6DG-p-PTVExR!nek?6a5G1fzyqj zTVu&cdZbzKR|o44tK)MQsIL=_pUp7VbVw!1j%1Bs;hPm84Of9Sp$RPEIB%@~5~X_7 zio*pE*u`gV^q&oF1)p_S8d?;a$}>7HHR9FYF)tn4E!KGpdC|Ox zt8E8+C%^*w?HZG1R7UThaPMAp6V;3Qj^Z2OQfm3kXY)r0Gi6dRYWFDNu~{(lciD6^GLjl;S;im9(oc=HJMPN3YYZ*c5o zwiD5sUO}R%=;JPTNE%++6gY00h_Lyj&v;+yj)qzHRWEV)zNHDT-Ya!A!yefO;hqgL zZ>?qAhld~JnAEok=&^dfeMj6hb=+PQ!}_En=k=H8+YKBR8ya5(dz@=)xyvrho}ykb z!*LS$VQJtwk;<*0>7I0pL#P992pAlsn(Mt=Lx;~FfWhlk%vgg? zM|?*3v`o+OwksoWRo7_CPB`ztridG957TzAqGl(eXB@0I ze#G&y^j6*tT8ZJdwdxJW-F1$)AtTt@c_}Sno7}Lesdrf!esar{DR==GS$<2@s9-Emfh&Jmmq!x0b25^}Gz$0oI`qy=I_GGr4E`3z!Zv3?LeQ3S zPwzD0k*~8-gt9ueWN&^Xx2M)CO**hOdUj8Zi(Ldj$K%tuTYF@Z$$jv{yG=q}PZSuv zNK}*Nn>8O&r&L)YSnA8aG$>p?ybqDDprjncTcoLPG+DLq@iZ`faogo#V+5UMM&}aZ zsduvv1?+k6u?*yIfDA=^5YB61P2b`bH)OI1xHzYfxx-fxOY-BszkZg%#)2@WZ`(iJ z_na1bbSD3PE{K_F{9F79)0v5Y`WFsC8b&+pzSl6Ht-g*w!RCTFswOP1Kf<;VuFk*C z1+gw8W_)3D!F(@L+4Ku`7MbTf)HqhS_c%AM3wdpGoZHi4yjc%MiOknC@^yyO@7ts9 zy>z2|Q!CGg`u=qdZX6e8>xtMZEprF#a0=OfTN?mtG{Bg?LG75Iy)Ze?hv-q79$u2# zD)H*9uTTF3#JCiCwtLkre|V>un)~(II}N+<@yyA*%}!l@6AFHPt{Xrwhocern|FEw zj^^8a&xhmA^1Lt_2Y<+XErRb3Rl3edTW+TO*DuMGcBhyrY7x0z=IgP1djrPyL;R=4 zx++7p0n#~gMJ6&3qTInmonjiL1e};A6Twm^{xxw?U;303n;nyMRqMc9)3p7rZRKaK ztBwU4X-C_pF(@|$fLXpnxdn=`!G~`}A5+XwW`q>iZpmm;B)lSEu2L?#7nL7CD4XPq zvt5voRcxX9uzY7nJg@zd2q&+|-H}0LzzJtV?C~-~iAr!Nj+J)RSBrni@A{iU-k+Xj zu&^ynVCcW%cjcZIvkhs66uhlu@*{#P!`7}3NG5vpyr6;|Kb~Ziqe~7jA^cDrU09+< z5;CRY#PdnAmPs645F}Bi#JsB|5174SqQjLX&iMs*4%?mtZtCW2^^u5a1+&si!+!Y< zh>nMvi;QP^c*O)!*ClhzYeIMyUJ;9$w&*v0v{)poNbCxYtI<+VI9{&@G82xUR3D^l z#=5+BGYSa8Yj)0f*XssX0N!=oW?z<1T`ui!x7jMMsc+u3k5T|EcA#RlR5z@#c=q+oOe9U;cE3(rD$J$K);s3d{rUh3QXFYibrkS3etCapH~ldGIAK4>XtwSc1x&_j zF#^e5yjmFp@k{??(AU!m3J$I*MnrHk__ng7q~~gvUR4G4?cAUOcte@o<6>e+mGFb` z0W?{VD6{q?nVAp(KMwbKeQgYt?M3!2G2eC>a7G6ZE9v0{#dLXP@>kliP$dPh~ZQ(J|3aTP2oo{K+H6Cgr}+4 zd-72W6)Nc5;Seje=8zSVcd}jx#eng)ysvjn8d_JrQ*RR!1&2xMR`@N>fb0?1=NL&S z_GbL!gO^lXH#6~yY76cmBaHhH9cH4)Z>^vePXr3o>SA~mip$h+1*kY=kA~Ap-VN!G zNSsdGo+^~mMOAT>w9BQ-8%cu@v3Td#@=87fq9KX9zT?zBj-|fZ z#p(byKs{D(!EqOZ)>{TLu}NG8o3@f3hT<1No7{}|Bc=-nK=bVgOofQP?|RTIwG`%Z zs_q&v8NVz73~u&TQ~Qvb_G!$eIMzSN2nanFJqJyFeOG}@E+z{%p%G_=M@w5bdH0RL z4B*nssro>f$#SXSWkB-h;I_R%Yoj?4C$yPHKazS2lpe1by|$XGS3$SA<;ftl z!uqwL7qeSCSYad@a7o)O?q%hvbx|Kvjo&9M$eMl;LRq~{(EnL`+lOZffX~W-X4b?W zcX7a2-1f6s;x`>5x#}m zWk%mUIEO}bU^&YxwpBh=N{Vz;FI$Z#v49fPRkYwax4>aSrjVhJkDRf z!D?vimw)e&dcL%!(9ry1^u2S-`KynS$Nmw8x3uvQ%@^C3Q}Mg4-OS{sa^s}iDWyL6 zztQo1v)|B7>b%EFvqbjg!5{IbISal&;!nq>I9y-*8hhQ}C|)v64G=Tjj8|k`Wn|5K z^xoJuJXr`1XxH?S;(cl|ZS98ckVB~Fa)*eRI83_|j_4RE*zW7U1w-v333ogCAuo}o z6`x6&E(0>bOd48FDWc)aB)PP?cYU)tW}V^>wQt@Wd=cBMjkHQqYuYSB)gQe;I%N@F zd7}eD9vSYodW3g$pT=|QRwsEiq@pXA!668x=El9kHd4eLisB({xVtet;q;VcqCyfM zF@V*U{-2Oz_NPo7*EGaa$H=ukrS(6!2IwzK#Enbu=?;MFu$HBCo+{R3gX{xc3r;TX zpdG{{AHN6?-&K93-#-zg8Q;3|4#nL5>r8$-U`wk z;&p}hPs1x%tYZ9lQ7!=VPYvct558V`rwP0f_`DIdypdeJQIfsU8oe>*y|GTb0R%oE zJ|7${A3Rqdf@B|}MxR@BR-a$^kP-M&@cB|{`O>)h(k1&cH2N~l`?9#+y*Tzo5og?| z_2Y5%#zlK*%i2L`YQ6MYKe z-uD=&_JA`C_P*Q?+*)-6`vohn1RsiqD6F^zR|VaS^S~B!hvq-M-4z^U5aNGAmG2r# zDiVr79RliBhwly5LkSg*2?h9s6eou@H-b+sbY!Tg9PI{SH}-=t zw{gHJK-?xA#796&EdXvx46c2Q4}4TL3JzI_n7&FZaK&F?Q-RJc4Bf|kk%mNJDi+f) z8YBXH@2tce_{8x%2Qd_}sCLCg;llx%0HXvPT{zaFs2~?9pn#idiL(FEi7+{;1(R~T zQ&l`gb^_;qJZL3Bl`zq{D?yK*OrJh6!#@5J{-H?-c{CkyzbVi<1mA2yc2qnprH^W& zkR|*m@pf0_<5LiBNWxSjtJA3;E@86aTBIu~jt9N1MMz>Se@c7`Yv}2%m_cS<$CQMH z6yC0s1<_<6JTx6uJy%;Hs7WT2kECb;QqaUyp$)C(ha${EYur*hx?)jGQX889tqZB8 zB2f$!F`B?s-v!*~r(~3mY_bQaYPg9zLhvTF@rbv9)29hHV&FPYS?)_%XVbH!xrsq9 z3E*b8DP9ngr^*nf$E3*^#Vy80>@KJlWTnaj<(~B=zUGgnGK^4pBqjjNkb}>>PmqM! zm2ldm{?I-XnLN|iA>Bxd5RFJ5@F^Jql=ayl3)44?!@v?lfQW>Ff+#eQe38leFbjWQ z^41w4jXSeYN(5eWHkC*g8g~Ql$8*hd!!BGVgMSs1Jo@jWG#G6c33ST z-j70A_?w@pyXHU8(Pjn~JnyZ1PU&ZFdKF*`LOabVh z6%-DzK4FmaVIYixs3i%II_dyC1n{&%3g5FAF`Lh(}0BofZ( zA;?5@G8qUp#c-!M&(J6u7s)aONWQKYFqi_;3Am;?N{@l59Srw|cW{*LTysT%#uI5c zarE*F#0$ob>{@^_cR)9PXtX=7Vl&`Ki7%X}oWZ_4$fvkky6jDG`F&;K$|T?`BE>TA z(mW#`p+K|Y1(5NJ67I>;Pb-QqcYrx-il3nD?Xi_bp)5xb06HP)2oko#Ac&1#!J}S< z*;rzEDlr9LDFR>Z5MpK6RRuPvo+d9QK$n!-FRBnoB=fB>W)yT0kufSA=_n^$lB^0tyC znQa)kUKqguPNSHpJVI6@YFA^VARzqw_K8}(l}OWVWwhiLKpp@twWSGRvMEhhj+9Ip z#@NoY1UytCPm~QVIG3Si1Ljx)s&oN0mSn-hR7D>6?QoiFXKYQxa24kb@T%A)jIH#_ zE&K#k%Z^nu2Q9{3txH4f11&fcsQ@)%)-ez8?733bi^7trX5LHX#yF=oME1sy_DJ1x z6_z0I5HahURPc$rEn-&TLs^dLVQ}bTdx%MbVm42fN(ZG#`=V$AIIH8vssgE6tBFCU z5P4eLJ9&%|t_4QG)-cFGmG3>&53LmcgCH!i4nU^rBqZ;CUV@9=+Gc3pj-%X#+0_kX z?;;kd!e#(q3*j*cQ3I`Td4-4;&Tq2qg1Pm&{r7uV;X4n9$iAeoBQo`N8d&j&Dj?VO zmQ{6OQ`8xgx6A2)yL1V(^niGwa`!P3K;4A7X1&j+x|GfPY^!?E_HQ1C0odevZ`-$+ zi1a^2B^|Mks)_+qS&2C7;Xkzka1jk;i3|u><`WtW?9htz;Zl%|~zRJPIXMQPx_$rQofZ`Uv%L|{*PSrYEv z%K($LognrXl2R{ z;j8LY_4P_uXz|9?u0SxZcFu4eQonSyE0Fktz>+l|8J23ji6<`meWg28Yx9%+{cEPk ztiif#;db~x%?=`}#SRAjq2a%0igx4f^1Lnm)ZR|uzdM#ThF)tfiVgDteJ|>gFpk+3 z?;g&m>B>N6RxAxnv^?jt};dAn#1E+Ns(!;#}LC`i@LB~fk#izCS%{;PngfIyMl+G z-ZS)hq_<4I6#UZIxeU5@G%NUbGz7(YudC|RQ`0Tj0O`w>4=DHOBm>TXqXV8O+N4QV z69M}#cLlryU0B~~2>&e~(0>8**$>qk$;NB=9WF~`Vrxo;={)r#Q)Dz&O9P`JeA^YE z2R-*WRA#N;da?RhT6+EqP|-(dJp)PmTc*g7oRac1Nk-)$ma>|PhF7MkjoyL6QCx}c z9XCXQqbwfMnoj@87oy&dlu+_>rJFfP#X?;$d{xx##K^zi6%eTk2n*6Y(Jzv#WUEQp zE|y|_{aMaj2evEt4wqHQh3+*&d8d(N?IK|?pI_MDy(%2Y9HXwqdvTvf%*;27^2VRE zzmKzoF$^t@$H;GTINu~GQ~(t#J#e$O!#J7}L*!^Oi# z{KLsjz-h76_&a^}@6w=(X);f~mtJo)Tyt!uQ&rNhu;2_bc^Wl;adQ7xh=mb0Iv9pc zR#N)^E)Dv9>f55cd?SkWyS3qW`t1MR$sL+wMUN}^;D77nE{f>5+VWp&UZ31Z zG$L@yWl#&az_v>m#|E(pYEfFd`Mva7(TT+P@2m}xYUs%;*NBC{GsurH4zVrs!4GT0 zuO~PDE)63Rtsc2Bj6VAt$3|A>;d2;$*535e^Ebo-lhKmNu*exDBLc!~TnP;u?Bu>O zxz%)WTryp4d4HbVdw&Y!{MqF8d2s`#qJ3$XgR5Ttxc}c;8*=bo8&=p@F>KaaJSk>| zw;OZY_-S(cf1~tzZEXlw8sL~ubhi6pZ4g~XEc<7Zo7s+9(?lhLxDo0;wG>l!2T$QO zVnHeVKexQ|-sNHWG86>r6wleA_KYS%IYd9wptsbBR3!rWG#Dcu*ZwVHfj=J1p+X+% zNhL}F!-7Zp$0m;apUnuvx$xVAub?QH?4K$1GS^z_|Pssp6>LMMV z5o*Gk6bd)kmRDxf;&x;R3o6QWR*TYql$|4`HX>qBk` z<;f3S`)|X#{(~dqX5BgVgCoO~g+KG8I{n`J`5ydB<2tSo5&Biw zA@@`n{rvdj)$i%klGC#jVFje7yHA(TdHFYAdm|#z==-2pY~1(7;0d1d!Qz;Q_=A0< zRssl2=kfiCkopaRoPEqzb{$1h_nwK3K@!fqu;Ep6>Q6#b6 zgh(cqVMCOVnw>}l&c~hPNXUO7_0}p1uiWymB9eWmjCOX?`4XjK4?T1qt*cO)OJO2JbfLVavg<}9 z9QoMe$c%A?*uG92rmf!FLfcTR!m?bddQO#O#UYOV(*67IDMAFsrx7KfT#Z%EQt2mC z-Q6XQ$~z6_HRJb?e>>zfo001tk}JYklj;yFSZ`ZH{uLv}r$y|!sj}FV5zZpLiGEU5 zA+80xerDe22jj3q&aXI}=j!*gtf2G>@)M@A`{*`Tk@xbG)pXp^leJ(0tZRJm-ta$G(Uf0Uf5}iBpEy~hz@AEEym4Px&`{pj7xPWoGvg`iNUFv7Q3`3*weCWnmvk3;TSSJ~Wh8%=XSbR1au8)Exc zSeIe$C0AoK5C|0hqWuD$)bL&yb&QF;oF*a2u-zGD9S?qM988NRL4NH%Fq&%K;_3{! zin9DX^$R@@!bIL)YfIef7wzs9XQNz?Kzs!IJ>{SY-PNQb zl^LXK@-+-l=*z^-N7z_)C#e&`wMW=&0}x2ZPENTs30{yCS8C(Yx7@SwHht3Dp1@ zjgqsjeABV(-_!o)TX|3HM2xvZSUUwM1EEeVw(=#C{{0%EGqdFUZA)Udhf{>F)XTjw zOZAc8RkVZVZ0v=tBrwiXI;v@^LQQ5gzW8gzvO6=yVa6L#S|*MTvDBntmYGY*E>2xV z-e1Mj;jS&rTs8Z>Mobp8v|}#U>lhl2hONHLEsh-~az;m3pFBAyiUMgizT+>~atM3L zNB@F;JYm?zi$gU=;h3Te7vikjtrup6PyaeX!SOAQf}KTf{ktZc@YcoqH~}uwYZB%7 zvmVhWL&xn|S*%aS&H5%jyL7hG&_$ZD)H)_I=vxq`Id=e)1fNdFmTuPh|S&Z=)nD zW^XXRoks^*Rj0fdF$G7S>X}>InU6&kUE|Kk9Cg)zb<&RSh!?SqUq@NIQdlUFM*S6P zXNQkoYXE4a<245!5G-Oj6Fm(^ES*-mb}E<3Yw)Tg$y=x;($j+`YC7xi_hOsSn4$(wwc| zoNf5P*sQN}3ThaCeM#_Cd>!Ew8Ekri3j?>Igx=IwcB9^UBYt zG5$5&xxH^tq}<<}!Yn_nkV2ohe9O=ft(7k45#pHnnhxP|p^+X`q+u=U-nG+WOx++x zT18zeRu0d}I8KSBPCQ->NkZ>8aNFs8yy36&Ak%36_A5H33Xa(oxUB&4W-o+>{>jgd z8QuaUJDi6h7cUa;?6yRVgg~x$Vx$_(554MNq_F1*>zL&xF3#t|WJ4Cdg-Fq}xteE} zbrvZZW7pue|Msim+lBkz$daI3NBn<(Rj6kbus^@mpnboe4Es#Aj3h1zXYkew4kc#N zX|O}kQ5(~zNSbk`iGJD1)#_29jzS06U5m*)1arY1PWB0ha4A4oVXq45*MpWNN}8k3 zXf#NZj*8`N_gKdsT+f3n(H||CV>>&;TySk`;{fZO&r9E3aIeTGi-s<}bR!u1ijUv; z<1-P@dQ7SCDX1W$H|QsyR-ddB_*t8;=`yeYhT~n9XVwHx*XlOXIdv%C+z5H#-ddbG z?=GwTD&S-X&tQyZXKzK}yypIz!1;UdfP6&!;^$VS9*K{Zyzlsw4;$FUVx%W9_|MLAw zJK@6+SJ7sb?Qz~C%EZezW?(oD00q{J?vW^{%P0AR55WjoGEyN7+?MNm8)K!Hi&hlr z!36n&u0E<}ay(c^))j`*5!0s=s|O4O#PjQ8zRD$B_mK$5fzM99G}pq#a=vxjFp;$%?LSr{PbTlVptVR#ZW6TtpXr%2bk_pGF zO~epi?QtNg}PSzVIUtBsZgl#gGy3J1W@uENt0hT4< zq0drZGgBwCD0dg&qPUTOcFEyR$GRDsg^x-9aCbk9F1tE(*&s)b35_NWOFVBfr_gVP z7B)YsCSf5m#eh@eK2e5h#HilrIyZGIztH{c8PbRK$!3S} za?70^zl)^VSU8ObDBkI+DJohWJdjEipPh!YW|~CNy(o&2Z8Yk4^C>c*>aH^jRP`G# zPPyu9B0vi7_`-Djt9tOu;w+7-(H4C!Z)vC_-#1{k(9N83n5r(0Ewi<0VSEh@YHaa+ zX{gJ{xrUnLoY4v}Ns+C(34iS4cWcg3N;~K6&R#ReA&V3FXYBpR7y4>zd8Vn=dY;zD zt;mlmQ2H~YkIRR>&<$>Qf(;)A))nUxwHj%43Rdh6AvdvxBsjAyy#69^(gldD^r!un z9VHm64CEbI!SXoiA;YQ)UOR}}EsyRj;jF??7UJLRl;mN!T@`LNl87^TV&L9Z6^Tr( zu13*l1sRa`+e+W&LVuOAaKi+K`vd@ zv0_OMuV81`SfK`LpYt$4i2icK5-;)bs@z+FFzV;zT%V2(t=`@_KmB&$!m^{pXA{8+ zwb}TiTatojlhKj2xwJn}I<@({quUA|XVbr4xI9GZs-qTI70rI0Hg%=C2xgd@Jfl_1 z_jfJ88G)@(9V2JCGFrj3^v1`QO)P_S@11u;rMn0Ao4NHjJpuPHa~Cjts1C(j$_J!9 zxE7x~x75C}?3?jx2Mt!&wLeQX@lbk&FTz_pabaK|w7zhR#zP(_{O-y5`D-}rKTtXZ zb0g)b)gOJh^vJMX)ZuXM?E8vetm2xvJ|}6n57zWFs$O#)5WeFOlH_Tmdzs%j#Jp@D zSL3-s6x1~EP~mYz*zn@bE`AZmJAicb-nZ~@&5QvLXfnZV3JQ{-he@8%21enpQKHoAIjoaF~xZkL$k z_uq%TjvS+E_UQfaP>$}UbX|f<}>Xy`^ecdb`Gb&cV z$aJiA+6VOY*Ri_eEdvLfL|!>^9SJ>@`Az{YN$)oL+=Ct4D2hpC_fQkg>r;!4@lAQ# z;Xa(N-sm_PP;5U)8o$^SygZ$VYCkMc{Ia8ac{cx6cB>`|Q1kdTMgL{{ZLL7#sVV5?+s`Y^$qLsznv9upMY75Po}0euy#H05kb&bgdhiLd@gDB zW=`*hNgte3#1s?;t*suz9BK8Pinqz+CcR zRxP0wau-q&H|G7Ix1wZFK7LLDu55ykVgi=9#?bPU&`N@^YQC`dQl`?WlGgdK z$3}teFkTQrcrO7>*#NknExhmK5z_!oktYdoUP^%oI{+KHV6eYJjdd z6~R~=v8)xjlI_nl!?0x@nO_x&G8xXX7OB&R_C8(d15OJv|nx`aw z>`SoF<|aL*pe*8roFp26f3+_IU~R25_=JBPanXcl{;v1@yE*=N23Zc=w-FboHu>)x z*b=RpC+mejQOQ^E$~-iA7}Y^H$ny2jGeKUK?`O2ExYaxBp~tsKGorg9zqxS z3~U2CCY=B3JCDA-)h+(@_|NqA_ygN^uj;a&sAM|*N1>Qkf7~=bEOG!zy6+ab{|BiK zJ6k!?*CQ@b=!3tp$T2(K3F4!M;{*)hV#MNE=|FQQL4pr^j7w-mX zkP<;b=}tjGl#uQgkWi$%6a++2QUQ@JDUp!wZbiDJTP&nYQbKua?@eq%<(zx(x%c