From d1bce28087ab4530bc0bb55d8500f9de45d52f38 Mon Sep 17 00:00:00 2001 From: toly <1981462002@qq.com> Date: Sat, 3 Apr 2021 17:24:03 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20=E9=80=BB=E8=BE=91=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/blocs/global/global_bloc.dart | 2 +- lib/repositories/rep/category_repository.dart | 1 - .../rep/impl/catagory_db_repository.dart | 35 ++------------ lib/views/pages/app/bloc_wrapper.dart | 12 ++--- .../pages/category/sync/async_button.dart | 6 +-- .../pages/category/sync/upload_button.dart | 4 +- .../pages/data_manage/data_manage_page.dart | 8 ++-- lib/views/pages/splash/unit_splash.dart | 46 ++++++++++++------- lib/views/pages/widget_home/home_page.dart | 18 ++++---- 9 files changed, 60 insertions(+), 72 deletions(-) diff --git a/lib/blocs/global/global_bloc.dart b/lib/blocs/global/global_bloc.dart index 48ca757..b7b09db 100644 --- a/lib/blocs/global/global_bloc.dart +++ b/lib/blocs/global/global_bloc.dart @@ -22,7 +22,7 @@ class GlobalBloc extends Bloc { @override Stream mapEventToState(GlobalEvent event) async* { - // 程序初始化事件处理: 使用AppStorage进行初始化 + // 程序初始化事件处理: 使用 AppStorage 进行初始化 if (event is EventInitApp) { yield await storage.initApp(); } diff --git a/lib/repositories/rep/category_repository.dart b/lib/repositories/rep/category_repository.dart index 7cac3d2..1f5b087 100644 --- a/lib/repositories/rep/category_repository.dart +++ b/lib/repositories/rep/category_repository.dart @@ -21,7 +21,6 @@ abstract class CategoryRepository { // 获取 所有收藏集 及 收藏集对应的组件 id 列表 Future> loadCategoryData(); - Future> loadLikesData(); // 根据 Category 数据 同步 收藏集 Future syncCategoryByData(String data,String likeData); diff --git a/lib/repositories/rep/impl/catagory_db_repository.dart b/lib/repositories/rep/impl/catagory_db_repository.dart index ffb0cce..3ddf88e 100644 --- a/lib/repositories/rep/impl/catagory_db_repository.dart +++ b/lib/repositories/rep/impl/catagory_db_repository.dart @@ -10,8 +10,6 @@ import 'package:flutter_unit/repositories/local_db.dart'; import 'package:flutter_unit/repositories/rep/category_repository.dart'; import 'package:sqflite/sqflite.dart'; -import '../../app_start.dart'; - @@ -99,32 +97,6 @@ class CategoryDbRepository implements CategoryRepository { return completer.future; } - @override - Future> loadLikesData() async { - var likes = await db.rawQuery("SELECT id " - "FROM widget WHERE collected = 1 ORDER BY family,lever DESC"); - var likesData = likes.map((e) => e['id']).toList(); - - return likesData; - } - - - Future _setLikes(List ids) async { - if(ids.isEmpty) return; - String sql = 'UPDATE widget SET collected = 1 WHERE '; - for(int i=0;i> data = await db.rawQuery('SELECT id FROM widget WHERE collected = 1', []); - print(data); - } - @override Future syncCategoryByData(String data,String likeData) async { try { @@ -134,11 +106,14 @@ class CategoryDbRepository implements CategoryRepository { CategoryPo po = CategoryPo.fromNetJson(dataMap[i]["model"]); List widgetIds = dataMap[i]["widgetIds"]; await addCategory(po); - if(widgetIds.isNotEmpty){ + if (widgetIds.isNotEmpty) { await _categoryDao.addWidgets(po.id, widgetIds); } } - await _setLikes(json.decode(likeData)); + List likeWidgets = json.decode(likeData); + for (int i = 0; i < likeWidgets.length; i++) { + await LocalDb.instance.likeDao.like(likeWidgets[i]); + } return true; } catch (e) { print(e); diff --git a/lib/views/pages/app/bloc_wrapper.dart b/lib/views/pages/app/bloc_wrapper.dart index 6fae612..0db8e8d 100644 --- a/lib/views/pages/app/bloc_wrapper.dart +++ b/lib/views/pages/app/bloc_wrapper.dart @@ -40,22 +40,18 @@ class _BlocWrapperState extends State { //使用MultiBlocProvider包裹 providers: [ //Bloc提供器 - BlocProvider( - create: (_) => GlobalBloc(storage)..add(const EventInitApp())), + BlocProvider(create: (_) => GlobalBloc(storage)..add(const EventInitApp())), - BlocProvider( - create: (_) => WidgetsBloc(repository: repository) - ..add(EventTabTap(WidgetFamily.statelessWidget))), + BlocProvider(create: (_) => WidgetsBloc(repository: repository)), BlocProvider( create: (_) => DetailBloc(repository: repository)), BlocProvider( - create: (_) => categoryBloc..add(EventLoadCategory())), + create: (_) => categoryBloc), BlocProvider( - create: (_) => LikeWidgetBloc(repository: repository) - ..add(EventLoadLikeData())), + create: (_) => LikeWidgetBloc(repository: repository)), BlocProvider(create: (_) => RegisterBloc()), diff --git a/lib/views/pages/category/sync/async_button.dart b/lib/views/pages/category/sync/async_button.dart index d586086..da21f96 100644 --- a/lib/views/pages/category/sync/async_button.dart +++ b/lib/views/pages/category/sync/async_button.dart @@ -9,6 +9,7 @@ import 'package:flutter_unit/app/utils/http_utils/result_bean.dart'; import 'package:flutter_unit/blocs/bloc_exp.dart'; import 'package:flutter_unit/blocs/category/category_bloc.dart'; import 'package:flutter_unit/model/category_model.dart'; +import 'package:flutter_unit/repositories/local_db.dart'; import 'package:flutter_unit/repositories/rep/category_repository.dart'; import 'package:flutter_unit/views/components/permanent/feedback_widget.dart'; @@ -75,8 +76,7 @@ class _SyncCategoryButtonState extends State { // 说明请求成功 if (result.data != null) { //说明有后台备份数据,进行同步操作 - CategoryRepository repository = - BlocProvider.of(context).repository; + CategoryRepository repository = BlocProvider.of(context).repository; await repository.syncCategoryByData(result.data.data,result.data.likeData); BlocProvider.of(context).add(EventLoadCategory()); BlocProvider.of(context).add(EventLoadLikeData()); @@ -85,7 +85,7 @@ class _SyncCategoryButtonState extends State { // 这里防止有傻孩子没点备份,就点同步,哥哥好心,给备份一下。 CategoryRepository rep = BlocProvider.of(context).repository; List loadCategories = await rep.loadCategoryData(); - List likeData = await rep.loadLikesData(); + List likeData = await LocalDb.instance.likeDao.likeWidgetIds(); String json = jsonEncode(loadCategories); String likeJson = jsonEncode(likeData); diff --git a/lib/views/pages/category/sync/upload_button.dart b/lib/views/pages/category/sync/upload_button.dart index e94a112..be52298 100644 --- a/lib/views/pages/category/sync/upload_button.dart +++ b/lib/views/pages/category/sync/upload_button.dart @@ -8,6 +8,7 @@ import 'package:flutter_unit/app/res/toly_icon.dart'; import 'package:flutter_unit/app/utils/http_utils/result_bean.dart'; import 'package:flutter_unit/blocs/category/category_bloc.dart'; import 'package:flutter_unit/model/category_model.dart'; +import 'package:flutter_unit/repositories/local_db.dart'; import 'package:flutter_unit/repositories/rep/category_repository.dart'; import 'package:flutter_unit/views/components/permanent/feedback_widget.dart'; @@ -71,7 +72,8 @@ class _UploadCategoryButtonState extends State { CategoryRepository rep = BlocProvider.of(context).repository; List loadCategories = await rep.loadCategoryData(); - List likeData = await rep.loadLikesData(); + List likeData = await LocalDb.instance.likeDao.likeWidgetIds(); + String json = jsonEncode(loadCategories); String likeJson = jsonEncode(likeData); diff --git a/lib/views/pages/data_manage/data_manage_page.dart b/lib/views/pages/data_manage/data_manage_page.dart index 85c4f36..6c063ec 100644 --- a/lib/views/pages/data_manage/data_manage_page.dart +++ b/lib/views/pages/data_manage/data_manage_page.dart @@ -10,10 +10,11 @@ import 'package:flutter_unit/app/utils/Toast.dart'; import 'package:flutter_unit/app/utils/http_utils/result_bean.dart'; import 'package:flutter_unit/blocs/bloc_exp.dart'; import 'package:flutter_unit/model/category_model.dart'; +import 'package:flutter_unit/repositories/local_db.dart'; import 'package:flutter_unit/repositories/rep/category_repository.dart'; import 'package:flutter_unit/user_system/component/authentic_widget.dart'; -import 'package:sqflite/sqflite.dart'; import 'package:path/path.dart' as path; +import 'package:sqflite/sqflite.dart'; /// create by 张风捷特烈 on 2021/2/26 /// contact me by email 1981462002@qq.com @@ -82,7 +83,8 @@ class DataManagePage extends StatelessWidget { void _doUploadCategoryData(BuildContext context) async { CategoryRepository rep = BlocProvider.of(context).repository; List loadCategories = await rep.loadCategoryData(); - List likeData = await rep.loadLikesData(); + + List likeData = await LocalDb.instance.likeDao.likeWidgetIds(); String json = jsonEncode(loadCategories); String likeJson = jsonEncode(likeData); @@ -116,7 +118,7 @@ class DataManagePage extends StatelessWidget { CategoryRepository rep = BlocProvider.of(context).repository; List loadCategories = await rep.loadCategoryData(); - List likeData = await rep.loadLikesData(); + List likeData = await LocalDb.instance.likeDao.likeWidgetIds(); String json = jsonEncode(loadCategories); String likeJson = jsonEncode(likeData); diff --git a/lib/views/pages/splash/unit_splash.dart b/lib/views/pages/splash/unit_splash.dart index e93b2ea..4e142fb 100644 --- a/lib/views/pages/splash/unit_splash.dart +++ b/lib/views/pages/splash/unit_splash.dart @@ -1,9 +1,13 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_unit/app/res/str_unit.dart'; import 'package:flutter_unit/app/router/unit_router.dart'; +import 'package:flutter_unit/blocs/bloc_exp.dart'; +import 'package:flutter_unit/model/enums.dart'; import 'package:flutter_unit/views/pages/splash/splash_bottom.dart'; + import 'unit_paint.dart'; /// create by 张风捷特烈 on 2020-03-07 @@ -58,24 +62,25 @@ class _UnitSplashState extends State with TickerProviderStateMixin { final double winH = MediaQuery.of(context).size.height; final double winW = MediaQuery.of(context).size.width; - return Scaffold( - body: Stack( - alignment: Alignment.center, - children: [ - _buildFlutterLogo(), - Container( - width: winW, - height: winH, - child: CustomPaint( - painter: UnitPainter(repaint: _controller), + return BlocListener( + listener: _listenStart, + child: Scaffold( + body: Stack( + alignment: Alignment.center, + children: [ + _buildFlutterLogo(), + Container( + width: winW, + height: winH, + child: CustomPaint( + painter: UnitPainter(repaint: _controller), + ), ), - ), - _buildFlutterUnitText(winH, winW), - _buildHead(), - Positioned( - bottom: 15, - child: SplashBottom()) - ], + _buildFlutterUnitText(winH, winW), + _buildHead(), + Positioned(bottom: 15, child: SplashBottom()) + ], + ), ), ); } @@ -138,4 +143,11 @@ class _UnitSplashState extends State with TickerProviderStateMixin { width: 45, child: Image.asset('assets/images/icon_head.webp'), )); + + // 监听资源加载完毕,启动,触发事件 + void _listenStart(BuildContext context, GlobalState state) { + BlocProvider.of(context).add(EventTabTap(WidgetFamily.statelessWidget)); + BlocProvider.of(context).add(EventLoadLikeData()); + BlocProvider.of(context).add(EventLoadCategory()); + } } diff --git a/lib/views/pages/widget_home/home_page.dart b/lib/views/pages/widget_home/home_page.dart index 7c1c264..f4991f2 100644 --- a/lib/views/pages/widget_home/home_page.dart +++ b/lib/views/pages/widget_home/home_page.dart @@ -3,19 +3,18 @@ import 'dart:math'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:flutter_unit/app/utils/convert.dart'; - import 'package:flutter_unit/app/router/unit_router.dart'; +import 'package:flutter_unit/app/utils/convert.dart'; import 'package:flutter_unit/blocs/bloc_exp.dart'; +import 'package:flutter_unit/model/enums.dart'; +import 'package:flutter_unit/model/widget_model.dart'; import 'package:flutter_unit/views/components/permanent/feedback_widget.dart'; -import 'package:flutter_unit/views/components/project/overlay_tool_wrapper.dart'; import 'package:flutter_unit/views/components/project/default/empty_shower.dart'; import 'package:flutter_unit/views/components/project/default/error_shower.dart'; import 'package:flutter_unit/views/components/project/default/loading_shower.dart'; -import 'package:flutter_unit/views/components/project/no_more_widget.dart'; - -import 'package:flutter_unit/model/widget_model.dart'; import 'package:flutter_unit/views/components/project/items/widget/home_item_support.dart'; +import 'package:flutter_unit/views/components/project/no_more_widget.dart'; +import 'package:flutter_unit/views/components/project/overlay_tool_wrapper.dart'; import 'package:flutter_unit/views/pages/widget_home/toly_app_bar.dart'; import 'background.dart'; @@ -30,8 +29,11 @@ class _HomePageState extends State @override void initState() { super.initState(); - WidgetsBinding.instance.addPostFrameCallback( - (_) => OverlayToolWrapper.of(context).showFloating()); + WidgetsBinding.instance.addPostFrameCallback(_onFrameCallBack); + } + + void _onFrameCallBack(Duration timeStamp) { + OverlayToolWrapper.of(context).showFloating(); } @override