From f16d031417ce5c7d1518abf39e07a3969a39b550 Mon Sep 17 00:00:00 2001 From: toly <1981462002@qq.com> Date: Sun, 26 Sep 2021 20:34:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E6=AD=A5=E4=BC=98=E5=8C=96=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/flutter.db | Bin 974848 -> 982931 bytes .../blocs}/color_change_bloc.dart | 2 +- lib/{ => app}/blocs/global/global_bloc.dart | 3 +- lib/{ => app}/blocs/global/global_event.dart | 0 lib/{ => app}/blocs/global/global_state.dart | 0 lib/app/router/unit_router.dart | 44 ++-- lib/app/utils/convert.dart | 2 +- lib/app/utils/stream_ext/backpressure.dart | 2 +- .../views}/about/about_app_page.dart | 4 +- .../views}/about/about_me_page.dart | 2 +- .../about/version/app_version_checker.dart | 3 +- .../views}/about/version/version_shower.dart | 0 .../views}/about/version_info.dart | 7 +- .../views}/data_manage/data_manage_page.dart | 12 +- .../views/navigation/bloc_wrapper.dart | 16 +- .../views/navigation/flutter_unit.dart | 8 +- .../views/navigation/unit_navigation.dart | 11 +- .../views}/setting/code_style_setting.dart | 5 +- .../views}/setting/font_setting.dart | 4 +- .../views}/setting/item_style_setting.dart | 4 +- .../views}/setting/setting_page.dart | 4 +- .../views}/setting/theme_color_setting.dart | 4 +- .../views}/splash/flutter_unit_text.dart | 0 .../views}/splash/splash_bottom.dart | 0 .../views}/splash/unit_paint.dart | 0 .../views}/splash/unit_splash.dart | 10 +- .../views}/unit_todo/attr_unit_page.dart | 0 .../views}/unit_todo/layout_unit_page.dart | 0 .../views}/unit_todo/paint_unit_page.dart | 0 .../views}/unit_todo/point_unit_page.dart | 0 lib/blocs/bloc_exp.dart | 35 --- lib/main.dart | 5 +- lib/model/github/g/github_user.g.dart | 93 -------- lib/model/github/g/issue.g.dart | 55 ----- lib/model/github/g/issue_comment.g.dart | 40 ---- lib/model/github/g/license.g.dart | 19 -- lib/model/github/g/repository.g.dart | 96 -------- .../github/g/repository_permissions.g.dart | 24 -- lib/model/github/github_user.dart | 94 -------- lib/model/github/issue.dart | 77 ------- lib/model/github/issue_comment.dart | 36 --- lib/model/github/license.dart | 19 -- lib/model/github/repository.dart | 137 ----------- lib/model/github/repository_permissions.dart | 18 -- lib/painter_system/gallery_unit.dart | 4 +- lib/{app => point_system}/api/app_info.dart | 0 .../api/category_api.dart | 0 lib/{app => point_system}/api/issues_api.dart | 7 +- .../blocs/point_bloc}/point_bloc.dart | 5 +- .../blocs/point_bloc}/point_event.dart | 0 .../blocs/point_bloc}/point_state.dart | 3 +- .../point_comment_bloc.dart | 7 +- .../point_comment_event.dart | 2 +- .../point_comment_state.dart | 4 +- lib/point_system/blocs/point_system_bloc.dart | 9 + .../github_model/github_model.dart | 6 + .../github_model/github_user.dart | 172 ++++++++++++++ lib/point_system/github_model/issue.dart | 117 ++++++++++ .../github_model/issue_comment.dart | 62 +++++ lib/point_system/github_model/license.dart | 24 ++ lib/point_system/github_model/repository.dart | 216 ++++++++++++++++++ .../github_model/repository_permissions.dart | 26 +++ .../views}/issues_point/issue_item.dart | 3 +- .../views}/issues_point/issues_detail.dart | 7 +- .../issues_point/issues_point_page.dart | 9 +- .../views}/issues_point/repo_widget.dart | 3 +- lib/repositories/app_start.dart | 91 -------- lib/repositories/bean/category_po.dart | 88 ------- lib/repositories/bean/node_po.dart | 38 --- lib/repositories/bean/widget_po.dart | 62 ----- lib/repositories/dao/category_dao.dart | 202 ---------------- lib/repositories/dao/like_dao.dart | 64 ------ lib/repositories/dao/node_dao.dart | 44 ---- lib/repositories/dao/widget_dao.dart | 67 ------ lib/repositories/local_db.dart | 50 ---- lib/repositories/local_storage.dart | 42 ---- lib/repositories/rep/category_repository.dart | 40 ---- .../rep/impl/catagory_db_repository.dart | 120 ---------- .../rep/impl/widget_db_repository.dart | 79 ------- lib/repositories/rep/widget_repository.dart | 23 -- lib/user_system/bloc/authentic/bloc.dart | 3 +- .../flutter/no_div_expansion_tile.dart | 4 +- .../project/items/category_list_item.dart | 2 +- .../items/collect_widget_list_item.dart | 2 +- .../items/widget/coupon_widget_list_item.dart | 5 +- .../items/widget/home_item_support.dart | 4 +- .../items/widget/simple_widget_list_item.dart | 5 +- .../items/widget/techno_widget_list_item.dart | 5 +- .../project/overlay_tool_wrapper.dart | 3 +- .../RichText/node2_widget.dart | 2 +- .../StatefulWidget/AppBar/node1_base.dart | 2 +- .../StatefulWidget/AppBar/node2_tab.dart | 2 +- .../SimpleDialog/node1_base.dart | 2 +- .../blocs/category_bloc}/category_bloc.dart | 6 +- .../blocs/category_bloc}/category_event.dart | 0 .../blocs/category_bloc}/category_state.dart | 2 +- .../category_widget_bloc.dart | 9 +- .../category_widget_event.dart | 0 .../category_widget_state.dart | 2 +- .../liked_widget_bloc/liked_widget_bloc.dart} | 9 +- .../liked_widget_event.dart} | 0 .../liked_widget_state.dart} | 2 +- .../blocs/search_bloc}/search_bloc.dart | 3 +- .../blocs/search_bloc}/search_event.dart | 3 +- .../blocs/search_bloc}/search_state.dart | 2 +- .../widget_detail_bloc.dart} | 10 +- .../widget_detail_event.dart} | 2 +- .../widget_detail_state.dart} | 4 +- .../blocs/widget_system_bloc.dart | 25 ++ .../widgets_bloc}/widgets_bloc.dart | 8 +- .../widgets_bloc}/widgets_event.dart | 2 +- .../widgets_bloc}/widgets_state.dart | 4 +- lib/widget_system/repositories/app_start.dart | 5 +- .../repositories/dao/category_dao.dart | 20 +- .../repositories/dao/like_dao.dart | 4 +- .../repositories/dao/node_dao.dart | 6 +- .../repositories/dao/widget_dao.dart | 4 +- lib/widget_system/repositories/local_db.dart | 2 +- .../repositories}/model/category_model.dart | 3 +- .../repositories}/model/enums.dart | 0 .../repositories}/model/node_model.dart | 0 .../repositories}/model/widget_model.dart | 5 +- .../repositories/rep/category_repository.dart | 6 +- .../rep/impl/catagory_db_repository.dart | 14 +- .../rep/impl/widget_db_repository.dart | 24 +- .../repositories/rep/widget_repository.dart | 8 +- .../repositories/repositories.dart | 18 ++ .../category_view}/category_detail.dart | 11 +- .../category_view}/category_page.dart | 4 +- .../category_view}/collect_page.dart | 2 +- .../category_view}/edit_category_panel.dart | 4 +- .../category_view}/empty_category.dart | 2 +- .../category_view}/home_right_drawer.dart | 4 +- .../category_view}/like_widget_page.dart | 7 +- .../category_view}/sync/async_button.dart | 13 +- .../category_view}/sync/upload_button.dart | 12 +- .../views/search_view}/app_search_bar.dart | 5 +- .../views/search_view}/error_page.dart | 0 .../views/search_view}/not_search_page.dart | 0 .../views/search_view}/serach_page.dart | 25 +- .../category_end_drawer.dart | 10 +- .../widget_detail_page.dart | 13 +- .../widget_home_view}/background.dart | 0 .../widget_home_view}/home_drawer.dart | 7 +- .../widget_home_view}/home_page.dart | 15 +- .../widget_home_view}/toly_app_bar.dart | 0 .../views/widget_system_view.dart | 11 + 147 files changed, 969 insertions(+), 2020 deletions(-) rename lib/{views/navigation => app/blocs}/color_change_bloc.dart (90%) rename lib/{ => app}/blocs/global/global_bloc.dart (95%) rename lib/{ => app}/blocs/global/global_event.dart (100%) rename lib/{ => app}/blocs/global/global_state.dart (100%) rename lib/{views/pages => app/views}/about/about_app_page.dart (97%) rename lib/{views/pages => app/views}/about/about_me_page.dart (98%) rename lib/{views/pages => app/views}/about/version/app_version_checker.dart (98%) rename lib/{views/pages => app/views}/about/version/version_shower.dart (100%) rename lib/{views/pages => app/views}/about/version_info.dart (93%) rename lib/{views/pages => app/views}/data_manage/data_manage_page.dart (94%) rename lib/{ => app}/views/navigation/bloc_wrapper.dart (79%) rename lib/{ => app}/views/navigation/flutter_unit.dart (81%) rename lib/{ => app}/views/navigation/unit_navigation.dart (90%) rename lib/{views/pages => app/views}/setting/code_style_setting.dart (92%) rename lib/{views/pages => app/views}/setting/font_setting.dart (93%) rename lib/{views/pages => app/views}/setting/item_style_setting.dart (90%) rename lib/{views/pages => app/views}/setting/setting_page.dart (94%) rename lib/{views/pages => app/views}/setting/theme_color_setting.dart (94%) rename lib/{views/pages => app/views}/splash/flutter_unit_text.dart (100%) rename lib/{views/pages => app/views}/splash/splash_bottom.dart (100%) rename lib/{views/pages => app/views}/splash/unit_paint.dart (100%) rename lib/{views/pages => app/views}/splash/unit_splash.dart (92%) rename lib/{views/pages => app/views}/unit_todo/attr_unit_page.dart (100%) rename lib/{views/pages => app/views}/unit_todo/layout_unit_page.dart (100%) rename lib/{views/pages => app/views}/unit_todo/paint_unit_page.dart (100%) rename lib/{views/pages => app/views}/unit_todo/point_unit_page.dart (100%) delete mode 100644 lib/blocs/bloc_exp.dart delete mode 100644 lib/model/github/g/github_user.g.dart delete mode 100644 lib/model/github/g/issue.g.dart delete mode 100644 lib/model/github/g/issue_comment.g.dart delete mode 100644 lib/model/github/g/license.g.dart delete mode 100644 lib/model/github/g/repository.g.dart delete mode 100644 lib/model/github/g/repository_permissions.g.dart delete mode 100644 lib/model/github/github_user.dart delete mode 100644 lib/model/github/issue.dart delete mode 100644 lib/model/github/issue_comment.dart delete mode 100644 lib/model/github/license.dart delete mode 100644 lib/model/github/repository.dart delete mode 100644 lib/model/github/repository_permissions.dart rename lib/{app => point_system}/api/app_info.dart (100%) rename lib/{app => point_system}/api/category_api.dart (100%) rename lib/{app => point_system}/api/issues_api.dart (82%) rename lib/{blocs/point => point_system/blocs/point_bloc}/point_bloc.dart (85%) rename lib/{blocs/point => point_system/blocs/point_bloc}/point_event.dart (100%) rename lib/{blocs/point => point_system/blocs/point_bloc}/point_state.dart (88%) rename lib/{blocs/point_comment => point_system/blocs/point_comment_bloc}/point_comment_bloc.dart (83%) rename lib/{blocs/point_comment => point_system/blocs/point_comment_bloc}/point_comment_event.dart (82%) rename lib/{blocs/point_comment => point_system/blocs/point_comment_bloc}/point_comment_state.dart (89%) create mode 100644 lib/point_system/blocs/point_system_bloc.dart create mode 100644 lib/point_system/github_model/github_model.dart create mode 100644 lib/point_system/github_model/github_user.dart create mode 100644 lib/point_system/github_model/issue.dart create mode 100644 lib/point_system/github_model/issue_comment.dart create mode 100644 lib/point_system/github_model/license.dart create mode 100644 lib/point_system/github_model/repository.dart create mode 100644 lib/point_system/github_model/repository_permissions.dart rename lib/{views/pages => point_system/views}/issues_point/issue_item.dart (97%) rename lib/{views/pages => point_system/views}/issues_point/issues_detail.dart (96%) rename lib/{views/pages => point_system/views}/issues_point/issues_point_page.dart (94%) rename lib/{views/pages => point_system/views}/issues_point/repo_widget.dart (98%) delete mode 100644 lib/repositories/app_start.dart delete mode 100644 lib/repositories/bean/category_po.dart delete mode 100644 lib/repositories/bean/node_po.dart delete mode 100644 lib/repositories/bean/widget_po.dart delete mode 100644 lib/repositories/dao/category_dao.dart delete mode 100644 lib/repositories/dao/like_dao.dart delete mode 100644 lib/repositories/dao/node_dao.dart delete mode 100644 lib/repositories/dao/widget_dao.dart delete mode 100644 lib/repositories/local_db.dart delete mode 100644 lib/repositories/local_storage.dart delete mode 100644 lib/repositories/rep/category_repository.dart delete mode 100644 lib/repositories/rep/impl/catagory_db_repository.dart delete mode 100644 lib/repositories/rep/impl/widget_db_repository.dart delete mode 100644 lib/repositories/rep/widget_repository.dart rename lib/{blocs/category => widget_system/blocs/category_bloc}/category_bloc.dart (93%) rename lib/{blocs/category => widget_system/blocs/category_bloc}/category_event.dart (100%) rename lib/{blocs/category => widget_system/blocs/category_bloc}/category_state.dart (90%) rename lib/{blocs/category_widget => widget_system/blocs/category_widget_bloc}/category_widget_bloc.dart (81%) rename lib/{blocs/category_widget => widget_system/blocs/category_widget_bloc}/category_widget_event.dart (100%) rename lib/{blocs/category_widget => widget_system/blocs/category_widget_bloc}/category_widget_state.dart (86%) rename lib/{blocs/like/like_bloc.dart => widget_system/blocs/liked_widget_bloc/liked_widget_bloc.dart} (82%) rename lib/{blocs/like/like_event.dart => widget_system/blocs/liked_widget_bloc/liked_widget_event.dart} (100%) rename lib/{blocs/like/like_state.dart => widget_system/blocs/liked_widget_bloc/liked_widget_state.dart} (80%) rename lib/{blocs/search => widget_system/blocs/search_bloc}/search_bloc.dart (91%) rename lib/{blocs/search => widget_system/blocs/search_bloc}/search_event.dart (71%) rename lib/{blocs/search => widget_system/blocs/search_bloc}/search_state.dart (84%) rename lib/widget_system/{widget_detail/bloc/detail/detail_bloc.dart => blocs/widget_detail_bloc/widget_detail_bloc.dart} (81%) rename lib/widget_system/{widget_detail/bloc/detail/detail_event.dart => blocs/widget_detail_bloc/widget_detail_event.dart} (88%) rename lib/widget_system/{widget_detail/bloc/detail/detail_state.dart => blocs/widget_detail_bloc/widget_detail_state.dart} (83%) create mode 100644 lib/widget_system/blocs/widget_system_bloc.dart rename lib/widget_system/{widget_home/bloc => blocs/widgets_bloc}/widgets_bloc.dart (73%) rename lib/widget_system/{widget_home/bloc => blocs/widgets_bloc}/widgets_event.dart (84%) rename lib/widget_system/{widget_home/bloc => blocs/widgets_bloc}/widgets_state.dart (85%) rename lib/{ => widget_system/repositories}/model/category_model.dart (95%) rename lib/{ => widget_system/repositories}/model/enums.dart (100%) rename lib/{ => widget_system/repositories}/model/node_model.dart (100%) rename lib/{ => widget_system/repositories}/model/widget_model.dart (92%) create mode 100644 lib/widget_system/repositories/repositories.dart rename lib/widget_system/{widget_category/view => views/category_view}/category_detail.dart (93%) rename lib/widget_system/{widget_category/view => views/category_view}/category_page.dart (96%) rename lib/widget_system/{widget_category/view => views/category_view}/collect_page.dart (98%) rename lib/widget_system/{widget_category/view => views/category_view}/edit_category_panel.dart (95%) rename lib/widget_system/{widget_category/view => views/category_view}/empty_category.dart (96%) rename lib/widget_system/{widget_category/view => views/category_view}/home_right_drawer.dart (94%) rename lib/widget_system/{widget_category/view => views/category_view}/like_widget_page.dart (89%) rename lib/widget_system/{widget_category/view => views/category_view}/sync/async_button.dart (89%) rename lib/widget_system/{widget_category/view => views/category_view}/sync/upload_button.dart (89%) rename lib/{views/pages/search => widget_system/views/search_view}/app_search_bar.dart (91%) rename lib/{views/pages/search => widget_system/views/search_view}/error_page.dart (100%) rename lib/{views/pages/search => widget_system/views/search_view}/not_search_page.dart (100%) rename lib/{views/pages/search => widget_system/views/search_view}/serach_page.dart (87%) rename lib/widget_system/{widget_detail/view => views/widget_detail_view}/category_end_drawer.dart (93%) rename lib/widget_system/{widget_detail/view => views/widget_detail_view}/widget_detail_page.dart (95%) rename lib/widget_system/{widget_home/view => views/widget_home_view}/background.dart (100%) rename lib/widget_system/{widget_home/view => views/widget_home_view}/home_drawer.dart (92%) rename lib/widget_system/{widget_home/view => views/widget_home_view}/home_page.dart (89%) rename lib/widget_system/{widget_home/view => views/widget_home_view}/toly_app_bar.dart (100%) create mode 100644 lib/widget_system/views/widget_system_view.dart diff --git a/assets/flutter.db b/assets/flutter.db index 132af61eab7b8d0141a0928e50c3e2dc197c10bd..5cd3c7a211790b767c56269ccc5b53b2b2c03ebf 100644 GIT binary patch delta 36536 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 delta 28942 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 implements ForwardingSink { // startBufferEvery = 3 // last buffer: [0, 1] // 0 is the first event, - // the n-the event is not yet dispatched at this point + // the n-the event is not yet dispatched at this point_bloc // skip becomes 1 // event 2 is skipped, skip becomes 0 // event 3 is now added to the buffer diff --git a/lib/views/pages/about/about_app_page.dart b/lib/app/views/about/about_app_page.dart similarity index 97% rename from lib/views/pages/about/about_app_page.dart rename to lib/app/views/about/about_app_page.dart index 7050f3a..1cdbc3c 100644 --- a/lib/views/pages/about/about_app_page.dart +++ b/lib/app/views/about/about_app_page.dart @@ -114,7 +114,7 @@ class AboutAppPage extends StatelessWidget { children: [ FeedbackWidget( onPressed: () => - _launchURL("https://github.com/toly1994328/FlutterUnit"), + _launchURL("https://github_model.com/toly1994328/FlutterUnit"), child: Wrap( direction: Axis.vertical, crossAxisAlignment: WrapCrossAlignment.center, @@ -154,7 +154,7 @@ class AboutAppPage extends StatelessWidget { info: ' Flutter Unit 是一个非盈利性的开源项目,' '旨在提供全面的Flutter学习指南及编程者的交流技术的接口。' '由【张风捷特烈】提供技术支持和全权维护。唯一开源网站网址: ' - 'https://github.com/toly1994328/FlutterUnit', + 'https://github_model.com/toly1994328/FlutterUnit', ), Divider( height: 20, diff --git a/lib/views/pages/about/about_me_page.dart b/lib/app/views/about/about_me_page.dart similarity index 98% rename from lib/views/pages/about/about_me_page.dart rename to lib/app/views/about/about_me_page.dart index 1b06676..d59104d 100644 --- a/lib/views/pages/about/about_me_page.dart +++ b/lib/app/views/about/about_me_page.dart @@ -187,7 +187,7 @@ class AboutMePage extends StatelessWidget { )), FeedbackWidget( onPressed: () => - _launchURL("https://github.com/toly1994328"), + _launchURL("https://github_model.com/toly1994328"), child: Wrap( direction: Axis.vertical, crossAxisAlignment: WrapCrossAlignment.center, diff --git a/lib/views/pages/about/version/app_version_checker.dart b/lib/app/views/about/version/app_version_checker.dart similarity index 98% rename from lib/views/pages/about/version/app_version_checker.dart rename to lib/app/views/about/version/app_version_checker.dart index beebe08..f315d6d 100644 --- a/lib/views/pages/about/version/app_version_checker.dart +++ b/lib/app/views/about/version/app_version_checker.dart @@ -3,11 +3,12 @@ import 'dart:io'; import 'package:dio/dio.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_unit/app/api/app_info.dart'; + import 'package:flutter_unit/app/utils/Toast.dart'; import 'package:flutter_unit/app/utils/convert.dart'; import 'package:flutter_unit/app/utils/http_utils/http_util.dart'; import 'package:flutter_unit/app/utils/http_utils/result_bean.dart'; +import 'package:flutter_unit/point_system/api/app_info.dart'; import 'package:install_plugin/install_plugin.dart'; import 'package:package_info/package_info.dart'; import 'package:path/path.dart' as path; diff --git a/lib/views/pages/about/version/version_shower.dart b/lib/app/views/about/version/version_shower.dart similarity index 100% rename from lib/views/pages/about/version/version_shower.dart rename to lib/app/views/about/version/version_shower.dart diff --git a/lib/views/pages/about/version_info.dart b/lib/app/views/about/version_info.dart similarity index 93% rename from lib/views/pages/about/version_info.dart rename to lib/app/views/about/version_info.dart index 552a6ce..730700f 100644 --- a/lib/views/pages/about/version_info.dart +++ b/lib/app/views/about/version_info.dart @@ -1,10 +1,9 @@ import 'package:flutter/material.dart'; -import 'package:flutter_unit/app/api/app_info.dart'; -import 'package:flutter_unit/app/res/str_unit.dart'; + import 'package:flutter_unit/app/res/style/behavior/no_scroll_behavior.dart'; import 'package:flutter_unit/app/router/unit_router.dart'; -import 'package:flutter_unit/app/utils/http_utils/result_bean.dart'; + import 'package:flutter_unit/views/components/permanent/circle_image.dart'; import 'package:flutter_unit/views/components/permanent/feedback_widget.dart'; import 'package:url_launcher/url_launcher.dart'; @@ -107,7 +106,7 @@ class VersionInfo extends StatelessWidget { children: [ FeedbackWidget( onPressed: (){ - _launchURL("https://github.com/toly1994328/FlutterUnit"); + _launchURL("https://github_model.com/toly1994328/FlutterUnit"); }, child: Text('《查看本项目Github仓库》',style: TextStyle(fontSize: 12,color: Color(0xff616C84),),)), Text('Power By 张风捷特烈',style: TextStyle(fontSize: 12,color: Colors.grey),), diff --git a/lib/views/pages/data_manage/data_manage_page.dart b/lib/app/views/data_manage/data_manage_page.dart similarity index 94% rename from lib/views/pages/data_manage/data_manage_page.dart rename to lib/app/views/data_manage/data_manage_page.dart index 566a1fd..e963911 100644 --- a/lib/views/pages/data_manage/data_manage_page.dart +++ b/lib/app/views/data_manage/data_manage_page.dart @@ -4,15 +4,17 @@ import 'dart:io'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:flutter_unit/app/api/category_api.dart'; + import 'package:flutter_unit/app/res/toly_icon.dart'; 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/point_system/api/category_api.dart'; + +import 'package:flutter_unit/widget_system/repositories/model/category_model.dart'; +import 'package:flutter_unit/widget_system/repositories/repositories.dart'; + import 'package:flutter_unit/user_system/component/authentic_widget.dart'; +import 'package:flutter_unit/widget_system/blocs/widget_system_bloc.dart'; import 'package:path/path.dart' as path; import 'package:sqflite/sqflite.dart'; diff --git a/lib/views/navigation/bloc_wrapper.dart b/lib/app/views/navigation/bloc_wrapper.dart similarity index 79% rename from lib/views/navigation/bloc_wrapper.dart rename to lib/app/views/navigation/bloc_wrapper.dart index fd39bcd..cfbb8bc 100644 --- a/lib/views/navigation/bloc_wrapper.dart +++ b/lib/app/views/navigation/bloc_wrapper.dart @@ -1,18 +1,16 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:flutter_unit/repositories/app_start.dart'; -import 'package:flutter_unit/repositories/local_db.dart'; -import 'package:flutter_unit/repositories/rep/impl/catagory_db_repository.dart'; -import 'package:flutter_unit/repositories/rep/impl/widget_db_repository.dart'; -import 'package:flutter_unit/repositories/rep/widget_repository.dart'; +import 'package:flutter_unit/app/blocs/global/global_bloc.dart'; +import 'package:flutter_unit/app/blocs/global/global_event.dart'; +import 'package:flutter_unit/point_system/blocs/point_system_bloc.dart'; +import 'package:flutter_unit/widget_system/repositories/repositories.dart'; import 'package:flutter_unit/user_system/bloc/authentic/bloc.dart'; import 'package:flutter_unit/user_system/bloc/authentic/event.dart'; import 'package:flutter_unit/user_system/bloc/login/bloc.dart'; import 'package:flutter_unit/user_system/bloc/register/bloc.dart'; -import 'package:flutter_unit/model/enums.dart'; -import 'package:flutter_unit/blocs/bloc_exp.dart'; -import 'package:flutter_unit/widget_system/widget_detail/bloc/detail/detail_bloc.dart'; -import 'package:flutter_unit/widget_system/widget_home/bloc/widgets_bloc.dart'; + +import 'package:flutter_unit/widget_system/blocs/widget_system_bloc.dart'; + /// create by 张风捷特烈 on 2020/4/28 diff --git a/lib/views/navigation/flutter_unit.dart b/lib/app/views/navigation/flutter_unit.dart similarity index 81% rename from lib/views/navigation/flutter_unit.dart rename to lib/app/views/navigation/flutter_unit.dart index 4dbf5c0..bc3bd20 100644 --- a/lib/views/navigation/flutter_unit.dart +++ b/lib/app/views/navigation/flutter_unit.dart @@ -1,11 +1,13 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:flutter_unit/app/blocs/global/global_bloc.dart'; +import 'package:flutter_unit/app/blocs/global/global_state.dart'; import 'package:flutter_unit/app/res/cons.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/views/navigation/color_change_bloc.dart'; -import 'package:flutter_unit/views/pages/splash/unit_splash.dart'; + +import 'package:flutter_unit/app/blocs/color_change_bloc.dart'; +import 'package:flutter_unit/app/views/splash/unit_splash.dart'; /// create by 张风捷特烈 on 2020/4/28 diff --git a/lib/views/navigation/unit_navigation.dart b/lib/app/views/navigation/unit_navigation.dart similarity index 90% rename from lib/views/navigation/unit_navigation.dart rename to lib/app/views/navigation/unit_navigation.dart index a5c08ed..c4876e3 100644 --- a/lib/views/navigation/unit_navigation.dart +++ b/lib/app/views/navigation/unit_navigation.dart @@ -2,20 +2,17 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_unit/app/res/cons.dart'; import 'package:flutter_unit/app/router/unit_router.dart'; -import 'package:flutter_unit/blocs/bloc_exp.dart'; + import 'package:flutter_unit/painter_system/gallery_unit.dart'; import 'package:flutter_unit/user_system/pages/user/user_page.dart'; import 'package:flutter_unit/views/components/project/nav/unit_bottom_bar.dart'; import 'package:flutter_unit/views/components/project/overlay_tool_wrapper.dart'; +import 'package:flutter_unit/widget_system/blocs/widget_system_bloc.dart'; -import 'package:flutter_unit/widget_system/widget_category/view/collect_page.dart'; -import 'package:flutter_unit/widget_system/widget_category/view/home_right_drawer.dart'; +import 'package:flutter_unit/widget_system/views/widget_system_view.dart'; -import 'package:flutter_unit/widget_system/widget_home/view/home_drawer.dart'; -import 'package:flutter_unit/widget_system/widget_home/view/home_page.dart'; - -import 'color_change_bloc.dart'; +import '../../blocs/color_change_bloc.dart'; /// create by 张风捷特烈 on 2020-04-11 /// contact me by email 1981462002@qq.com diff --git a/lib/views/pages/setting/code_style_setting.dart b/lib/app/views/setting/code_style_setting.dart similarity index 92% rename from lib/views/pages/setting/code_style_setting.dart rename to lib/app/views/setting/code_style_setting.dart index addc905..5000eda 100644 --- a/lib/views/pages/setting/code_style_setting.dart +++ b/lib/app/views/setting/code_style_setting.dart @@ -1,7 +1,10 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:flutter_unit/app/blocs/global/global_bloc.dart'; +import 'package:flutter_unit/app/blocs/global/global_event.dart'; +import 'package:flutter_unit/app/blocs/global/global_state.dart'; import 'package:flutter_unit/app/res/cons.dart'; -import 'package:flutter_unit/blocs/bloc_exp.dart'; + import 'package:flutter_unit/views/components/permanent/code/code_widget.dart'; import 'package:flutter_unit/views/components/permanent/code/highlighter_style.dart'; import 'package:flutter_unit/views/components/permanent/feedback_widget.dart'; diff --git a/lib/views/pages/setting/font_setting.dart b/lib/app/views/setting/font_setting.dart similarity index 93% rename from lib/views/pages/setting/font_setting.dart rename to lib/app/views/setting/font_setting.dart index bf19fd9..27eb5f7 100644 --- a/lib/views/pages/setting/font_setting.dart +++ b/lib/app/views/setting/font_setting.dart @@ -2,7 +2,9 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_unit/app/res/cons.dart'; -import 'package:flutter_unit/blocs/bloc_exp.dart'; +import 'package:flutter_unit/app/blocs/global/global_bloc.dart'; +import 'package:flutter_unit/app/blocs/global/global_event.dart'; +import 'package:flutter_unit/app/blocs/global/global_state.dart'; import 'package:flutter_unit/views/components/permanent/feedback_widget.dart'; import 'package:flutter_unit/views/components/permanent/circle.dart'; diff --git a/lib/views/pages/setting/item_style_setting.dart b/lib/app/views/setting/item_style_setting.dart similarity index 90% rename from lib/views/pages/setting/item_style_setting.dart rename to lib/app/views/setting/item_style_setting.dart index baed895..72c8625 100644 --- a/lib/views/pages/setting/item_style_setting.dart +++ b/lib/app/views/setting/item_style_setting.dart @@ -1,6 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:flutter_unit/blocs/bloc_exp.dart'; +import 'package:flutter_unit/app/blocs/global/global_bloc.dart'; +import 'package:flutter_unit/app/blocs/global/global_event.dart'; +import 'package:flutter_unit/app/blocs/global/global_state.dart'; import 'package:flutter_unit/views/components/permanent/feedback_widget.dart'; import 'package:flutter_unit/views/components/permanent/circle.dart'; import 'package:flutter_unit/views/components/project/items/widget/home_item_support.dart'; diff --git a/lib/views/pages/setting/setting_page.dart b/lib/app/views/setting/setting_page.dart similarity index 94% rename from lib/views/pages/setting/setting_page.dart rename to lib/app/views/setting/setting_page.dart index 062e023..bcd401a 100644 --- a/lib/views/pages/setting/setting_page.dart +++ b/lib/app/views/setting/setting_page.dart @@ -2,7 +2,9 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_unit/app/router/unit_router.dart'; import 'package:flutter_unit/app/res/toly_icon.dart'; -import 'package:flutter_unit/blocs/bloc_exp.dart'; +import 'package:flutter_unit/app/blocs/global/global_bloc.dart'; +import 'package:flutter_unit/app/blocs/global/global_event.dart'; +import 'package:flutter_unit/app/blocs/global/global_state.dart'; class SettingPage extends StatelessWidget { @override diff --git a/lib/views/pages/setting/theme_color_setting.dart b/lib/app/views/setting/theme_color_setting.dart similarity index 94% rename from lib/views/pages/setting/theme_color_setting.dart rename to lib/app/views/setting/theme_color_setting.dart index af39661..494e1bc 100644 --- a/lib/views/pages/setting/theme_color_setting.dart +++ b/lib/app/views/setting/theme_color_setting.dart @@ -1,7 +1,9 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_unit/app/res/cons.dart'; -import 'package:flutter_unit/blocs/bloc_exp.dart'; +import 'package:flutter_unit/app/blocs/global/global_bloc.dart'; +import 'package:flutter_unit/app/blocs/global/global_event.dart'; +import 'package:flutter_unit/app/blocs/global/global_state.dart'; import 'package:flutter_unit/views/components/permanent/feedback_widget.dart'; import 'package:flutter_unit/views/components/permanent/circle.dart'; diff --git a/lib/views/pages/splash/flutter_unit_text.dart b/lib/app/views/splash/flutter_unit_text.dart similarity index 100% rename from lib/views/pages/splash/flutter_unit_text.dart rename to lib/app/views/splash/flutter_unit_text.dart diff --git a/lib/views/pages/splash/splash_bottom.dart b/lib/app/views/splash/splash_bottom.dart similarity index 100% rename from lib/views/pages/splash/splash_bottom.dart rename to lib/app/views/splash/splash_bottom.dart diff --git a/lib/views/pages/splash/unit_paint.dart b/lib/app/views/splash/unit_paint.dart similarity index 100% rename from lib/views/pages/splash/unit_paint.dart rename to lib/app/views/splash/unit_paint.dart diff --git a/lib/views/pages/splash/unit_splash.dart b/lib/app/views/splash/unit_splash.dart similarity index 92% rename from lib/views/pages/splash/unit_splash.dart rename to lib/app/views/splash/unit_splash.dart index f883623..2a6a1e1 100644 --- a/lib/views/pages/splash/unit_splash.dart +++ b/lib/app/views/splash/unit_splash.dart @@ -4,11 +4,11 @@ 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 'package:flutter_unit/widget_system/widget_home/bloc/widgets_bloc.dart'; -import 'package:flutter_unit/widget_system/widget_home/bloc/widgets_event.dart'; +import 'package:flutter_unit/widget_system/repositories/model/enums.dart'; +import 'package:flutter_unit/app/views/splash/splash_bottom.dart'; +import 'package:flutter_unit/widget_system/blocs/widget_system_bloc.dart'; +import 'package:flutter_unit/app/blocs/global/global_bloc.dart'; +import 'package:flutter_unit/app/blocs/global/global_state.dart'; import 'flutter_unit_text.dart'; import 'unit_paint.dart'; diff --git a/lib/views/pages/unit_todo/attr_unit_page.dart b/lib/app/views/unit_todo/attr_unit_page.dart similarity index 100% rename from lib/views/pages/unit_todo/attr_unit_page.dart rename to lib/app/views/unit_todo/attr_unit_page.dart diff --git a/lib/views/pages/unit_todo/layout_unit_page.dart b/lib/app/views/unit_todo/layout_unit_page.dart similarity index 100% rename from lib/views/pages/unit_todo/layout_unit_page.dart rename to lib/app/views/unit_todo/layout_unit_page.dart diff --git a/lib/views/pages/unit_todo/paint_unit_page.dart b/lib/app/views/unit_todo/paint_unit_page.dart similarity index 100% rename from lib/views/pages/unit_todo/paint_unit_page.dart rename to lib/app/views/unit_todo/paint_unit_page.dart diff --git a/lib/views/pages/unit_todo/point_unit_page.dart b/lib/app/views/unit_todo/point_unit_page.dart similarity index 100% rename from lib/views/pages/unit_todo/point_unit_page.dart rename to lib/app/views/unit_todo/point_unit_page.dart diff --git a/lib/blocs/bloc_exp.dart b/lib/blocs/bloc_exp.dart deleted file mode 100644 index 7dc4858..0000000 --- a/lib/blocs/bloc_exp.dart +++ /dev/null @@ -1,35 +0,0 @@ -/// create by 张风捷特烈 on 2020/4/28 -/// contact me by email 1981462002@qq.com -/// 说明: - -library bloc_unit; - -export 'category/category_bloc.dart'; -export 'category/category_state.dart'; -export 'category/category_event.dart'; - -export 'category_widget/category_widget_bloc.dart'; -export 'category_widget/category_widget_state.dart'; -export 'category_widget/category_widget_event.dart'; - -export 'like/like_bloc.dart'; -export 'like/like_state.dart'; -export 'like/like_event.dart'; - - -export 'global/global_bloc.dart'; -export 'global/global_state.dart'; -export 'global/global_event.dart'; - -export 'point/point_bloc.dart'; -export 'point/point_state.dart'; -export 'point/point_event.dart'; - - -export 'point_comment/point_comment_bloc.dart'; -export 'point_comment/point_comment_state.dart'; -export 'point_comment/point_comment_event.dart'; - -export 'search/search_bloc.dart'; -export 'search/search_state.dart'; -export 'search/search_event.dart'; \ No newline at end of file diff --git a/lib/main.dart b/lib/main.dart index 038b40e..558ffa9 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,8 +1,9 @@ import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; -import 'views/navigation/bloc_wrapper.dart'; -import 'views/navigation/flutter_unit.dart'; +import 'app/views/navigation/bloc_wrapper.dart'; +import 'app/views/navigation/flutter_unit.dart'; + void main() { WidgetsFlutterBinding.ensureInitialized(); diff --git a/lib/model/github/g/github_user.g.dart b/lib/model/github/g/github_user.g.dart deleted file mode 100644 index 4c1bd8c..0000000 --- a/lib/model/github/g/github_user.g.dart +++ /dev/null @@ -1,93 +0,0 @@ -// GENERATED CODE - DO NOT MODIFY BY HAND - -part of '../github_user.dart'; - -// ************************************************************************** -// JsonSerializableGenerator -// ************************************************************************** - -GithubUser _$UserFromJson(Map json) { - return GithubUser( - json['login'] as String?, - json['id'] as int?, - json['node_id'] as String?, - json['avatar_url'] as String?, - json['gravatar_id'] as String?, - json['url'] as String?, - json['html_url'] as String?, - json['followers_url'] as String?, - json['following_url'] as String?, - json['gists_url'] as String?, - json['starred_url'] as String?, - json['subscriptions_url'] as String?, - json['organizations_url'] as String?, - json['repos_url'] as String?, - json['events_url'] as String?, - json['received_events_url'] as String?, - json['type'] as String?, - json['site_admin'] as bool?, - json['name'] as String?, - json['company'] as String?, - json['blog'] as String?, - json['location'] as String?, - json['email'] as String?, - json['starred'] as String?, - json['bio'] as String?, - json['public_repos'] as int?, - json['public_gists'] as int?, - json['followers'] as int?, - json['following'] as int?, - json['created_at'] == null - ? null - : DateTime.parse(json['created_at'] as String), - json['updated_at'] == null - ? null - : DateTime.parse(json['updated_at'] as String), - json['private_gists'] as int?, - json['total_private_repos'] as int?, - json['owned_private_repos'] as int?, - json['disk_usage'] as int?, - json['collaborators'] as int?, - json['two_factor_authentication'] as bool?, - ); -} - -Map _$UserToJson(GithubUser instance) => { - 'login': instance.login, - 'id': instance.id, - 'node_id': instance.nodeId, - 'avatar_url': instance.avatarUrl, - 'gravatar_id': instance.gravatarId, - 'url': instance.url, - 'html_url': instance.htmlUrl, - 'followers_url': instance.followersUrl, - 'following_url': instance.followingUrl, - 'gists_url': instance.gistsUrl, - 'starred_url': instance.starredUrl, - 'subscriptions_url': instance.subscriptionsUrl, - 'organizations_url': instance.organizationsUrl, - 'repos_url': instance.reposUrl, - 'events_url': instance.eventsUrl, - 'received_events_url': instance.receivedEventsUrl, - 'type': instance.type, - 'site_admin': instance.siteAdmin, - 'name': instance.name, - 'company': instance.company, - 'blog': instance.blog, - 'location': instance.location, - 'email': instance.email, - 'starred': instance.starred, - 'bio': instance.bio, - 'public_repos': instance.publicRepos, - 'public_gists': instance.publicGists, - 'followers': instance.followers, - 'following': instance.following, - 'created_at': instance.createdAt?.toIso8601String(), - 'updated_at': instance.updatedAt?.toIso8601String(), - 'private_gists': instance.privateGists, - 'total_private_repos': instance.totalPrivateRepos, - 'owned_private_repos': instance.ownedPrivateRepos, - 'disk_usage': instance.diskUsage, - 'collaborators': instance.collaborators, - 'two_factor_authentication': instance.twoFactorAuthentication, -}; diff --git a/lib/model/github/g/issue.g.dart b/lib/model/github/g/issue.g.dart deleted file mode 100644 index a22583a..0000000 --- a/lib/model/github/g/issue.g.dart +++ /dev/null @@ -1,55 +0,0 @@ -// GENERATED CODE - DO NOT MODIFY BY HAND - -part of '../issue.dart'; - -// ************************************************************************** -// JsonSerializableGenerator -// ************************************************************************** - -Issue _$IssueFromJson(dynamic json) { - return Issue( - json['id'] as int?, - json['number'] as int?, - json['title'] as String?, - json['state'] as String?, - json['locked'] as bool?, - json['comments'] as int?, - json['created_at'] == null - ? null - : DateTime.parse(json['created_at'] as String), - json['updated_at'] == null - ? null - : DateTime.parse(json['updated_at'] as String), - json['closed_at'] == null - ? null - : DateTime.parse(json['closed_at'] as String), - json['body'] as String?, - json['body_html'] as String?, - json['user'] == null - ? null - : GithubUser.fromJson(json['user'] as Map), - json['repository_url'] as String?, - json['html_url'] as String?, - json['closed_by'] == null - ? null - : GithubUser.fromJson(json['closed_by'] as Map), - ); -} - -Map _$IssueToJson(Issue instance) => { - 'id': instance.id, - 'number': instance.number, - 'title': instance.title, - 'state': instance.state, - 'locked': instance.locked, - 'comments': instance.commentNum, - 'created_at': instance.createdAt?.toIso8601String(), - 'updated_at': instance.updatedAt?.toIso8601String(), - 'closed_at': instance.closedAt?.toIso8601String(), - 'body': instance.body, - 'body_html': instance.bodyHtml, - 'user': instance.user, - 'repository_url': instance.repoUrl, - 'html_url': instance.htmlUrl, - 'closed_by': instance.closeBy, - }; diff --git a/lib/model/github/g/issue_comment.g.dart b/lib/model/github/g/issue_comment.g.dart deleted file mode 100644 index 0050ac1..0000000 --- a/lib/model/github/g/issue_comment.g.dart +++ /dev/null @@ -1,40 +0,0 @@ -// GENERATED CODE - DO NOT MODIFY BY HAND - -part of '../issue_comment.dart'; - -// ************************************************************************** -// JsonSerializableGenerator -// ************************************************************************** - -IssueComment _$IssueEventFromJson(Map json) { - return IssueComment( - json['id'] as int?, - json['user'] == null - ? null - : GithubUser.fromJson(json['user'] as Map), - json['created_at'] == null - ? null - : DateTime.parse(json['created_at'] as String), - json['updated_at'] == null - ? null - : DateTime.parse(json['updated_at'] as String), - json['author_association'] as String?, - json['body'] as String?, - json['body_html'] as String?, - json['event'] as String?, - json['html_url'] as String?, - ); -} - -Map _$IssueEventToJson(IssueComment instance) => - { - 'id': instance.id, - 'user': instance.user, - 'created_at': instance.createdAt?.toIso8601String(), - 'updated_at': instance.updatedAt?.toIso8601String(), - 'author_association': instance.authorAssociation, - 'body': instance.body, - 'body_html': instance.bodyHtml, - 'event': instance.type, - 'html_url': instance.htmlUrl, - }; diff --git a/lib/model/github/g/license.g.dart b/lib/model/github/g/license.g.dart deleted file mode 100644 index baa97dd..0000000 --- a/lib/model/github/g/license.g.dart +++ /dev/null @@ -1,19 +0,0 @@ -// GENERATED CODE - DO NOT MODIFY BY HAND - -part of '../license.dart'; - -// ************************************************************************** -// JsonSerializableGenerator -// ************************************************************************** - -License _$LicenseFromJson(Map json) { - return License( - json['name'] as String?, - json['spdx_id'] as String?, - ); -} - -Map _$LicenseToJson(License instance) => { - 'name': instance.name, - 'spdx_id': instance.spdxId, - }; diff --git a/lib/model/github/g/repository.g.dart b/lib/model/github/g/repository.g.dart deleted file mode 100644 index 5c60285..0000000 --- a/lib/model/github/g/repository.g.dart +++ /dev/null @@ -1,96 +0,0 @@ -// GENERATED CODE - DO NOT MODIFY BY HAND - -part of '../repository.dart'; - -// ************************************************************************** -// JsonSerializableGenerator -// ************************************************************************** - -Repository _$RepositoryFromJson(Map json) { - return Repository( - json['id'] as int?, - json['size'] as int?, - json['name'] as String?, - json['full_name'] as String?, - json['html_url'] as String?, - json['description'] as String?, - json['language'] as String?, - json['license'] == null - ? null - : License.fromJson(json['license'] as Map), - json['default_branch'] as String?, - json['created_at'] == null - ? null - : DateTime.parse(json['created_at'] as String), - json['updated_at'] == null - ? null - : DateTime.parse(json['updated_at'] as String), - json['pushed_at'] == null - ? null - : DateTime.parse(json['pushed_at'] as String), - json['git_url'] as String?, - json['ssh_url'] as String?, - json['clone_url'] as String?, - json['svn_url'] as String?, - json['stargazers_count'] as int?, - json['watchers_count'] as int?, - json['forks_count'] as int?, - json['open_issues_count'] as int?, - json['subscribers_count'] as int?, - json['private'] as bool?, - json['fork'] as bool?, - json['has_issues'] as bool?, - json['has_projects'] as bool?, - json['has_downloads'] as bool?, - json['has_wiki'] as bool?, - json['has_pages'] as bool?, - json['owner'] == null - ? null - : GithubUser.fromJson(json['owner'] as Map), - json['parent'] == null - ? null - : Repository.fromJson(json['parent'] as Map), - json['permissions'] == null - ? null - : RepositoryPermissions.fromJson( - json['permissions'] as Map), - (json['topics'] as List?)?.map((e) => e as String).toList(), - )..allIssueCount = json['allIssueCount'] as int?; -} - -Map _$RepositoryToJson(Repository instance) => - { - 'id': instance.id, - 'size': instance.size, - 'name': instance.name, - 'full_name': instance.fullName, - 'html_url': instance.htmlUrl, - 'description': instance.description, - 'language': instance.language, - 'default_branch': instance.defaultBranch, - 'created_at': instance.createdAt?.toIso8601String(), - 'updated_at': instance.updatedAt?.toIso8601String(), - 'pushed_at': instance.pushedAt?.toIso8601String(), - 'git_url': instance.gitUrl, - 'ssh_url': instance.sshUrl, - 'clone_url': instance.cloneUrl, - 'svn_url': instance.svnUrl, - 'stargazers_count': instance.stargazersCount, - 'watchers_count': instance.watchersCount, - 'forks_count': instance.forksCount, - 'open_issues_count': instance.openIssuesCount, - 'subscribers_count': instance.subscribersCount, - 'private': instance.private, - 'fork': instance.fork, - 'has_issues': instance.hasIssues, - 'has_projects': instance.hasProjects, - 'has_downloads': instance.hasDownloads, - 'has_wiki': instance.hasWiki, - 'has_pages': instance.hasPages, - 'owner': instance.owner, - 'license': instance.license, - 'parent': instance.parent, - 'permissions': instance.permissions, - 'topics': instance.topics, - 'allIssueCount': instance.allIssueCount, - }; diff --git a/lib/model/github/g/repository_permissions.g.dart b/lib/model/github/g/repository_permissions.g.dart deleted file mode 100644 index 201c8fb..0000000 --- a/lib/model/github/g/repository_permissions.g.dart +++ /dev/null @@ -1,24 +0,0 @@ -// GENERATED CODE - DO NOT MODIFY BY HAND - -part of '../repository_permissions.dart'; - -// ************************************************************************** -// JsonSerializableGenerator -// ************************************************************************** - -RepositoryPermissions _$RepositoryPermissionsFromJson( - Map json) { - return RepositoryPermissions( - json['admin'] as bool?, - json['push'] as bool?, - json['pull'] as bool?, - ); -} - -Map _$RepositoryPermissionsToJson( - RepositoryPermissions instance) => - { - 'admin': instance.admin, - 'push': instance.push, - 'pull': instance.pull, - }; diff --git a/lib/model/github/github_user.dart b/lib/model/github/github_user.dart deleted file mode 100644 index dce5c30..0000000 --- a/lib/model/github/github_user.dart +++ /dev/null @@ -1,94 +0,0 @@ -/// create by 张风捷特烈 on 2020/6/17 -/// contact me by email 1981462002@qq.com -/// 说明: - -part 'g/github_user.g.dart'; - -class GithubUser { - GithubUser( - this.login, - this.id, - this.nodeId, - this.avatarUrl, - this.gravatarId, - this.url, - this.htmlUrl, - this.followersUrl, - this.followingUrl, - this.gistsUrl, - this.starredUrl, - this.subscriptionsUrl, - this.organizationsUrl, - this.reposUrl, - this.eventsUrl, - this.receivedEventsUrl, - this.type, - this.siteAdmin, - this.name, - this.company, - this.blog, - this.location, - this.email, - this.starred, - this.bio, - this.publicRepos, - this.publicGists, - this.followers, - this.following, - this.createdAt, - this.updatedAt, - this.privateGists, - this.totalPrivateRepos, - this.ownedPrivateRepos, - this.diskUsage, - this.collaborators, - this.twoFactorAuthentication); - - String? login; - int? id; - String? nodeId; - String? avatarUrl; - String? gravatarId; - String? url; - String? htmlUrl; - String? followersUrl; - String? followingUrl; - String? gistsUrl; - String? starredUrl; - String? subscriptionsUrl; - String? organizationsUrl; - String? reposUrl; - String? eventsUrl; - String? receivedEventsUrl; - String? type; - bool? siteAdmin; - String? name; - String? company; - String? blog; - String? location; - String? email; - String? starred; - String? bio; - int? publicRepos; - int? publicGists; - int? followers; - int? following; - DateTime? createdAt; - DateTime? updatedAt; - int? privateGists; - int? totalPrivateRepos; - int? ownedPrivateRepos; - int? diskUsage; - int? collaborators; - bool? twoFactorAuthentication; - - - factory GithubUser.fromJson(Map json) => _$UserFromJson(json); - - - Map toJson() => _$UserToJson(this); - - // 命名构造函数 - GithubUser.empty(); - -} diff --git a/lib/model/github/issue.dart b/lib/model/github/issue.dart deleted file mode 100644 index bf10520..0000000 --- a/lib/model/github/issue.dart +++ /dev/null @@ -1,77 +0,0 @@ -import 'package:equatable/equatable.dart'; -import 'package:flutter_unit/model/github/github_user.dart'; - -part 'g/issue.g.dart'; - -class Issue extends Equatable { - final int? id; - final int? number; - final String? title; - final String? state; - final bool? locked; - - final int? commentNum; - - final DateTime? createdAt; - - final DateTime? updatedAt; - - final DateTime? closedAt; - final String? body; - - final String? bodyHtml; - - final GithubUser? user; - - final String? repoUrl; - - final String? htmlUrl; - - final GithubUser? closeBy; - - Issue( - this.id, - this.number, - this.title, - this.state, - this.locked, - this.commentNum, - this.createdAt, - this.updatedAt, - this.closedAt, - this.body, - this.bodyHtml, - this.user, - this.repoUrl, - this.htmlUrl, - this.closeBy, - ); - - static Issue fromJson(dynamic json) => _$IssueFromJson(json); - - Map toJson() => _$IssueToJson(this); - - @override - String toString() { - return 'Issue{id: $id, number: $number, title: $title, state: $state, locked: $locked, commentNum: $commentNum, createdAt: $createdAt, updatedAt: $updatedAt, closedAt: $closedAt, body: $body, bodyHtml: $bodyHtml, user: $user, repoUrl: $repoUrl, htmlUrl: $htmlUrl, closeBy: $closeBy}'; - } - - @override - List get props => [ - id, - number, - title, - state, - locked, - commentNum, - createdAt, - updatedAt, - closedAt, - body, - bodyHtml, - user, - repoUrl, - htmlUrl, - closeBy, - ]; -} diff --git a/lib/model/github/issue_comment.dart b/lib/model/github/issue_comment.dart deleted file mode 100644 index 821cbe3..0000000 --- a/lib/model/github/issue_comment.dart +++ /dev/null @@ -1,36 +0,0 @@ -import 'package:flutter_unit/model/github/github_user.dart'; - -part 'g/issue_comment.g.dart'; - - -class IssueComment{ - int? id; - GithubUser? user; - - DateTime? createdAt; - - DateTime? updatedAt; - - String? authorAssociation; - String? body; - - String? bodyHtml; - String? type; - String? htmlUrl; - - IssueComment( - this.id, - this.user, - this.createdAt, - this.updatedAt, - this.authorAssociation, - this.body, - this.bodyHtml, - this.type, - this.htmlUrl, - ); - - factory IssueComment.fromJson(Map json) => _$IssueEventFromJson(json); - - Map toJson() => _$IssueEventToJson(this); -} diff --git a/lib/model/github/license.dart b/lib/model/github/license.dart deleted file mode 100644 index e793788..0000000 --- a/lib/model/github/license.dart +++ /dev/null @@ -1,19 +0,0 @@ - -part 'g/license.g.dart'; - -class License { - - String? name; - String? spdxId; - - License(this.name,this.spdxId); - - String get type { - return spdxId ==null?"未知":spdxId!; - } - - - factory License.fromJson(Map json) => _$LicenseFromJson(json); - - Map toJson() => _$LicenseToJson(this); -} diff --git a/lib/model/github/repository.dart b/lib/model/github/repository.dart deleted file mode 100644 index 98c96e1..0000000 --- a/lib/model/github/repository.dart +++ /dev/null @@ -1,137 +0,0 @@ - - -import 'package:flutter_unit/model/github/github_user.dart'; - -import 'license.dart'; -import 'repository_permissions.dart'; - -part 'g/repository.g.dart'; - -class Repository { - int? id; - - int? size; - - String? name; - - String? fullName; - - - String? htmlUrl; - - String? description; - - String? language; - - - String? defaultBranch; - - - DateTime? createdAt; - - - DateTime? updatedAt; - - DateTime? pushedAt; - - - String? gitUrl; - - - String? sshUrl; - - - String? cloneUrl; - - - String? svnUrl; - - - int? stargazersCount; - - - int? watchersCount; - - - int? forksCount; - - - int? openIssuesCount; - - - int? subscribersCount; - - - bool? private; - - bool? fork; - - bool? hasIssues; - - bool? hasProjects; - - bool? hasDownloads; - - bool? hasWiki; - - bool? hasPages; - - GithubUser? owner; - - License? license; - - Repository? parent; - - RepositoryPermissions? permissions; - - List? topics; - - int? allIssueCount; - - Repository( - this.id, - this.size, - this.name, - this.fullName, - this.htmlUrl, - this.description, - this.language, - this.license, - this.defaultBranch, - this.createdAt, - this.updatedAt, - this.pushedAt, - this.gitUrl, - this.sshUrl, - this.cloneUrl, - this.svnUrl, - this.stargazersCount, - this.watchersCount, - this.forksCount, - this.openIssuesCount, - this.subscribersCount, - this.private, - this.fork, - this.hasIssues, - this.hasProjects, - this.hasDownloads, - this.hasWiki, - this.hasPages, - this.owner, - this.parent, - this.permissions, - this.topics, - ); - - factory Repository.fromJson(Map json) => _$RepositoryFromJson(json); - - - @override - String toString() { - return 'Repository{id: $id, size: $size, name: $name, fullName: $fullName, htmlUrl: $htmlUrl, description: $description, language: $language, defaultBranch: $defaultBranch, createdAt: $createdAt, updatedAt: $updatedAt, pushedAt: $pushedAt, gitUrl: $gitUrl, sshUrl: $sshUrl, cloneUrl: $cloneUrl, svnUrl: $svnUrl, stargazersCount: $stargazersCount, watchersCount: $watchersCount, forksCount: $forksCount, openIssuesCount: $openIssuesCount, subscribersCount: $subscribersCount, private: $private, fork: $fork, hasIssues: $hasIssues, hasProjects: $hasProjects, hasDownloads: $hasDownloads, hasWiki: $hasWiki, hasPages: $hasPages, owner: $owner, license: $license, parent: $parent, permissions: $permissions, topics: $topics, allIssueCount: $allIssueCount}'; - } - - Map toJson() => _$RepositoryToJson(this); - - Repository.empty(); -} diff --git a/lib/model/github/repository_permissions.dart b/lib/model/github/repository_permissions.dart deleted file mode 100644 index f6b3896..0000000 --- a/lib/model/github/repository_permissions.dart +++ /dev/null @@ -1,18 +0,0 @@ - - -part 'g/repository_permissions.g.dart'; - -class RepositoryPermissions { - bool? admin; - bool? push; - bool? pull; - - RepositoryPermissions( - this.admin, - this.push, - this.pull, - ); - - factory RepositoryPermissions.fromJson(Map json) => _$RepositoryPermissionsFromJson(json); - Map toJson() => _$RepositoryPermissionsToJson(this); -} diff --git a/lib/painter_system/gallery_unit.dart b/lib/painter_system/gallery_unit.dart index 7aebf93..3ab8461 100644 --- a/lib/painter_system/gallery_unit.dart +++ b/lib/painter_system/gallery_unit.dart @@ -3,11 +3,11 @@ import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_unit/app/res/str_unit.dart'; -import 'package:flutter_unit/blocs/bloc_exp.dart'; + import 'package:flutter_unit/views/components/permanent/feedback_widget.dart'; import 'package:flutter_unit/views/components/project/items/gallery/gallery_card_item.dart'; import 'package:flutter_unit/painter_system/gallery_factory.dart'; -import 'package:flutter_unit/views/navigation/color_change_bloc.dart'; +import 'package:flutter_unit/app/blocs/color_change_bloc.dart'; import 'gallery_detail_page.dart'; diff --git a/lib/app/api/app_info.dart b/lib/point_system/api/app_info.dart similarity index 100% rename from lib/app/api/app_info.dart rename to lib/point_system/api/app_info.dart diff --git a/lib/app/api/category_api.dart b/lib/point_system/api/category_api.dart similarity index 100% rename from lib/app/api/category_api.dart rename to lib/point_system/api/category_api.dart diff --git a/lib/app/api/issues_api.dart b/lib/point_system/api/issues_api.dart similarity index 82% rename from lib/app/api/issues_api.dart rename to lib/point_system/api/issues_api.dart index 4127ab8..63d4650 100644 --- a/lib/app/api/issues_api.dart +++ b/lib/point_system/api/issues_api.dart @@ -1,9 +1,8 @@ import 'dart:convert'; import 'package:dio/dio.dart'; -import 'package:flutter_unit/model/github/issue_comment.dart'; -import 'package:flutter_unit/model/github/issue.dart'; -import 'package:flutter_unit/model/github/repository.dart'; +import 'package:flutter_unit/point_system/github_model/github_model.dart'; + /// create by 张风捷特烈 on 2020/6/17 /// contact me by email 1981462002@qq.com @@ -22,7 +21,7 @@ class IssuesApi { static Future> getIssues( {int page = 1, int pageSize = 100}) async { - List res = (await dio.get('/point', + List res = (await dio.get('/point_bloc', queryParameters: {"page": page, "pageSize": pageSize})) .data['data'] as List; return res.map((e) => Issue.fromJson(json.decode(e['pointData']))).toList(); diff --git a/lib/blocs/point/point_bloc.dart b/lib/point_system/blocs/point_bloc/point_bloc.dart similarity index 85% rename from lib/blocs/point/point_bloc.dart rename to lib/point_system/blocs/point_bloc/point_bloc.dart index b1a6516..e001596 100644 --- a/lib/blocs/point/point_bloc.dart +++ b/lib/point_system/blocs/point_bloc/point_bloc.dart @@ -1,10 +1,9 @@ import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:flutter_unit/app/api/issues_api.dart'; -import 'package:flutter_unit/blocs/point/point_state.dart'; - +import 'package:flutter_unit/point_system/api/issues_api.dart'; import 'point_event.dart'; +import 'point_state.dart'; /// create by 张风捷特烈 on 2020-09-03 diff --git a/lib/blocs/point/point_event.dart b/lib/point_system/blocs/point_bloc/point_event.dart similarity index 100% rename from lib/blocs/point/point_event.dart rename to lib/point_system/blocs/point_bloc/point_event.dart diff --git a/lib/blocs/point/point_state.dart b/lib/point_system/blocs/point_bloc/point_state.dart similarity index 88% rename from lib/blocs/point/point_state.dart rename to lib/point_system/blocs/point_bloc/point_state.dart index c3da3d2..43b8dc9 100644 --- a/lib/blocs/point/point_state.dart +++ b/lib/point_system/blocs/point_bloc/point_state.dart @@ -1,5 +1,6 @@ import 'package:equatable/equatable.dart'; -import 'package:flutter_unit/model/github/issue.dart'; +import 'package:flutter_unit/point_system/github_model/github_model.dart'; + /// create by 张风捷特烈 on 2020/9/3 /// contact me by email 1981462002@qq.com diff --git a/lib/blocs/point_comment/point_comment_bloc.dart b/lib/point_system/blocs/point_comment_bloc/point_comment_bloc.dart similarity index 83% rename from lib/blocs/point_comment/point_comment_bloc.dart rename to lib/point_system/blocs/point_comment_bloc/point_comment_bloc.dart index 3274d7d..96a5e53 100644 --- a/lib/blocs/point_comment/point_comment_bloc.dart +++ b/lib/point_system/blocs/point_comment_bloc/point_comment_bloc.dart @@ -1,7 +1,8 @@ import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:flutter_unit/app/api/issues_api.dart'; -import 'package:flutter_unit/model/github/issue_comment.dart'; +import 'package:flutter_unit/point_system/api/issues_api.dart'; +import 'package:flutter_unit/point_system/github_model/github_model.dart'; + import 'point_comment_event.dart'; @@ -28,7 +29,7 @@ class PointCommentBloc extends Bloc { Stream _mapLoadWidgetToState(EventLoadPointComment event) async* { yield PointCommentLoading(event.point); if(event.point.number==null){ - yield PointCommentLoadFailure('point id 为空'); + yield PointCommentLoadFailure('point_bloc id 为空'); } try { final List comments = await IssuesApi.getIssuesComment(event.point.number!); diff --git a/lib/blocs/point_comment/point_comment_event.dart b/lib/point_system/blocs/point_comment_bloc/point_comment_event.dart similarity index 82% rename from lib/blocs/point_comment/point_comment_event.dart rename to lib/point_system/blocs/point_comment_bloc/point_comment_event.dart index 3dfc044..15da9ed 100644 --- a/lib/blocs/point_comment/point_comment_event.dart +++ b/lib/point_system/blocs/point_comment_bloc/point_comment_event.dart @@ -1,7 +1,7 @@ import 'package:equatable/equatable.dart'; -import 'package:flutter_unit/model/github/issue.dart'; +import 'package:flutter_unit/point_system/github_model/github_model.dart'; /// create by 张风捷特烈 on 2020/9/3 /// contact me by email 1981462002@qq.com diff --git a/lib/blocs/point_comment/point_comment_state.dart b/lib/point_system/blocs/point_comment_bloc/point_comment_state.dart similarity index 89% rename from lib/blocs/point_comment/point_comment_state.dart rename to lib/point_system/blocs/point_comment_bloc/point_comment_state.dart index 0edcedb..1b53df4 100644 --- a/lib/blocs/point_comment/point_comment_state.dart +++ b/lib/point_system/blocs/point_comment_bloc/point_comment_state.dart @@ -1,6 +1,6 @@ import 'package:equatable/equatable.dart'; -import 'package:flutter_unit/model/github/issue_comment.dart'; -import 'package:flutter_unit/model/github/issue.dart'; +import 'package:flutter_unit/point_system/github_model/github_model.dart'; + /// create by 张风捷特烈 on 2020/9/3 /// contact me by email 1981462002@qq.com diff --git a/lib/point_system/blocs/point_system_bloc.dart b/lib/point_system/blocs/point_system_bloc.dart new file mode 100644 index 0000000..e9642c7 --- /dev/null +++ b/lib/point_system/blocs/point_system_bloc.dart @@ -0,0 +1,9 @@ +export './point_comment_bloc/point_comment_bloc.dart'; +export './point_comment_bloc/point_comment_event.dart'; +export './point_comment_bloc/point_comment_state.dart'; + +export './point_bloc/point_bloc.dart'; +export './point_bloc/point_event.dart'; +export './point_bloc/point_state.dart'; + + diff --git a/lib/point_system/github_model/github_model.dart b/lib/point_system/github_model/github_model.dart new file mode 100644 index 0000000..0d4bd5e --- /dev/null +++ b/lib/point_system/github_model/github_model.dart @@ -0,0 +1,6 @@ +export './github_user.dart'; +export './issue.dart'; +export './issue_comment.dart'; +export './license.dart'; +export './repository.dart'; +export './repository_permissions.dart'; diff --git a/lib/point_system/github_model/github_user.dart b/lib/point_system/github_model/github_user.dart new file mode 100644 index 0000000..56b7739 --- /dev/null +++ b/lib/point_system/github_model/github_user.dart @@ -0,0 +1,172 @@ +/// create by 张风捷特烈 on 2020/6/17 +/// contact me by email 1981462002@qq.com +/// 说明: + +class GithubUser { + GithubUser( + this.login, + this.id, + this.nodeId, + this.avatarUrl, + this.gravatarId, + this.url, + this.htmlUrl, + this.followersUrl, + this.followingUrl, + this.gistsUrl, + this.starredUrl, + this.subscriptionsUrl, + this.organizationsUrl, + this.reposUrl, + this.eventsUrl, + this.receivedEventsUrl, + this.type, + this.siteAdmin, + this.name, + this.company, + this.blog, + this.location, + this.email, + this.starred, + this.bio, + this.publicRepos, + this.publicGists, + this.followers, + this.following, + this.createdAt, + this.updatedAt, + this.privateGists, + this.totalPrivateRepos, + this.ownedPrivateRepos, + this.diskUsage, + this.collaborators, + this.twoFactorAuthentication); + + String? login; + int? id; + String? nodeId; + String? avatarUrl; + String? gravatarId; + String? url; + String? htmlUrl; + String? followersUrl; + String? followingUrl; + String? gistsUrl; + String? starredUrl; + String? subscriptionsUrl; + String? organizationsUrl; + String? reposUrl; + String? eventsUrl; + String? receivedEventsUrl; + String? type; + bool? siteAdmin; + String? name; + String? company; + String? blog; + String? location; + String? email; + String? starred; + String? bio; + int? publicRepos; + int? publicGists; + int? followers; + int? following; + DateTime? createdAt; + DateTime? updatedAt; + int? privateGists; + int? totalPrivateRepos; + int? ownedPrivateRepos; + int? diskUsage; + int? collaborators; + bool? twoFactorAuthentication; + + + factory GithubUser.fromJson(Map json) => GithubUser( + json['login'] as String?, + json['id'] as int?, + json['node_id'] as String?, + json['avatar_url'] as String?, + json['gravatar_id'] as String?, + json['url'] as String?, + json['html_url'] as String?, + json['followers_url'] as String?, + json['following_url'] as String?, + json['gists_url'] as String?, + json['starred_url'] as String?, + json['subscriptions_url'] as String?, + json['organizations_url'] as String?, + json['repos_url'] as String?, + json['events_url'] as String?, + json['received_events_url'] as String?, + json['type'] as String?, + json['site_admin'] as bool?, + json['name'] as String?, + json['company'] as String?, + json['blog'] as String?, + json['location'] as String?, + json['email'] as String?, + json['starred'] as String?, + json['bio'] as String?, + json['public_repos'] as int?, + json['public_gists'] as int?, + json['followers'] as int?, + json['following'] as int?, + json['created_at'] == null + ? null + : DateTime.parse(json['created_at'] as String), + json['updated_at'] == null + ? null + : DateTime.parse(json['updated_at'] as String), + json['private_gists'] as int?, + json['total_private_repos'] as int?, + json['owned_private_repos'] as int?, + json['disk_usage'] as int?, + json['collaborators'] as int?, + json['two_factor_authentication'] as bool?, + ); + + + Map toJson() => { + 'login': login, + 'id': id, + 'node_id': nodeId, + 'avatar_url': avatarUrl, + 'gravatar_id': gravatarId, + 'url': url, + 'html_url': htmlUrl, + 'followers_url': followersUrl, + 'following_url': followingUrl, + 'gists_url': gistsUrl, + 'starred_url': starredUrl, + 'subscriptions_url': subscriptionsUrl, + 'organizations_url': organizationsUrl, + 'repos_url': reposUrl, + 'events_url': eventsUrl, + 'received_events_url': receivedEventsUrl, + 'type': type, + 'site_admin': siteAdmin, + 'name': name, + 'company': company, + 'blog': blog, + 'location': location, + 'email': email, + 'starred': starred, + 'bio': bio, + 'public_repos': publicRepos, + 'public_gists': publicGists, + 'followers': followers, + 'following': following, + 'created_at': createdAt?.toIso8601String(), + 'updated_at': updatedAt?.toIso8601String(), + 'private_gists': privateGists, + 'total_private_repos': totalPrivateRepos, + 'owned_private_repos': ownedPrivateRepos, + 'disk_usage': diskUsage, + 'collaborators': collaborators, + 'two_factor_authentication': twoFactorAuthentication, + }; + + // 命名构造函数 + GithubUser.empty(); + +} diff --git a/lib/point_system/github_model/issue.dart b/lib/point_system/github_model/issue.dart new file mode 100644 index 0000000..1c5283f --- /dev/null +++ b/lib/point_system/github_model/issue.dart @@ -0,0 +1,117 @@ +import 'package:equatable/equatable.dart'; +import 'github_user.dart'; + +class Issue extends Equatable { + final int? id; + final int? number; + final String? title; + final String? state; + final bool? locked; + + final int? commentNum; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + final DateTime? closedAt; + final String? body; + + final String? bodyHtml; + + final GithubUser? user; + + final String? repoUrl; + + final String? htmlUrl; + + final GithubUser? closeBy; + + Issue( + this.id, + this.number, + this.title, + this.state, + this.locked, + this.commentNum, + this.createdAt, + this.updatedAt, + this.closedAt, + this.body, + this.bodyHtml, + this.user, + this.repoUrl, + this.htmlUrl, + this.closeBy, + ); + + static Issue fromJson(dynamic json) => Issue( + json['id'] as int?, + json['number'] as int?, + json['title'] as String?, + json['state'] as String?, + json['locked'] as bool?, + json['comments'] as int?, + json['created_at'] == null + ? null + : DateTime.parse(json['created_at'] as String), + json['updated_at'] == null + ? null + : DateTime.parse(json['updated_at'] as String), + json['closed_at'] == null + ? null + : DateTime.parse(json['closed_at'] as String), + json['body'] as String?, + json['body_html'] as String?, + json['user'] == null + ? null + : GithubUser.fromJson(json['user'] as Map), + json['repository_url'] as String?, + json['html_url'] as String?, + json['closed_by'] == null + ? null + : GithubUser.fromJson(json['closed_by'] as Map), + ); + + Map toJson() => { + 'id': id, + 'number': number, + 'title': title, + 'state': state, + 'locked': locked, + 'comments': commentNum, + 'created_at': createdAt?.toIso8601String(), + 'updated_at': updatedAt?.toIso8601String(), + 'closed_at': closedAt?.toIso8601String(), + 'body': body, + 'body_html': bodyHtml, + 'user': user, + 'repository_url': repoUrl, + 'html_url': htmlUrl, + 'closed_by': closeBy, + }; + + @override + String toString() { + return 'Issue{id: $id, number: $number, title: $title, state: $state, locked: $locked, commentNum: $commentNum, createdAt: $createdAt, updatedAt: $updatedAt, closedAt: $closedAt, body: $body, bodyHtml: $bodyHtml, user: $user, repoUrl: $repoUrl, htmlUrl: $htmlUrl, closeBy: $closeBy}'; + } + + @override + List get props => [ + id, + number, + title, + state, + locked, + commentNum, + createdAt, + updatedAt, + closedAt, + body, + bodyHtml, + user, + repoUrl, + htmlUrl, + closeBy, + ]; +} diff --git a/lib/point_system/github_model/issue_comment.dart b/lib/point_system/github_model/issue_comment.dart new file mode 100644 index 0000000..28a984e --- /dev/null +++ b/lib/point_system/github_model/issue_comment.dart @@ -0,0 +1,62 @@ + + + +import 'github_user.dart'; + +class IssueComment{ + int? id; + GithubUser? user; + + DateTime? createdAt; + + DateTime? updatedAt; + + String? authorAssociation; + String? body; + + String? bodyHtml; + String? type; + String? htmlUrl; + + IssueComment( + this.id, + this.user, + this.createdAt, + this.updatedAt, + this.authorAssociation, + this.body, + this.bodyHtml, + this.type, + this.htmlUrl, + ); + + factory IssueComment.fromJson(Map json) => IssueComment( + json['id'] as int?, + json['user'] == null + ? null + : GithubUser.fromJson(json['user'] as Map), + json['created_at'] == null + ? null + : DateTime.parse(json['created_at'] as String), + json['updated_at'] == null + ? null + : DateTime.parse(json['updated_at'] as String), + json['author_association'] as String?, + json['body'] as String?, + json['body_html'] as String?, + json['event'] as String?, + json['html_url'] as String?, + ); + + Map toJson() => { + 'id': id, + 'user': user, + 'created_at': createdAt?.toIso8601String(), + 'updated_at': updatedAt?.toIso8601String(), + 'author_association': authorAssociation, + 'body': body, + 'body_html': bodyHtml, + 'event': type, + 'html_url': htmlUrl, + }; +} diff --git a/lib/point_system/github_model/license.dart b/lib/point_system/github_model/license.dart new file mode 100644 index 0000000..9e166fc --- /dev/null +++ b/lib/point_system/github_model/license.dart @@ -0,0 +1,24 @@ + + +class License { + + String? name; + String? spdxId; + + License(this.name,this.spdxId); + + String get type { + return spdxId ==null?"未知":spdxId!; + } + + + factory License.fromJson(Map json) => License( + json['name'] as String?, + json['spdx_id'] as String?, + ); + + Map toJson() => { + 'name': name, + 'spdx_id': spdxId, + }; +} diff --git a/lib/point_system/github_model/repository.dart b/lib/point_system/github_model/repository.dart new file mode 100644 index 0000000..1eec4e6 --- /dev/null +++ b/lib/point_system/github_model/repository.dart @@ -0,0 +1,216 @@ + + +import 'github_user.dart'; +import 'license.dart'; +import 'repository_permissions.dart'; + +class Repository { + int? id; + + int? size; + + String? name; + + String? fullName; + + + String? htmlUrl; + + String? description; + + String? language; + + + String? defaultBranch; + + + DateTime? createdAt; + + + DateTime? updatedAt; + + DateTime? pushedAt; + + + String? gitUrl; + + + String? sshUrl; + + + String? cloneUrl; + + + String? svnUrl; + + + int? stargazersCount; + + + int? watchersCount; + + + int? forksCount; + + + int? openIssuesCount; + + + int? subscribersCount; + + + bool? private; + + bool? fork; + + bool? hasIssues; + + bool? hasProjects; + + bool? hasDownloads; + + bool? hasWiki; + + bool? hasPages; + + GithubUser? owner; + + License? license; + + Repository? parent; + + RepositoryPermissions? permissions; + + List? topics; + + int? allIssueCount; + + Repository( + this.id, + this.size, + this.name, + this.fullName, + this.htmlUrl, + this.description, + this.language, + this.license, + this.defaultBranch, + this.createdAt, + this.updatedAt, + this.pushedAt, + this.gitUrl, + this.sshUrl, + this.cloneUrl, + this.svnUrl, + this.stargazersCount, + this.watchersCount, + this.forksCount, + this.openIssuesCount, + this.subscribersCount, + this.private, + this.fork, + this.hasIssues, + this.hasProjects, + this.hasDownloads, + this.hasWiki, + this.hasPages, + this.owner, + this.parent, + this.permissions, + this.topics, + ); + + factory Repository.fromJson(Map json) => Repository( + json['id'] as int?, + json['size'] as int?, + json['name'] as String?, + json['full_name'] as String?, + json['html_url'] as String?, + json['description'] as String?, + json['language'] as String?, + json['license'] == null + ? null + : License.fromJson(json['license'] as Map), + json['default_branch'] as String?, + json['created_at'] == null + ? null + : DateTime.parse(json['created_at'] as String), + json['updated_at'] == null + ? null + : DateTime.parse(json['updated_at'] as String), + json['pushed_at'] == null + ? null + : DateTime.parse(json['pushed_at'] as String), + json['git_url'] as String?, + json['ssh_url'] as String?, + json['clone_url'] as String?, + json['svn_url'] as String?, + json['stargazers_count'] as int?, + json['watchers_count'] as int?, + json['forks_count'] as int?, + json['open_issues_count'] as int?, + json['subscribers_count'] as int?, + json['private'] as bool?, + json['fork'] as bool?, + json['has_issues'] as bool?, + json['has_projects'] as bool?, + json['has_downloads'] as bool?, + json['has_wiki'] as bool?, + json['has_pages'] as bool?, + json['owner'] == null + ? null + : GithubUser.fromJson(json['owner'] as Map), + json['parent'] == null + ? null + : Repository.fromJson(json['parent'] as Map), + json['permissions'] == null + ? null + : RepositoryPermissions.fromJson( + json['permissions'] as Map), + (json['topics'] as List?)?.map((e) => e as String).toList(), + )..allIssueCount = json['allIssueCount'] as int?; + + + @override + String toString() { + return 'Repository{id: $id, size: $size, name: $name, fullName: $fullName, htmlUrl: $htmlUrl, description: $description, language: $language, defaultBranch: $defaultBranch, createdAt: $createdAt, updatedAt: $updatedAt, pushedAt: $pushedAt, gitUrl: $gitUrl, sshUrl: $sshUrl, cloneUrl: $cloneUrl, svnUrl: $svnUrl, stargazersCount: $stargazersCount, watchersCount: $watchersCount, forksCount: $forksCount, openIssuesCount: $openIssuesCount, subscribersCount: $subscribersCount, private: $private, fork: $fork, hasIssues: $hasIssues, hasProjects: $hasProjects, hasDownloads: $hasDownloads, hasWiki: $hasWiki, hasPages: $hasPages, owner: $owner, license: $license, parent: $parent, permissions: $permissions, topics: $topics, allIssueCount: $allIssueCount}'; + } + + Map toJson() =>{ + 'id': id, + 'size': size, + 'name': name, + 'full_name': fullName, + 'html_url': htmlUrl, + 'description': description, + 'language': language, + 'default_branch': defaultBranch, + 'created_at': createdAt?.toIso8601String(), + 'updated_at': updatedAt?.toIso8601String(), + 'pushed_at': pushedAt?.toIso8601String(), + 'git_url': gitUrl, + 'ssh_url': sshUrl, + 'clone_url': cloneUrl, + 'svn_url': svnUrl, + 'stargazers_count': stargazersCount, + 'watchers_count': watchersCount, + 'forks_count': forksCount, + 'open_issues_count': openIssuesCount, + 'subscribers_count': subscribersCount, + 'private': private, + 'fork': fork, + 'has_issues': hasIssues, + 'has_projects': hasProjects, + 'has_downloads': hasDownloads, + 'has_wiki': hasWiki, + 'has_pages': hasPages, + 'owner': owner, + 'license': license, + 'parent': parent, + 'permissions': permissions, + 'topics': topics, + 'allIssueCount': allIssueCount, + }; + + Repository.empty(); +} diff --git a/lib/point_system/github_model/repository_permissions.dart b/lib/point_system/github_model/repository_permissions.dart new file mode 100644 index 0000000..dc8d0b4 --- /dev/null +++ b/lib/point_system/github_model/repository_permissions.dart @@ -0,0 +1,26 @@ + + +class RepositoryPermissions { + bool? admin; + bool? push; + bool? pull; + + RepositoryPermissions( + this.admin, + this.push, + this.pull, + ); + + factory RepositoryPermissions.fromJson(Map json) => + RepositoryPermissions( + json['admin'] as bool?, + json['push'] as bool?, + json['pull'] as bool?, + ); + + Map toJson() => { + 'admin': admin, + 'push': push, + 'pull': pull, + }; +} diff --git a/lib/views/pages/issues_point/issue_item.dart b/lib/point_system/views/issues_point/issue_item.dart similarity index 97% rename from lib/views/pages/issues_point/issue_item.dart rename to lib/point_system/views/issues_point/issue_item.dart index 0f3484d..f2338e1 100644 --- a/lib/views/pages/issues_point/issue_item.dart +++ b/lib/point_system/views/issues_point/issue_item.dart @@ -3,9 +3,10 @@ import 'dart:ui'; import 'package:flutter/material.dart'; import 'package:flutter_unit/app/res/toly_icon.dart'; import 'package:flutter_unit/app/utils/convert_man.dart'; +import 'package:flutter_unit/point_system/github_model/github_model.dart'; import 'package:flutter_unit/views/components/permanent/circle_image.dart'; import 'package:flutter_unit/views/components/permanent/color_wrapper.dart'; -import 'package:flutter_unit/model/github/issue.dart'; + /// create by 张风捷特烈 on 2020/9/3 /// contact me by email 1981462002@qq.com diff --git a/lib/views/pages/issues_point/issues_detail.dart b/lib/point_system/views/issues_point/issues_detail.dart similarity index 96% rename from lib/views/pages/issues_point/issues_detail.dart rename to lib/point_system/views/issues_point/issues_detail.dart index 53f7862..d57c388 100644 --- a/lib/views/pages/issues_point/issues_detail.dart +++ b/lib/point_system/views/issues_point/issues_detail.dart @@ -1,13 +1,14 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_unit/app/utils/convert_man.dart'; -import 'package:flutter_unit/blocs/bloc_exp.dart'; +import 'package:flutter_unit/point_system/blocs/point_system_bloc.dart'; +import 'package:flutter_unit/point_system/github_model/github_model.dart'; + import 'package:flutter_unit/views/components/permanent/circle_image.dart'; import 'package:flutter_unit/views/components/permanent/color_wrapper.dart'; import 'package:flutter_unit/views/components/permanent/markdown/markdown_widget.dart'; import 'package:flutter_unit/views/components/permanent/panel.dart'; -import 'package:flutter_unit/model/github/issue_comment.dart'; -import 'package:flutter_unit/model/github/issue.dart'; + /// create by 张风捷特烈 on 2020/9/3 /// contact me by email 1981462002@qq.com diff --git a/lib/views/pages/issues_point/issues_point_page.dart b/lib/point_system/views/issues_point/issues_point_page.dart similarity index 94% rename from lib/views/pages/issues_point/issues_point_page.dart rename to lib/point_system/views/issues_point/issues_point_page.dart index d07f450..f45c04a 100644 --- a/lib/views/pages/issues_point/issues_point_page.dart +++ b/lib/point_system/views/issues_point/issues_point_page.dart @@ -3,11 +3,12 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_spinkit/flutter_spinkit.dart'; -import 'package:flutter_unit/app/api/issues_api.dart'; + import 'package:flutter_unit/app/router/unit_router.dart'; -import 'package:flutter_unit/blocs/bloc_exp.dart'; -import 'package:flutter_unit/model/github/issue.dart'; -import 'package:flutter_unit/model/github/repository.dart'; +import 'package:flutter_unit/point_system/api/issues_api.dart'; +import 'package:flutter_unit/point_system/blocs/point_system_bloc.dart'; +import 'package:flutter_unit/point_system/github_model/github_model.dart'; + import 'issue_item.dart'; import 'repo_widget.dart'; diff --git a/lib/views/pages/issues_point/repo_widget.dart b/lib/point_system/views/issues_point/repo_widget.dart similarity index 98% rename from lib/views/pages/issues_point/repo_widget.dart rename to lib/point_system/views/issues_point/repo_widget.dart index 92c422b..9c8c5d2 100644 --- a/lib/views/pages/issues_point/repo_widget.dart +++ b/lib/point_system/views/issues_point/repo_widget.dart @@ -1,8 +1,9 @@ import 'package:flutter/material.dart'; import 'package:flutter_unit/app/res/toly_icon.dart'; import 'package:flutter_unit/app/utils/convert_man.dart'; +import 'package:flutter_unit/point_system/github_model/github_model.dart'; import 'package:flutter_unit/views/components/permanent/color_wrapper.dart'; -import 'package:flutter_unit/model/github/repository.dart'; + /// create by 张风捷特烈 on 2020/9/3 /// contact me by email 1981462002@qq.com diff --git a/lib/repositories/app_start.dart b/lib/repositories/app_start.dart deleted file mode 100644 index 6194fea..0000000 --- a/lib/repositories/app_start.dart +++ /dev/null @@ -1,91 +0,0 @@ -import 'dart:convert'; -import 'dart:io'; -import 'dart:typed_data'; - -import 'package:flutter/services.dart'; -import 'package:flutter_unit/app/res/cons.dart'; -import 'package:flutter_unit/app/res/sp.dart'; -import 'package:flutter_unit/blocs/global/global_state.dart'; -import 'package:flutter_unit/repositories/local_db.dart'; -import 'package:path/path.dart' as path; -import 'package:shared_preferences/shared_preferences.dart'; -import 'package:sqflite/sqflite.dart'; - -import 'local_storage.dart'; - -/// create by 张风捷特烈 on 2020-03-04 -/// contact me by email 1981462002@qq.com -/// 说明: 本地存储访问对象,用于读取配置数据,及初始化Database和SharedPreferences - -class AppStart { - // 初始化 App 固化的配置数据 - Future initApp() async { - SharedPreferences prefs = await LocalStorage.sp; - //数据库不存在,执行拷贝 - String databasesPath = await getDatabasesPath(); - String dbPath = path.join(databasesPath, "flutter.db"); - - bool shouldCopy = await _checkShouldCopy(dbPath); - - if (shouldCopy) { - await _doCopyAssetsDb(dbPath); - } else { - print("=====flutter.db 已存在===="); - } - - await LocalDb.instance.initDb(); - - bool showBg = prefs.getBool(SP.showBackground) ?? true; - int themeIndex = prefs.getInt(SP.themeColorIndex) ?? 4; - int fontIndex = prefs.getInt(SP.fontFamily) ?? 1; - int codeIndex = prefs.getInt(SP.codeStyleIndex) ?? 0; - int itemStyleIndex = prefs.getInt(SP.itemStyleIndex) ?? 0; - - return GlobalState( - showBackGround: showBg, - themeColor: Cons.themeColorSupport.keys.toList()[themeIndex], - fontFamily: Cons.fontFamilySupport[fontIndex], - itemStyleIndex: itemStyleIndex, - codeStyleIndex: codeIndex); - } - - Future _checkShouldCopy(String dbPath) async { - bool shouldCopy = false; - String versionStr = await rootBundle.loadString('assets/version.json'); - int dbVersion = await json.decode(versionStr)['dbVersion']; - int versionInSP = - await LocalStorage.getInt(LocalStorage.dbVersionKey) ?? -1; - - // 版本升级,执行拷贝 - if (dbVersion > versionInSP) { - shouldCopy = true; - await LocalStorage.saveInt(LocalStorage.dbVersionKey,dbVersion); - } - - //非 release模式,执行拷贝 - const isPro = bool.fromEnvironment('dart.vm.product'); - if (!isPro) { - shouldCopy = true; - } - - //数据库不存在,执行拷贝 - if (!File(dbPath).existsSync()) { - shouldCopy = true; - } - - return shouldCopy; - } - - Future _doCopyAssetsDb(String dbPath) async { - Directory dir = Directory(path.dirname(dbPath)); - if (!dir.existsSync()) { - await dir.create(recursive: true); - } - ByteData data = await rootBundle.load("assets/flutter.db"); - List bytes = - data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes); - await File(dbPath).writeAsBytes(bytes, flush: true); - - print("=====flutter.db==== assets ======拷贝完成===="); - } -} diff --git a/lib/repositories/bean/category_po.dart b/lib/repositories/bean/category_po.dart deleted file mode 100644 index 0602228..0000000 --- a/lib/repositories/bean/category_po.dart +++ /dev/null @@ -1,88 +0,0 @@ -import 'package:equatable/equatable.dart'; - -/// create by 张风捷特烈 on 2020-04-17 -/// contact me by email 1981462002@qq.com -/// 说明: 收藏夹数据库-数据模型 - -// """ -// CREATE TABLE IF NOT EXISTS widget_category( -// id INTEGER PRIMARY KEY AUTOINCREMENT, -// name VARCHAR(64) NOT NULL, -// color VARCHAR(9) DEFAULT '#FF2196F3', -// info VARCHAR(256) DEFAULT '这里什么都没有...', -// created DATETIME NOT NULL, -// updated DATETIME NOT NULL, -// priority INTEGER DEFAULT 0, -// image VARCHAR(128) NULL image DEFAULT '' -// );"""; //建表语句 - -class CategoryPo extends Equatable { - final int? id; - final String name; - final String color; - final String info; - final DateTime? created; - final DateTime updated; - final String image; - final int count; - final int priority; - - const CategoryPo({ - this.id, - required this.name, - this.color = '#FFF2F2F2', - this.created, - required this.updated, - this.count = 0, - this.priority = 0, - this.info = '这里什么都没有...', - this.image = '', - }); - - factory CategoryPo.fromJson(Map map) { - return CategoryPo( - id: map['id'], - name: map['name'], - color: map["color"], - created: DateTime.parse(map["created"]), - image: map["image"], - priority: map["priority"], - count: map["count"], - updated: DateTime.parse(map["updated"]), - info: map["info"]); - } - - factory CategoryPo.fromNetJson(Map map) { - return CategoryPo( - id: map['id'], - name: map['name'], - color: map["color"], - created: DateTime.fromMillisecondsSinceEpoch(map["created"]), - image: map["image"], - priority: map["priority"], - count: map["count"], - updated: DateTime.fromMillisecondsSinceEpoch(map["updated"]), - info: map["info"]); - } - - Map toJson() => { - "id": this.id, - "name": this.name, - "info": this.info, - "created": this.created?.millisecondsSinceEpoch, - "updated": this.updated.millisecondsSinceEpoch, - "image": this.image, - "count": this.count, - "color": this.color, - "priority": this.priority, - }; - - @override - String toString() { - return 'CategoryPo{id: $id, name: $name, color: $color, info: $info, created: $created, updated: $updated, image: $image, count: $count, priority: $priority}'; - } - - @override - List get props => - [id, name, color, created, image, info, updated, priority,count]; -} diff --git a/lib/repositories/bean/node_po.dart b/lib/repositories/bean/node_po.dart deleted file mode 100644 index 16bfd81..0000000 --- a/lib/repositories/bean/node_po.dart +++ /dev/null @@ -1,38 +0,0 @@ - -/// create by 张风捷特烈 on 2020-03-04 -/// contact me by email 1981462002@qq.com -/// 说明: 详情页节点-数据库-数据模型 -/// -class NodePo { - final int id; - final int widgetId; - final String name; - final int priority; - final String subtitle; - final String code; - - const NodePo({ - required this.id, - required this.widgetId, - required this.name, - required this.priority, - required this.subtitle, - required this.code, - }); - - factory NodePo.fromJson(Map map) { - return NodePo( - id: map['id'], - name: map['name'], - widgetId: map["widgetId"], - priority: map["priority"], - subtitle: map["subtitle"], - code: map["code"]); - } - - @override - String toString() { - return 'NodePo{id: $id, widgetId: $widgetId, name: $name, priority: $priority, subtitle: $subtitle, code: $code}'; - } - -} diff --git a/lib/repositories/bean/widget_po.dart b/lib/repositories/bean/widget_po.dart deleted file mode 100644 index 29e2021..0000000 --- a/lib/repositories/bean/widget_po.dart +++ /dev/null @@ -1,62 +0,0 @@ - -/// create by 张风捷特烈 on 2020-03-04 -/// contact me by email 1981462002@qq.com -/// 说明: 组件信息-数据库-数据模型 -/// -import 'package:equatable/equatable.dart'; - -class WidgetPo extends Equatable { - final int id; - final String name; - final String nameCN; - final int deprecated; - final int family; - final double lever; - final String info; - final String linkWidget; - - const WidgetPo({ - required this.id, - required this.name, - required this.nameCN, - required this.deprecated, - required this.family, - required this.lever, - required this.linkWidget, - required this.info, - }); - - factory WidgetPo.fromJson(Map map) { - return WidgetPo( - id: map['id'], - name: map['name'], - nameCN: map["nameCN"], - family: map["family"], - deprecated: map["deprecated"] ?? 0, - lever: map["lever"].toDouble(), - linkWidget: map["linkWidget"], - info: map["info"]); - } - - Map toJson() { - return { - "id": this.id, - "name": this.name, - "nameCN": this.nameCN, - "family": this.family, - "deprecated": this.deprecated, - "lever": this.lever, - "linkWidget": this.linkWidget, - "info": this.info - }; - } - - @override - String toString() { - return 'WidgetPo{id: $id, name: $name, nameCN: $nameCN, deprecated: $deprecated, family: $family, lever: $lever, info: $info}'; - } - - @override - List get props => - [id, name, nameCN, deprecated, family, linkWidget, lever, info]; -} diff --git a/lib/repositories/dao/category_dao.dart b/lib/repositories/dao/category_dao.dart deleted file mode 100644 index d26ce85..0000000 --- a/lib/repositories/dao/category_dao.dart +++ /dev/null @@ -1,202 +0,0 @@ - -import 'package:sqflite/sqflite.dart'; - -import '../app_start.dart'; -import '../bean/category_po.dart'; - - -//""" -// CREATE TABLE IF NOT EXISTS widget_category( -// id INTEGER PRIMARY KEY AUTOINCREMENT, -// name VARCHAR(64) NOT NULL, -// color VARCHAR(9) DEFAULT '#FF2196F3', -// info VARCHAR(256) DEFAULT '这里什么都没有...', -// created DATETIME NOT NULL, -// updated DATETIME NOT NULL, -// priority INTEGER DEFAULT 0, -// image VARCHAR(128) NULL image DEFAULT '' -// ); -//"""; - -class CategoryDao { - final Database db; - - CategoryDao(this.db); - - - - Future insert(CategoryPo category) async { - //插入方法 - String addSql = //插入数据 - "INSERT INTO " - "widget_category(id,name,color,info,priority,image,created,updated) " - "VALUES (?,?,?,?,?,?,?,?);"; - return await db.transaction((tran) async => await tran.rawInsert(addSql, [ - category.id, - category.name, - category.color, - category.info, - category.priority, - category.image, - category.created?.toIso8601String(), - category.updated.toIso8601String(), - ])); - } - - Future update(CategoryPo widget) async { - //插入方法 - String updateSql = //插入数据 - "UPDATE widget_category SET name=? , color=? ,info=?, priority=?,image=?,updated=? " - "WHERE id = ?"; - - return await db.transaction((tran) async => - await tran.rawUpdate(updateSql, [ - widget.name, - widget.color, - widget.info, - widget.priority, - widget.image, - widget.updated.toIso8601String(), - widget.id, - ])); - } - - - - Future addWidget(int categoryId,int widgetId,) async { - String addSql = //插入数据 - "INSERT INTO " - "category_widget(widgetId,categoryId) " - "VALUES (?,?);"; - return await db.transaction((tran) async => await tran.rawInsert(addSql, [ - widgetId, - categoryId, - ])); - } - - Future addWidgets(int categoryId,List widgetIds) async { - String addSql = //插入数据 - "INSERT INTO " - "category_widget(widgetId,categoryId) VALUES "; - - String args = ''; - - for(int i=0;i< widgetIds.length;i++){ - args+= "(${widgetIds[i]},$categoryId)"; - if(i==widgetIds.length-1){ - args+=";"; - }else{ - args+=","; - } - } - addSql += args; - return await db.transaction((tran) async => await tran.rawInsert(addSql)); - } - - Future existByName(String name) async { - String sql = //插入数据 - "SELECT COUNT(name) as count FROM widget_category " - "WHERE name = ?"; - List> rawData = await db.rawQuery(sql, [name]); - if (rawData.length > 0) { - return rawData[0]['count'] > 0; - } - return false; - } - - Future>> queryAll() async { - List> data = await db.rawQuery( - "SELECT c.id,c.name,c.info,c.color,c.image,c.created,c.updated,c.priority,COUNT(cw.categoryId) as `count`" - "FROM widget_category AS c " - "LEFT JOIN category_widget AS cw " - "ON c.id = cw.categoryId GROUP BY c.id " - "ORDER BY priority DESC,created DESC", - []); - return data; - } - - Future> categoryWidgetIds(int id) async { - List> data = await db.rawQuery( - "SELECT categoryId FROM `category_widget`" - "WHERE widgetId = ?", - [id]); - return data.toList().map((e)=>e["categoryId"]).toList(); - } - - - - Future deleteCollect(int id) async { - await db.execute( - "DELETE FROM category_widget " - "WHERE categoryId = ?", - [id]); - return await db.execute( - "DELETE FROM widget_category " - "WHERE id = ?", - [id]); - } - - Future clear() async { - await db.execute( - "DELETE FROM category_widget " - "WHERE categoryId >0"); - return await db.execute( - "DELETE FROM widget_category " - "WHERE id > 0"); - } - - Future removeWidget(int categoryId, int widgetId) async { - //插入方法 - String deleteSql = //插入数据 - "DELETE FROM " - "category_widget WHERE categoryId = ? AND widgetId = ? "; - return await db - .transaction((tran) async => await tran.rawInsert(deleteSql, [ - categoryId, - widgetId, - ])); - } - - Future existWidgetInCollect(int categoryId, int widgetId) async { - String sql = //插入数据 - "SELECT COUNT(id) as count FROM category_widget " - "WHERE categoryId = ? AND widgetId = ?"; - List> rawData = await db.rawQuery(sql, [categoryId, widgetId]); - if (rawData.length > 0) { - return rawData[0]['count'] > 0; - } - return false; - } - - Future toggleCollect(int categoryId, int widgetId) async { - if (await existWidgetInCollect(categoryId, widgetId)) { - //已存在: 移除 - await removeWidget(categoryId, widgetId); - } else { - await addWidget(categoryId, widgetId); - } - } - - Future toggleCollectDefault(int widgetId) async { - await toggleCollect(1, widgetId); - } - - Future>> loadCollectWidgets(int categoryId) async{ - String querySql = //插入数据 - "SELECT * FROM widget " - "WHERE id IN (SELECT widgetId FROM category_widget WHERE categoryId = ?) " - "ORDER BY lever DESC"; - - return await db.rawQuery(querySql,[categoryId]); - } - - Future> loadCollectWidgetIds(int categoryId) async{ - String querySql = //插入数据 - "SELECT id FROM widget " - "WHERE id IN (SELECT widgetId FROM category_widget WHERE categoryId = ?) " - "ORDER BY lever DESC"; - - var data = await db.rawQuery(querySql,[categoryId]); - return data.map((e) => e["id"] as int).toList(); - } -} diff --git a/lib/repositories/dao/like_dao.dart b/lib/repositories/dao/like_dao.dart deleted file mode 100644 index 38e6184..0000000 --- a/lib/repositories/dao/like_dao.dart +++ /dev/null @@ -1,64 +0,0 @@ -import 'package:sqflite/sqflite.dart'; - -class LikeDao { - final Database db; - - LikeDao(this.db); - - Future> likeWidgetIds() async { - var result = await db.rawQuery("SELECT widget_id FROM like_widget"); - var ids = result.map((e) => e['widget_id'] as int).toList(); - return ids; - } - - // 如果已喜欢,取消喜欢 - // 如果未喜欢,设为喜欢 - Future toggleCollect(int widgetId) async { - bool liked = await isLiked(widgetId); - - if (liked) { - await unlike(widgetId, check: false); - } else { - await like(widgetId, check: false); - } - } - - Future like(int widgetId, {bool check = true}) async { - if (check) { - // 如果 like ,直接取消,不执行 like 操作 - bool liked = await isLiked(widgetId); - if (liked) return 0; - } - - return await db.rawInsert( - "INSERT INTO " - "like_widget(widget_id) " - "VALUES (?);", - [widgetId]); - } - - Future unlike(int widgetId, {bool check = true}) async { - if (check) { - // 如果未 like ,直接取消,不执行 unlike 操作 - bool liked = await isLiked(widgetId); - if (!liked) return; - } - await db.execute( - "DELETE FROM like_widget " - "WHERE widget_id = ?", - [widgetId]); - } - - // 判断组件是否已 liked - Future isLiked(int widgetId) async { - var data = await db.rawQuery( - "Select count(id) as `count` FROM like_widget " - "WHERE widget_id = ?", - [widgetId]); - if (data.length > 0) { - var result = data[0]; - return result['count'] as int > 0; - } - return false; - } -} diff --git a/lib/repositories/dao/node_dao.dart b/lib/repositories/dao/node_dao.dart deleted file mode 100644 index e295f71..0000000 --- a/lib/repositories/dao/node_dao.dart +++ /dev/null @@ -1,44 +0,0 @@ -import 'package:flutter_unit/repositories/bean/node_po.dart'; -import 'package:sqflite/sqflite.dart'; - -import '../app_start.dart'; - - - -class NodeDao { - - final Database db; - - - NodeDao(this.db); - - Future insert(NodePo widget) async { - //插入方法 - String addSql = //插入数据 - "INSERT INTO " - "node(widgetId,name,priority,subtitle,code) " - "VALUES (?,?,?,?,?);"; - return await db.transaction((tran) async => await tran.rawInsert(addSql, [ - widget.widgetId, - widget.name, - widget.priority, - widget.subtitle, - widget.code - ])); - } - - Future>> queryAll() async { - //插入方法 - return await db.rawQuery("SELECT * " - "FROM node"); - } - - //根据 id 查询组件 node - Future>> queryById(int id) async { - return await db.rawQuery( - "SELECT name,subtitle,code " - "FROM node " - "WHERE widgetId = ? ORDER BY priority", - [id]); - } -} diff --git a/lib/repositories/dao/widget_dao.dart b/lib/repositories/dao/widget_dao.dart deleted file mode 100644 index 11b7767..0000000 --- a/lib/repositories/dao/widget_dao.dart +++ /dev/null @@ -1,67 +0,0 @@ - -import 'package:flutter_unit/model/enums.dart'; -import 'package:sqflite/sqflite.dart'; - -import '../app_start.dart'; -import '../bean/widget_po.dart'; - - -class WidgetDao { - - final Database db; - - WidgetDao(this.db); - - Future insert(WidgetPo widget) async { - //插入方法 - String addSql = //插入数据 - "INSERT INTO " - "widget(id,name,nameCN,deprecated,family,lever,linkWidget,info) " - "VALUES (?,?,?,?,?,?,?,?);"; - return await db.transaction((tran) async => await tran.rawInsert(addSql, [ - widget.id, - widget.name, - widget.nameCN, - widget.deprecated, - widget.family, - widget.lever, - widget.linkWidget, - widget.info - ])); - } - - Future>> queryAll() async { - return await db.rawQuery("SELECT * FROM widget"); - } - - Future>> queryByFamily(WidgetFamily family) async { - return await db.rawQuery( - "SELECT * " - "FROM widget WHERE family = ? ORDER BY lever DESC", - [family.index]); - } - - Future>> queryByIds(List ids) async { - if (ids.length == 0) { - return []; - } - String sql = "SELECT * " - "FROM widget WHERE id in (${'?,' * (ids.length - 1)}?) "; - - return await db.rawQuery(sql, [...ids]); - } - - Future>> search(SearchArgs arguments) async { - return await db.rawQuery( - "SELECT * " - "FROM widget WHERE name like ? AND lever IN(?,?,?,?,?) ORDER BY lever DESC", - ["%${arguments.name}%", ...arguments.stars]); - } -} - -class SearchArgs { - final String name; - final List stars; - - const SearchArgs({this.name = '', this.stars = const [-1, -1, -1, -1, -1]}); -} diff --git a/lib/repositories/local_db.dart b/lib/repositories/local_db.dart deleted file mode 100644 index 12d1eea..0000000 --- a/lib/repositories/local_db.dart +++ /dev/null @@ -1,50 +0,0 @@ -import 'package:flutter_unit/repositories/dao/like_dao.dart'; -import 'package:path/path.dart' as path; -import 'package:sqflite/sqflite.dart'; - -import 'dao/category_dao.dart'; -import 'dao/node_dao.dart'; -import 'dao/widget_dao.dart'; - -class LocalDb { - Database? _database; - - LocalDb._(); - - static LocalDb instance = LocalDb._(); - - late WidgetDao _widgetDao; - late CategoryDao _categoryDao; - late NodeDao _nodeDao; - late LikeDao _likeDao; - - WidgetDao get widgetDao => _widgetDao; - - CategoryDao get categoryDao => _categoryDao; - - NodeDao get nodeDao => _nodeDao; - - LikeDao get likeDao => _likeDao; - - Database get db => _database!; - - Future initDb({String name = "flutter.db"}) async { - if (_database != null) return; - String databasesPath = await getDatabasesPath(); - String dbPath = path.join(databasesPath, name); - - _database = await openDatabase(dbPath); - - _widgetDao = WidgetDao(_database!); - _categoryDao = CategoryDao(_database!); - _nodeDao = NodeDao(_database!); - _likeDao = LikeDao(_database!); - - print('初始化数据库....'); - } - - Future closeDb() async { - await _database?.close(); - _database = null; - } -} diff --git a/lib/repositories/local_storage.dart b/lib/repositories/local_storage.dart deleted file mode 100644 index a06e15d..0000000 --- a/lib/repositories/local_storage.dart +++ /dev/null @@ -1,42 +0,0 @@ -import 'package:shared_preferences/shared_preferences.dart'; - -/// create by 张风捷特烈 on 2020/6/17 -/// contact me by email 1981462002@qq.com -/// 说明: - -class LocalStorage { - - static String tokenKey= "token_key"; - static String userKey= "user_key"; - static String dbVersionKey= "db_version_key"; - - static SharedPreferences? _sp; - - // 如果_sp已存在,直接返回,为null时创建 - static Future get sp async { - if (_sp == null) { - _sp = await SharedPreferences.getInstance(); - } - return _sp!; - } - - static Future save(String key, String value) async { - return (await sp).setString(key, value); - } - - static dynamic get(String key) async { - return (await sp).get(key); - } - - static Future saveInt(String key, int value) async { - return (await sp).setInt(key, value); - } - - static Future getInt(String key) async { - return (await sp).getInt(key); - } - - static Future remove(String key) async { - return (await sp).remove(key); - } -} \ No newline at end of file diff --git a/lib/repositories/rep/category_repository.dart b/lib/repositories/rep/category_repository.dart deleted file mode 100644 index 1f5b087..0000000 --- a/lib/repositories/rep/category_repository.dart +++ /dev/null @@ -1,40 +0,0 @@ -import 'package:flutter_unit/model/category_model.dart'; -import 'package:flutter_unit/model/widget_model.dart'; -import 'package:flutter_unit/repositories/bean/category_po.dart'; - -/// create by 张风捷特烈 on 2020-04-21 -/// contact me by email 1981462002@qq.com -/// 说明: 负责数据的存储和操作接口 - -abstract class CategoryRepository { - //切换一个组件在收藏夹中的状态 - Future toggleCategory(int categoryId, int widgetId); - - // 检查一个组件是否在收藏夹内 - Future check(int categoryId,int widgetId); - - // 获取一个收藏夹中的所有组件 - Future> loadCategoryWidgets({int categoryId = 0}); - - // 获取所有收藏集 - Future> loadCategories(); - - // 获取 所有收藏集 及 收藏集对应的组件 id 列表 - Future> loadCategoryData(); - - // 根据 Category 数据 同步 收藏集 - Future syncCategoryByData(String data,String likeData); - - //添加收藏集 - Future addCategory(CategoryPo categoryPo); - - //更新收藏集 - Future updateCategory(CategoryPo categoryPo); - - //删除收藏集 - Future deleteCategory(int id); - - //查看某个组件在哪些收藏集中 - Future> getCategoryByWidget(int widgetId); - -} \ No newline at end of file diff --git a/lib/repositories/rep/impl/catagory_db_repository.dart b/lib/repositories/rep/impl/catagory_db_repository.dart deleted file mode 100644 index dda8a14..0000000 --- a/lib/repositories/rep/impl/catagory_db_repository.dart +++ /dev/null @@ -1,120 +0,0 @@ -import 'dart:async'; -import 'dart:convert'; - -import 'package:flutter_unit/model/category_model.dart'; -import 'package:flutter_unit/model/widget_model.dart'; -import 'package:flutter_unit/repositories/bean/category_po.dart'; -import 'package:flutter_unit/repositories/bean/widget_po.dart'; -import 'package:flutter_unit/repositories/dao/category_dao.dart'; -import 'package:flutter_unit/repositories/local_db.dart'; -import 'package:flutter_unit/repositories/rep/category_repository.dart'; -import 'package:sqflite/sqflite.dart'; - - -/// create by 张风捷特烈 on 2020-04-21 -/// contact me by email 1981462002@qq.com -/// 说明: - -class CategoryDbRepository implements CategoryRepository { - - CategoryDao get _categoryDao => LocalDb.instance.categoryDao; - - Database get db => LocalDb.instance.db; - - @override - Future addCategory(CategoryPo categoryPo) async { - int success = await _categoryDao.insert(categoryPo); - return success != -1; - } - - @override - Future check(int categoryId, int widgetId) async { - return await _categoryDao.existWidgetInCollect(categoryId, widgetId); - } - - @override - Future deleteCategory(int id) async { - await _categoryDao.deleteCollect(id); - } - - @override - Future> loadCategories() async { - List> data = await _categoryDao.queryAll(); - List collects = - data.map((e) => CategoryPo.fromJson(e)).toList(); - return collects.map(CategoryModel.fromPo).toList(); - } - - @override - Future> loadCategoryWidgets({int categoryId = 0}) async { - List> rawData = - await _categoryDao.loadCollectWidgets(categoryId); - List widgets = rawData.map((e) => WidgetPo.fromJson(e)).toList(); - return widgets.map(WidgetModel.fromPo).toList(); - } - - @override - Future toggleCategory(int categoryId, int widgetId) async { - return await _categoryDao.toggleCollect(categoryId, widgetId); - } - - @override - Future> getCategoryByWidget(int widgetId) async { - return await _categoryDao.categoryWidgetIds(widgetId); - } - - @override - Future updateCategory(CategoryPo categoryPo) async { - int success = await _categoryDao.update(categoryPo); - return success != -1; - } - - @override - Future> loadCategoryData() async { - List> data = await _categoryDao.queryAll(); - - Completer> completer = Completer(); - List collects = []; - - if (data.length == 0) { - completer.complete([]); - } - - for (int i = 0; i < data.length; i++) { - List ids = await _categoryDao.loadCollectWidgetIds(data[i]['id']); - collects.add(CategoryTo( - widgetIds: ids, - model: CategoryPo.fromJson(data[i]))); - - if (i == data.length - 1) { - completer.complete(collects); - } - } - - return completer.future; - } - - @override - Future syncCategoryByData(String data,String likeData) async { - try { - await _categoryDao.clear(); - List dataMap = json.decode(data); - for (int i = 0; i < dataMap.length; i++) { - CategoryPo po = CategoryPo.fromNetJson(dataMap[i]["model"]); - List widgetIds = dataMap[i]["widgetIds"]; - await addCategory(po); - if (widgetIds.isNotEmpty&&po.id!=null) { - await _categoryDao.addWidgets(po.id!, widgetIds); - } - } - List likeWidgets = (json.decode(likeData) as List).map((e) => e).toList(); - for (int i = 0; i < likeWidgets.length; i++) { - await LocalDb.instance.likeDao.like(likeWidgets[i]); - } - return true; - } catch (e) { - print(e); - return false; - } - } -} diff --git a/lib/repositories/rep/impl/widget_db_repository.dart b/lib/repositories/rep/impl/widget_db_repository.dart deleted file mode 100644 index 3293a83..0000000 --- a/lib/repositories/rep/impl/widget_db_repository.dart +++ /dev/null @@ -1,79 +0,0 @@ - -import 'dart:convert'; -import 'dart:io'; - - -import 'package:flutter_unit/repositories/app_start.dart'; -import 'package:flutter_unit/repositories/bean/widget_po.dart'; -import 'package:flutter_unit/repositories/dao/like_dao.dart'; -import 'package:flutter_unit/repositories/local_db.dart'; -import 'package:flutter_unit/repositories/dao/node_dao.dart'; -import 'package:flutter_unit/repositories/dao/widget_dao.dart'; -import 'package:flutter_unit/model/enums.dart'; - -import 'package:flutter_unit/model/node_model.dart'; -import 'package:flutter_unit/model/widget_model.dart'; -import 'package:flutter_unit/repositories/rep/widget_repository.dart'; -import 'package:path_provider/path_provider.dart'; - - -/// create by 张风捷特烈 on 2020-03-03 -/// contact me by email 1981462002@qq.com -/// 说明 : Widget数据仓库 - -class WidgetDbRepository implements WidgetRepository { - - WidgetDao get _widgetDao => LocalDb.instance.widgetDao; - NodeDao get _nodeDao => LocalDb.instance.nodeDao; - LikeDao get _likeDao => LocalDb.instance.likeDao; - - @override - Future> loadWidgets(WidgetFamily family) async { - List> data = await _widgetDao.queryByFamily(family); - List widgets = data.map((e) => WidgetPo.fromJson(e)).toList(); - return widgets.map(WidgetModel.fromPo).toList(); - } - - @override - Future> loadLikeWidgets() async { - List likeIds = await _likeDao.likeWidgetIds(); - List> data = await _widgetDao.queryByIds(likeIds); - List widgets = data.map((e) => WidgetPo.fromJson(e)).toList(); - return widgets.map(WidgetModel.fromPo).toList(); - } - - @override - Future> searchWidgets(SearchArgs args) async { - List> data = await _widgetDao.search(args); - List widgets = data.map((e) => WidgetPo.fromJson(e)).toList(); - return widgets.map(WidgetModel.fromPo).toList(); - } - - @override - Future> loadNode(WidgetModel widgetModel) async { - List> data = await _nodeDao.queryById(widgetModel.id); - List nodes = data.map((e) => NodeModel.fromJson(e)).toList(); - return nodes; - } - - @override - Future> loadWidget(List id) async { - List> data = await _widgetDao.queryByIds(id); - List widgets = data.map((e) => WidgetPo.fromJson(e)).toList(); - if (widgets.length > 0) return widgets.map(WidgetModel.fromPo).toList(); - return []; - } - - @override - Future toggleLike( - int id, - ) { - return _likeDao.toggleCollect(id); - } - - - @override - Future collected(int id) async{ - return await _likeDao.like(id); - } -} diff --git a/lib/repositories/rep/widget_repository.dart b/lib/repositories/rep/widget_repository.dart deleted file mode 100644 index ce74aea..0000000 --- a/lib/repositories/rep/widget_repository.dart +++ /dev/null @@ -1,23 +0,0 @@ -import 'package:flutter_unit/model/enums.dart'; -import 'package:flutter_unit/model/node_model.dart'; -import 'package:flutter_unit/model/widget_model.dart'; -import 'package:flutter_unit/repositories/dao/widget_dao.dart'; - -/// create by 张风捷特烈 on 2020-03-03 -/// contact me by email 1981462002@qq.com - -abstract class WidgetRepository { - Future> loadWidgets(WidgetFamily family); - - Future> loadWidget(List ids); - - Future> searchWidgets(SearchArgs args); - - Future> loadNode(WidgetModel widgetModel); - - Future toggleLike(int id); - - Future> loadLikeWidgets(); - - Future collected(int id); -} diff --git a/lib/user_system/bloc/authentic/bloc.dart b/lib/user_system/bloc/authentic/bloc.dart index 4ce36b1..f1be7ef 100644 --- a/lib/user_system/bloc/authentic/bloc.dart +++ b/lib/user_system/bloc/authentic/bloc.dart @@ -3,8 +3,9 @@ import 'dart:convert'; import 'package:bloc/bloc.dart'; import 'package:flutter_unit/app/utils/http_utils/http_util.dart'; -import 'package:flutter_unit/repositories/local_storage.dart'; + import 'package:flutter_unit/user_system/model/user.dart'; +import 'package:flutter_unit/widget_system/repositories/repositories.dart'; import 'package:jwt_decoder/jwt_decoder.dart'; import 'event.dart'; diff --git a/lib/views/components/flutter/no_div_expansion_tile.dart b/lib/views/components/flutter/no_div_expansion_tile.dart index d47ca54..2fce786 100644 --- a/lib/views/components/flutter/no_div_expansion_tile.dart +++ b/lib/views/components/flutter/no_div_expansion_tile.dart @@ -12,10 +12,10 @@ const Duration _kExpand = Duration(milliseconds: 200); /// the tile to reveal or hide the [children]. /// /// This widget is typically used with [ListView] to create an -/// "expand / collapse" list entry. When used with scrolling widgets like +/// "expand / collapse" list entry. When used with scrolling widgets liked_widget_bloc /// [ListView], a unique [PageStorageKey] must be specified to enable the /// [NoBorderExpansionTile] to save and restore its expanded state when it is scrolled -/// in and out of view. +/// in and out of category_view. /// /// See also: /// diff --git a/lib/views/components/project/items/category_list_item.dart b/lib/views/components/project/items/category_list_item.dart index ab4b1db..125b68a 100644 --- a/lib/views/components/project/items/category_list_item.dart +++ b/lib/views/components/project/items/category_list_item.dart @@ -2,7 +2,7 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_unit/views/components/permanent/circle_text.dart'; import 'package:flutter_unit/views/components/permanent/feedback_widget.dart'; -import 'package:flutter_unit/model/category_model.dart'; +import 'package:flutter_unit/widget_system/repositories/model/category_model.dart'; /// create by 张风捷特烈 on 2020-04-21 /// contact me by email 1981462002@qq.com diff --git a/lib/views/components/project/items/collect_widget_list_item.dart b/lib/views/components/project/items/collect_widget_list_item.dart index 58f0800..48853a2 100644 --- a/lib/views/components/project/items/collect_widget_list_item.dart +++ b/lib/views/components/project/items/collect_widget_list_item.dart @@ -6,7 +6,7 @@ import 'package:flutter_unit/app/res/style/shape/techno_shape.dart'; import 'package:flutter_unit/views/components/permanent/circle_image.dart'; import 'package:flutter_unit/views/components/permanent/circle_text.dart'; import 'package:flutter_unit/views/components/permanent/feedback_widget.dart'; -import 'package:flutter_unit/model/widget_model.dart'; +import 'package:flutter_unit/widget_system/repositories/model/widget_model.dart'; class CollectWidgetListItem extends StatelessWidget { final WidgetModel data; diff --git a/lib/views/components/project/items/widget/coupon_widget_list_item.dart b/lib/views/components/project/items/widget/coupon_widget_list_item.dart index 5187928..4e9c50d 100644 --- a/lib/views/components/project/items/widget/coupon_widget_list_item.dart +++ b/lib/views/components/project/items/widget/coupon_widget_list_item.dart @@ -3,11 +3,12 @@ import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_star/flutter_star.dart'; import 'package:flutter_unit/app/res/cons.dart'; import 'package:flutter_unit/app/res/style/shape/coupon_shape_border.dart'; -import 'package:flutter_unit/blocs/bloc_exp.dart'; +import 'package:flutter_unit/widget_system/blocs/widget_system_bloc.dart'; + import 'package:flutter_unit/views/components/permanent/circle_image.dart'; import 'package:flutter_unit/views/components/permanent/circle_text.dart'; import 'package:flutter_unit/views/components/permanent/tag.dart'; -import 'package:flutter_unit/model/widget_model.dart'; +import 'package:flutter_unit/widget_system/repositories/model/widget_model.dart'; class CouponWidgetListItem extends StatelessWidget { final WidgetModel data; diff --git a/lib/views/components/project/items/widget/home_item_support.dart b/lib/views/components/project/items/widget/home_item_support.dart index 3e3313b..2dd1791 100644 --- a/lib/views/components/project/items/widget/home_item_support.dart +++ b/lib/views/components/project/items/widget/home_item_support.dart @@ -1,8 +1,8 @@ import 'dart:math'; import 'package:flutter/material.dart'; -import 'package:flutter_unit/model/enums.dart'; -import 'package:flutter_unit/model/widget_model.dart'; +import 'package:flutter_unit/widget_system/repositories/model/enums.dart'; +import 'package:flutter_unit/widget_system/repositories/model/widget_model.dart'; import 'package:flutter_unit/views/components/project/items/widget/simple_widget_list_item.dart'; import 'coupon_widget_list_item.dart'; diff --git a/lib/views/components/project/items/widget/simple_widget_list_item.dart b/lib/views/components/project/items/widget/simple_widget_list_item.dart index df46079..225e6bd 100644 --- a/lib/views/components/project/items/widget/simple_widget_list_item.dart +++ b/lib/views/components/project/items/widget/simple_widget_list_item.dart @@ -3,11 +3,12 @@ import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_star/star.dart'; import 'package:flutter_star/star_score.dart'; import 'package:flutter_unit/app/res/cons.dart'; -import 'package:flutter_unit/blocs/bloc_exp.dart'; +import 'package:flutter_unit/widget_system/blocs/widget_system_bloc.dart'; + import 'package:flutter_unit/views/components/permanent/circle_image.dart'; import 'package:flutter_unit/views/components/permanent/circle_text.dart'; import 'package:flutter_unit/views/components/permanent/tag.dart'; -import 'package:flutter_unit/model/widget_model.dart'; +import 'package:flutter_unit/widget_system/repositories/model/widget_model.dart'; /// create by 张风捷特烈 on 2020/11/17 /// contact me by email 1981462002@qq.com diff --git a/lib/views/components/project/items/widget/techno_widget_list_item.dart b/lib/views/components/project/items/widget/techno_widget_list_item.dart index c2a323d..5248492 100644 --- a/lib/views/components/project/items/widget/techno_widget_list_item.dart +++ b/lib/views/components/project/items/widget/techno_widget_list_item.dart @@ -4,11 +4,12 @@ import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_star/flutter_star.dart'; import 'package:flutter_unit/app/res/cons.dart'; import 'package:flutter_unit/app/res/style/shape/techno_shape.dart'; -import 'package:flutter_unit/blocs/bloc_exp.dart'; +import 'package:flutter_unit/widget_system/blocs/widget_system_bloc.dart'; + import 'package:flutter_unit/views/components/permanent/circle_image.dart'; import 'package:flutter_unit/views/components/permanent/circle_text.dart'; import 'package:flutter_unit/views/components/permanent/tag.dart'; -import 'package:flutter_unit/model/widget_model.dart'; +import 'package:flutter_unit/widget_system/repositories/model/widget_model.dart'; class TechnoWidgetListItem extends StatelessWidget { final WidgetModel data; diff --git a/lib/views/components/project/overlay_tool_wrapper.dart b/lib/views/components/project/overlay_tool_wrapper.dart index e505f00..0ddd291 100644 --- a/lib/views/components/project/overlay_tool_wrapper.dart +++ b/lib/views/components/project/overlay_tool_wrapper.dart @@ -2,7 +2,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_unit/app/res/toly_icon.dart'; import 'package:flutter_unit/app/router/unit_router.dart'; -import 'package:flutter_unit/blocs/bloc_exp.dart'; +import 'package:flutter_unit/point_system/blocs/point_system_bloc.dart'; + import '../permanent/burst_menu.dart'; import '../permanent/color_wrapper.dart'; diff --git a/lib/views/widgets/MultiChildRenderObjectWidget/RichText/node2_widget.dart b/lib/views/widgets/MultiChildRenderObjectWidget/RichText/node2_widget.dart index 9f1b110..db4eb42 100644 --- a/lib/views/widgets/MultiChildRenderObjectWidget/RichText/node2_widget.dart +++ b/lib/views/widgets/MultiChildRenderObjectWidget/RichText/node2_widget.dart @@ -40,7 +40,7 @@ class RichTextWithWidget extends StatelessWidget { style: TextStyle(color: Colors.orange, fontSize: 16), ), TextSpan( - text: 'https://github.com/toly1994328', + text: 'https://github_model.com/toly1994328', style: TextStyle( color: Colors.blue, fontSize: 18, diff --git a/lib/views/widgets/StatefulWidget/AppBar/node1_base.dart b/lib/views/widgets/StatefulWidget/AppBar/node1_base.dart index 5f2ba33..0d2228a 100755 --- a/lib/views/widgets/StatefulWidget/AppBar/node1_base.dart +++ b/lib/views/widgets/StatefulWidget/AppBar/node1_base.dart @@ -38,7 +38,7 @@ class CustomAppBar extends StatelessWidget { actions: [ IconButton( icon: Icon(Icons.star), - tooltip: 'like', + tooltip: 'liked_widget_bloc', onPressed: () { // do nothing }), diff --git a/lib/views/widgets/StatefulWidget/AppBar/node2_tab.dart b/lib/views/widgets/StatefulWidget/AppBar/node2_tab.dart index 24719d3..dbbfa81 100755 --- a/lib/views/widgets/StatefulWidget/AppBar/node2_tab.dart +++ b/lib/views/widgets/StatefulWidget/AppBar/node2_tab.dart @@ -66,7 +66,7 @@ class _TabAppBarState extends State actions: [ IconButton( icon: Icon(Icons.star), - tooltip: 'like', + tooltip: 'liked_widget_bloc', onPressed: () { // do nothing }), diff --git a/lib/views/widgets/StatelessWidget/SimpleDialog/node1_base.dart b/lib/views/widgets/StatelessWidget/SimpleDialog/node1_base.dart index f566d99..e1ebf37 100644 --- a/lib/views/widgets/StatelessWidget/SimpleDialog/node1_base.dart +++ b/lib/views/widgets/StatelessWidget/SimpleDialog/node1_base.dart @@ -24,7 +24,7 @@ class CustomSimpleDialog extends StatelessWidget { '性别: 男 未婚', '微信: zdl1994328', "掘金: 张风捷特烈", - "github: toly1994328", + "github_model: toly1994328", "邮箱: 1981462008@qq.com", ]; diff --git a/lib/blocs/category/category_bloc.dart b/lib/widget_system/blocs/category_bloc/category_bloc.dart similarity index 93% rename from lib/blocs/category/category_bloc.dart rename to lib/widget_system/blocs/category_bloc/category_bloc.dart index 7b0b917..123ac9d 100644 --- a/lib/blocs/category/category_bloc.dart +++ b/lib/widget_system/blocs/category_bloc/category_bloc.dart @@ -3,9 +3,9 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_unit/app/res/style/unit_color.dart'; import 'package:flutter_unit/app/utils/color_utils.dart'; -import 'package:flutter_unit/model/category_model.dart'; -import 'package:flutter_unit/repositories/bean/category_po.dart'; -import 'package:flutter_unit/repositories/rep/category_repository.dart'; +import 'package:flutter_unit/widget_system/repositories/model/category_model.dart'; +import 'package:flutter_unit/widget_system/repositories/repositories.dart'; + import 'category_event.dart'; import 'category_state.dart'; diff --git a/lib/blocs/category/category_event.dart b/lib/widget_system/blocs/category_bloc/category_event.dart similarity index 100% rename from lib/blocs/category/category_event.dart rename to lib/widget_system/blocs/category_bloc/category_event.dart diff --git a/lib/blocs/category/category_state.dart b/lib/widget_system/blocs/category_bloc/category_state.dart similarity index 90% rename from lib/blocs/category/category_state.dart rename to lib/widget_system/blocs/category_bloc/category_state.dart index 84c493e..a6624aa 100644 --- a/lib/blocs/category/category_state.dart +++ b/lib/widget_system/blocs/category_bloc/category_state.dart @@ -1,5 +1,5 @@ import 'package:equatable/equatable.dart'; -import 'package:flutter_unit/model/category_model.dart'; +import 'package:flutter_unit/widget_system/repositories/model/category_model.dart'; /// create by 张风捷特烈 on 2020-04-21 /// contact me by email 1981462002@qq.com diff --git a/lib/blocs/category_widget/category_widget_bloc.dart b/lib/widget_system/blocs/category_widget_bloc/category_widget_bloc.dart similarity index 81% rename from lib/blocs/category_widget/category_widget_bloc.dart rename to lib/widget_system/blocs/category_widget_bloc/category_widget_bloc.dart index 4490d0c..dc19136 100644 --- a/lib/blocs/category_widget/category_widget_bloc.dart +++ b/lib/widget_system/blocs/category_widget_bloc/category_widget_bloc.dart @@ -1,8 +1,9 @@ -import 'package:flutter/material.dart'; + import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:flutter_unit/blocs/category/category_bloc.dart'; -import 'package:flutter_unit/blocs/category/category_event.dart'; -import 'package:flutter_unit/repositories/rep/category_repository.dart'; +import 'package:flutter_unit/widget_system/repositories/repositories.dart'; + +import 'package:flutter_unit/widget_system/blocs/category_bloc/category_bloc.dart'; +import 'package:flutter_unit/widget_system/blocs/category_bloc/category_event.dart'; import 'category_widget_event.dart'; import 'category_widget_state.dart'; diff --git a/lib/blocs/category_widget/category_widget_event.dart b/lib/widget_system/blocs/category_widget_bloc/category_widget_event.dart similarity index 100% rename from lib/blocs/category_widget/category_widget_event.dart rename to lib/widget_system/blocs/category_widget_bloc/category_widget_event.dart diff --git a/lib/blocs/category_widget/category_widget_state.dart b/lib/widget_system/blocs/category_widget_bloc/category_widget_state.dart similarity index 86% rename from lib/blocs/category_widget/category_widget_state.dart rename to lib/widget_system/blocs/category_widget_bloc/category_widget_state.dart index ae2f3e0..b26edf9 100644 --- a/lib/blocs/category_widget/category_widget_state.dart +++ b/lib/widget_system/blocs/category_widget_bloc/category_widget_state.dart @@ -1,5 +1,5 @@ import 'package:equatable/equatable.dart'; -import 'package:flutter_unit/model/widget_model.dart'; +import 'package:flutter_unit/widget_system/repositories/model/widget_model.dart'; /// create by 张风捷特烈 on 2020-04-21 /// contact me by email 1981462002@qq.com diff --git a/lib/blocs/like/like_bloc.dart b/lib/widget_system/blocs/liked_widget_bloc/liked_widget_bloc.dart similarity index 82% rename from lib/blocs/like/like_bloc.dart rename to lib/widget_system/blocs/liked_widget_bloc/liked_widget_bloc.dart index d830657..fed6b1e 100644 --- a/lib/blocs/like/like_bloc.dart +++ b/lib/widget_system/blocs/liked_widget_bloc/liked_widget_bloc.dart @@ -1,10 +1,9 @@ - -import 'package:flutter/cupertino.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:flutter_unit/repositories/rep/widget_repository.dart'; +import 'package:flutter_unit/widget_system/repositories/repositories.dart'; -import 'like_event.dart'; -import 'like_state.dart'; + +import 'liked_widget_event.dart'; +import 'liked_widget_state.dart'; /// create by 张风捷特烈 on 2020-04-07 /// contact me by email 1981462002@qq.com diff --git a/lib/blocs/like/like_event.dart b/lib/widget_system/blocs/liked_widget_bloc/liked_widget_event.dart similarity index 100% rename from lib/blocs/like/like_event.dart rename to lib/widget_system/blocs/liked_widget_bloc/liked_widget_event.dart diff --git a/lib/blocs/like/like_state.dart b/lib/widget_system/blocs/liked_widget_bloc/liked_widget_state.dart similarity index 80% rename from lib/blocs/like/like_state.dart rename to lib/widget_system/blocs/liked_widget_bloc/liked_widget_state.dart index 5c5ff5d..8b171a4 100644 --- a/lib/blocs/like/like_state.dart +++ b/lib/widget_system/blocs/liked_widget_bloc/liked_widget_state.dart @@ -1,5 +1,5 @@ import 'package:equatable/equatable.dart'; -import 'package:flutter_unit/model/widget_model.dart'; +import 'package:flutter_unit/widget_system/repositories/model/widget_model.dart'; /// create by 张风捷特烈 on 2020-04-09 /// contact me by email 1981462002@qq.com diff --git a/lib/blocs/search/search_bloc.dart b/lib/widget_system/blocs/search_bloc/search_bloc.dart similarity index 91% rename from lib/blocs/search/search_bloc.dart rename to lib/widget_system/blocs/search_bloc/search_bloc.dart index 2e7981a..d36cc55 100644 --- a/lib/blocs/search/search_bloc.dart +++ b/lib/widget_system/blocs/search_bloc/search_bloc.dart @@ -1,7 +1,6 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_unit/repositories/rep/widget_repository.dart'; +import 'package:flutter_unit/widget_system/repositories/repositories.dart'; import 'search_event.dart'; import 'search_state.dart'; diff --git a/lib/blocs/search/search_event.dart b/lib/widget_system/blocs/search_bloc/search_event.dart similarity index 71% rename from lib/blocs/search/search_event.dart rename to lib/widget_system/blocs/search_bloc/search_event.dart index bd08586..cd71549 100644 --- a/lib/blocs/search/search_event.dart +++ b/lib/widget_system/blocs/search_bloc/search_event.dart @@ -1,5 +1,6 @@ -import 'package:flutter_unit/repositories/dao/widget_dao.dart'; +import 'package:flutter_unit/widget_system/repositories/repositories.dart'; + abstract class SearchEvent{//事件基 const SearchEvent(); diff --git a/lib/blocs/search/search_state.dart b/lib/widget_system/blocs/search_bloc/search_state.dart similarity index 84% rename from lib/blocs/search/search_state.dart rename to lib/widget_system/blocs/search_bloc/search_state.dart index 60254a3..4aca0f8 100644 --- a/lib/blocs/search/search_state.dart +++ b/lib/widget_system/blocs/search_bloc/search_state.dart @@ -1,6 +1,6 @@ -import 'package:flutter_unit/model/widget_model.dart'; +import 'package:flutter_unit/widget_system/repositories/model/widget_model.dart'; abstract class SearchState {//基态 const SearchState(); diff --git a/lib/widget_system/widget_detail/bloc/detail/detail_bloc.dart b/lib/widget_system/blocs/widget_detail_bloc/widget_detail_bloc.dart similarity index 81% rename from lib/widget_system/widget_detail/bloc/detail/detail_bloc.dart rename to lib/widget_system/blocs/widget_detail_bloc/widget_detail_bloc.dart index c7dfa65..d283e77 100644 --- a/lib/widget_system/widget_detail/bloc/detail/detail_bloc.dart +++ b/lib/widget_system/blocs/widget_detail_bloc/widget_detail_bloc.dart @@ -1,10 +1,10 @@ -import 'package:flutter/cupertino.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:flutter_unit/model/widget_model.dart'; -import 'package:flutter_unit/repositories/rep/widget_repository.dart'; +import 'package:flutter_unit/widget_system/repositories/model/widget_model.dart'; +import 'package:flutter_unit/widget_system/repositories/repositories.dart'; -import 'detail_event.dart'; -import 'detail_state.dart'; + +import 'widget_detail_event.dart'; +import 'widget_detail_state.dart'; /// create by 张风捷特烈 on 2020-03-03 /// contact me by email 1981462002@qq.com diff --git a/lib/widget_system/widget_detail/bloc/detail/detail_event.dart b/lib/widget_system/blocs/widget_detail_bloc/widget_detail_event.dart similarity index 88% rename from lib/widget_system/widget_detail/bloc/detail/detail_event.dart rename to lib/widget_system/blocs/widget_detail_bloc/widget_detail_event.dart index 9146437..ce57084 100644 --- a/lib/widget_system/widget_detail/bloc/detail/detail_event.dart +++ b/lib/widget_system/blocs/widget_detail_bloc/widget_detail_event.dart @@ -1,5 +1,5 @@ import 'package:equatable/equatable.dart'; -import 'package:flutter_unit/model/widget_model.dart'; +import 'package:flutter_unit/widget_system/repositories/model/widget_model.dart'; /// create by 张风捷特烈 on 2020-03-03 diff --git a/lib/widget_system/widget_detail/bloc/detail/detail_state.dart b/lib/widget_system/blocs/widget_detail_bloc/widget_detail_state.dart similarity index 83% rename from lib/widget_system/widget_detail/bloc/detail/detail_state.dart rename to lib/widget_system/blocs/widget_detail_bloc/widget_detail_state.dart index ca0e835..ab2d39c 100644 --- a/lib/widget_system/widget_detail/bloc/detail/detail_state.dart +++ b/lib/widget_system/blocs/widget_detail_bloc/widget_detail_state.dart @@ -1,6 +1,6 @@ import 'package:equatable/equatable.dart'; -import 'package:flutter_unit/model/node_model.dart'; -import 'package:flutter_unit/model/widget_model.dart'; +import 'package:flutter_unit/widget_system/repositories/model/node_model.dart'; +import 'package:flutter_unit/widget_system/repositories/model/widget_model.dart'; /// create by 张风捷特烈 on 2020-03-03 diff --git a/lib/widget_system/blocs/widget_system_bloc.dart b/lib/widget_system/blocs/widget_system_bloc.dart new file mode 100644 index 0000000..b59edff --- /dev/null +++ b/lib/widget_system/blocs/widget_system_bloc.dart @@ -0,0 +1,25 @@ +export './widgets_bloc/widgets_bloc.dart'; +export './widgets_bloc/widgets_event.dart'; +export './widgets_bloc/widgets_state.dart'; + +export './widget_detail_bloc/widget_detail_bloc.dart'; +export './widget_detail_bloc/widget_detail_event.dart'; +export './widget_detail_bloc/widget_detail_state.dart'; + +export './category_widget_bloc/category_widget_bloc.dart'; +export './category_widget_bloc/category_widget_event.dart'; +export './category_widget_bloc/category_widget_state.dart'; + +export './category_bloc/category_bloc.dart'; +export './category_bloc/category_event.dart'; +export './category_bloc/category_state.dart'; + + +export './liked_widget_bloc/liked_widget_bloc.dart'; +export './liked_widget_bloc/liked_widget_event.dart'; +export './liked_widget_bloc/liked_widget_state.dart'; + + +export './search_bloc/search_bloc.dart'; +export './search_bloc/search_event.dart'; +export './search_bloc/search_state.dart'; diff --git a/lib/widget_system/widget_home/bloc/widgets_bloc.dart b/lib/widget_system/blocs/widgets_bloc/widgets_bloc.dart similarity index 73% rename from lib/widget_system/widget_home/bloc/widgets_bloc.dart rename to lib/widget_system/blocs/widgets_bloc/widgets_bloc.dart index 8244936..cffb769 100644 --- a/lib/widget_system/widget_home/bloc/widgets_bloc.dart +++ b/lib/widget_system/blocs/widgets_bloc/widgets_bloc.dart @@ -1,6 +1,8 @@ import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:flutter_unit/model/enums.dart'; -import 'package:flutter_unit/repositories/rep/widget_repository.dart'; +import 'package:flutter_unit/widget_system/repositories/model/enums.dart'; +import 'package:flutter_unit/widget_system/repositories/model/widget_model.dart'; +import 'package:flutter_unit/widget_system/repositories/repositories.dart'; + import 'widgets_event.dart'; @@ -25,7 +27,7 @@ class WidgetsBloc extends Bloc { Stream _mapLoadWidgetToState(WidgetFamily family) async* { yield WidgetsLoading(); try { - final widgets = await this.repository.loadWidgets(family); + final List widgets = await repository.loadWidgets(family); yield WidgetsLoaded(widgets: widgets); } catch (err) { print(err); diff --git a/lib/widget_system/widget_home/bloc/widgets_event.dart b/lib/widget_system/blocs/widgets_bloc/widgets_event.dart similarity index 84% rename from lib/widget_system/widget_home/bloc/widgets_event.dart rename to lib/widget_system/blocs/widgets_bloc/widgets_event.dart index a4f1f7b..180e032 100644 --- a/lib/widget_system/widget_home/bloc/widgets_event.dart +++ b/lib/widget_system/blocs/widgets_bloc/widgets_event.dart @@ -1,5 +1,5 @@ import 'package:equatable/equatable.dart'; -import 'package:flutter_unit/model/enums.dart'; +import 'package:flutter_unit/widget_system/repositories/model/enums.dart'; /// create by 张风捷特烈 on 2020-03-03 diff --git a/lib/widget_system/widget_home/bloc/widgets_state.dart b/lib/widget_system/blocs/widgets_bloc/widgets_state.dart similarity index 85% rename from lib/widget_system/widget_home/bloc/widgets_state.dart rename to lib/widget_system/blocs/widgets_bloc/widgets_state.dart index b1b3605..e2c2205 100644 --- a/lib/widget_system/widget_home/bloc/widgets_state.dart +++ b/lib/widget_system/blocs/widgets_bloc/widgets_state.dart @@ -1,8 +1,8 @@ import 'package:equatable/equatable.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_unit/model/enums.dart'; +import 'package:flutter_unit/widget_system/repositories/model/enums.dart'; import 'package:flutter_unit/app/res/cons.dart'; -import 'package:flutter_unit/model/widget_model.dart'; +import 'package:flutter_unit/widget_system/repositories/model/widget_model.dart'; /// create by 张风捷特烈 on 2020-03-03 /// contact me by email 1981462002@qq.com diff --git a/lib/widget_system/repositories/app_start.dart b/lib/widget_system/repositories/app_start.dart index 6194fea..57521ed 100644 --- a/lib/widget_system/repositories/app_start.dart +++ b/lib/widget_system/repositories/app_start.dart @@ -3,10 +3,11 @@ import 'dart:io'; import 'dart:typed_data'; import 'package:flutter/services.dart'; +import 'package:flutter_unit/app/blocs/global/global_state.dart'; import 'package:flutter_unit/app/res/cons.dart'; import 'package:flutter_unit/app/res/sp.dart'; -import 'package:flutter_unit/blocs/global/global_state.dart'; -import 'package:flutter_unit/repositories/local_db.dart'; + +import 'local_db.dart'; import 'package:path/path.dart' as path; import 'package:shared_preferences/shared_preferences.dart'; import 'package:sqflite/sqflite.dart'; diff --git a/lib/widget_system/repositories/dao/category_dao.dart b/lib/widget_system/repositories/dao/category_dao.dart index d26ce85..943229d 100644 --- a/lib/widget_system/repositories/dao/category_dao.dart +++ b/lib/widget_system/repositories/dao/category_dao.dart @@ -66,7 +66,7 @@ class CategoryDao { Future addWidget(int categoryId,int widgetId,) async { String addSql = //插入数据 "INSERT INTO " - "category_widget(widgetId,categoryId) " + "category_widget_bloc(widgetId,categoryId) " "VALUES (?,?);"; return await db.transaction((tran) async => await tran.rawInsert(addSql, [ widgetId, @@ -77,7 +77,7 @@ class CategoryDao { Future addWidgets(int categoryId,List widgetIds) async { String addSql = //插入数据 "INSERT INTO " - "category_widget(widgetId,categoryId) VALUES "; + "category_widget_bloc(widgetId,categoryId) VALUES "; String args = ''; @@ -108,7 +108,7 @@ class CategoryDao { List> data = await db.rawQuery( "SELECT c.id,c.name,c.info,c.color,c.image,c.created,c.updated,c.priority,COUNT(cw.categoryId) as `count`" "FROM widget_category AS c " - "LEFT JOIN category_widget AS cw " + "LEFT JOIN category_widget_bloc AS cw " "ON c.id = cw.categoryId GROUP BY c.id " "ORDER BY priority DESC,created DESC", []); @@ -117,7 +117,7 @@ class CategoryDao { Future> categoryWidgetIds(int id) async { List> data = await db.rawQuery( - "SELECT categoryId FROM `category_widget`" + "SELECT categoryId FROM `category_widget_bloc`" "WHERE widgetId = ?", [id]); return data.toList().map((e)=>e["categoryId"]).toList(); @@ -127,7 +127,7 @@ class CategoryDao { Future deleteCollect(int id) async { await db.execute( - "DELETE FROM category_widget " + "DELETE FROM category_widget_bloc " "WHERE categoryId = ?", [id]); return await db.execute( @@ -138,7 +138,7 @@ class CategoryDao { Future clear() async { await db.execute( - "DELETE FROM category_widget " + "DELETE FROM category_widget_bloc " "WHERE categoryId >0"); return await db.execute( "DELETE FROM widget_category " @@ -149,7 +149,7 @@ class CategoryDao { //插入方法 String deleteSql = //插入数据 "DELETE FROM " - "category_widget WHERE categoryId = ? AND widgetId = ? "; + "category_widget_bloc WHERE categoryId = ? AND widgetId = ? "; return await db .transaction((tran) async => await tran.rawInsert(deleteSql, [ categoryId, @@ -159,7 +159,7 @@ class CategoryDao { Future existWidgetInCollect(int categoryId, int widgetId) async { String sql = //插入数据 - "SELECT COUNT(id) as count FROM category_widget " + "SELECT COUNT(id) as count FROM category_widget_bloc " "WHERE categoryId = ? AND widgetId = ?"; List> rawData = await db.rawQuery(sql, [categoryId, widgetId]); if (rawData.length > 0) { @@ -184,7 +184,7 @@ class CategoryDao { Future>> loadCollectWidgets(int categoryId) async{ String querySql = //插入数据 "SELECT * FROM widget " - "WHERE id IN (SELECT widgetId FROM category_widget WHERE categoryId = ?) " + "WHERE id IN (SELECT widgetId FROM category_widget_bloc WHERE categoryId = ?) " "ORDER BY lever DESC"; return await db.rawQuery(querySql,[categoryId]); @@ -193,7 +193,7 @@ class CategoryDao { Future> loadCollectWidgetIds(int categoryId) async{ String querySql = //插入数据 "SELECT id FROM widget " - "WHERE id IN (SELECT widgetId FROM category_widget WHERE categoryId = ?) " + "WHERE id IN (SELECT widgetId FROM category_widget_bloc WHERE categoryId = ?) " "ORDER BY lever DESC"; var data = await db.rawQuery(querySql,[categoryId]); diff --git a/lib/widget_system/repositories/dao/like_dao.dart b/lib/widget_system/repositories/dao/like_dao.dart index 38e6184..01719ad 100644 --- a/lib/widget_system/repositories/dao/like_dao.dart +++ b/lib/widget_system/repositories/dao/like_dao.dart @@ -25,7 +25,7 @@ class LikeDao { Future like(int widgetId, {bool check = true}) async { if (check) { - // 如果 like ,直接取消,不执行 like 操作 + // 如果 liked_widget_bloc ,直接取消,不执行 liked_widget_bloc 操作 bool liked = await isLiked(widgetId); if (liked) return 0; } @@ -39,7 +39,7 @@ class LikeDao { Future unlike(int widgetId, {bool check = true}) async { if (check) { - // 如果未 like ,直接取消,不执行 unlike 操作 + // 如果未 liked_widget_bloc ,直接取消,不执行 unlike 操作 bool liked = await isLiked(widgetId); if (!liked) return; } diff --git a/lib/widget_system/repositories/dao/node_dao.dart b/lib/widget_system/repositories/dao/node_dao.dart index e295f71..dee3d8a 100644 --- a/lib/widget_system/repositories/dao/node_dao.dart +++ b/lib/widget_system/repositories/dao/node_dao.dart @@ -1,10 +1,6 @@ -import 'package:flutter_unit/repositories/bean/node_po.dart'; +import '../bean/node_po.dart'; import 'package:sqflite/sqflite.dart'; -import '../app_start.dart'; - - - class NodeDao { final Database db; diff --git a/lib/widget_system/repositories/dao/widget_dao.dart b/lib/widget_system/repositories/dao/widget_dao.dart index 11b7767..910e962 100644 --- a/lib/widget_system/repositories/dao/widget_dao.dart +++ b/lib/widget_system/repositories/dao/widget_dao.dart @@ -1,5 +1,5 @@ -import 'package:flutter_unit/model/enums.dart'; +import 'package:flutter_unit/widget_system/repositories/model/enums.dart'; import 'package:sqflite/sqflite.dart'; import '../app_start.dart'; @@ -54,7 +54,7 @@ class WidgetDao { Future>> search(SearchArgs arguments) async { return await db.rawQuery( "SELECT * " - "FROM widget WHERE name like ? AND lever IN(?,?,?,?,?) ORDER BY lever DESC", + "FROM widget WHERE name liked_widget_bloc ? AND lever IN(?,?,?,?,?) ORDER BY lever DESC", ["%${arguments.name}%", ...arguments.stars]); } } diff --git a/lib/widget_system/repositories/local_db.dart b/lib/widget_system/repositories/local_db.dart index 12d1eea..135207b 100644 --- a/lib/widget_system/repositories/local_db.dart +++ b/lib/widget_system/repositories/local_db.dart @@ -1,4 +1,4 @@ -import 'package:flutter_unit/repositories/dao/like_dao.dart'; +import 'dao/like_dao.dart'; import 'package:path/path.dart' as path; import 'package:sqflite/sqflite.dart'; diff --git a/lib/model/category_model.dart b/lib/widget_system/repositories/model/category_model.dart similarity index 95% rename from lib/model/category_model.dart rename to lib/widget_system/repositories/model/category_model.dart index 54d42ee..7302bc9 100644 --- a/lib/model/category_model.dart +++ b/lib/widget_system/repositories/model/category_model.dart @@ -1,7 +1,8 @@ import 'package:equatable/equatable.dart'; import 'package:flutter/material.dart'; import 'package:flutter_unit/app/utils/color_utils.dart'; -import 'package:flutter_unit/repositories/bean/category_po.dart'; +import 'package:flutter_unit/widget_system/repositories/repositories.dart'; + import 'package:intl/intl.dart'; /// create by 张风捷特烈 on 2020-04-21 diff --git a/lib/model/enums.dart b/lib/widget_system/repositories/model/enums.dart similarity index 100% rename from lib/model/enums.dart rename to lib/widget_system/repositories/model/enums.dart diff --git a/lib/model/node_model.dart b/lib/widget_system/repositories/model/node_model.dart similarity index 100% rename from lib/model/node_model.dart rename to lib/widget_system/repositories/model/node_model.dart diff --git a/lib/model/widget_model.dart b/lib/widget_system/repositories/model/widget_model.dart similarity index 92% rename from lib/model/widget_model.dart rename to lib/widget_system/repositories/model/widget_model.dart index 9c3c20a..0e08fef 100644 --- a/lib/model/widget_model.dart +++ b/lib/widget_system/repositories/model/widget_model.dart @@ -1,9 +1,10 @@ import 'package:equatable/equatable.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter_unit/app/utils/convert.dart'; -import 'package:flutter_unit/model/enums.dart'; +import 'package:flutter_unit/widget_system/repositories/model/enums.dart'; import 'package:flutter_unit/app/res/cons.dart'; -import 'package:flutter_unit/repositories/bean/widget_po.dart'; +import 'package:flutter_unit/widget_system/repositories/repositories.dart'; + /// create by 张风捷特烈 on 2020-03-04 /// contact me by email 1981462002@qq.com diff --git a/lib/widget_system/repositories/rep/category_repository.dart b/lib/widget_system/repositories/rep/category_repository.dart index 1f5b087..abf7fd5 100644 --- a/lib/widget_system/repositories/rep/category_repository.dart +++ b/lib/widget_system/repositories/rep/category_repository.dart @@ -1,6 +1,6 @@ -import 'package:flutter_unit/model/category_model.dart'; -import 'package:flutter_unit/model/widget_model.dart'; -import 'package:flutter_unit/repositories/bean/category_po.dart'; +import 'package:flutter_unit/widget_system/repositories/model/category_model.dart'; +import 'package:flutter_unit/widget_system/repositories/model/widget_model.dart'; +import '../bean/category_po.dart'; /// create by 张风捷特烈 on 2020-04-21 /// contact me by email 1981462002@qq.com diff --git a/lib/widget_system/repositories/rep/impl/catagory_db_repository.dart b/lib/widget_system/repositories/rep/impl/catagory_db_repository.dart index dda8a14..356953f 100644 --- a/lib/widget_system/repositories/rep/impl/catagory_db_repository.dart +++ b/lib/widget_system/repositories/rep/impl/catagory_db_repository.dart @@ -1,13 +1,13 @@ import 'dart:async'; import 'dart:convert'; -import 'package:flutter_unit/model/category_model.dart'; -import 'package:flutter_unit/model/widget_model.dart'; -import 'package:flutter_unit/repositories/bean/category_po.dart'; -import 'package:flutter_unit/repositories/bean/widget_po.dart'; -import 'package:flutter_unit/repositories/dao/category_dao.dart'; -import 'package:flutter_unit/repositories/local_db.dart'; -import 'package:flutter_unit/repositories/rep/category_repository.dart'; +import 'package:flutter_unit/widget_system/repositories/model/category_model.dart'; +import 'package:flutter_unit/widget_system/repositories/model/widget_model.dart'; +import '../../bean/category_po.dart'; +import '../../bean/widget_po.dart'; +import '../../dao/category_dao.dart'; +import '../../local_db.dart'; +import '../../rep/category_repository.dart'; import 'package:sqflite/sqflite.dart'; diff --git a/lib/widget_system/repositories/rep/impl/widget_db_repository.dart b/lib/widget_system/repositories/rep/impl/widget_db_repository.dart index 3293a83..9da8c11 100644 --- a/lib/widget_system/repositories/rep/impl/widget_db_repository.dart +++ b/lib/widget_system/repositories/rep/impl/widget_db_repository.dart @@ -1,20 +1,14 @@ +import '../../bean/widget_po.dart'; +import '../../dao/like_dao.dart'; +import '../../local_db.dart'; +import '../../dao/node_dao.dart'; +import '../../dao/widget_dao.dart'; +import '../../rep/widget_repository.dart'; -import 'dart:convert'; -import 'dart:io'; +import 'package:flutter_unit/widget_system/repositories/model/enums.dart'; - -import 'package:flutter_unit/repositories/app_start.dart'; -import 'package:flutter_unit/repositories/bean/widget_po.dart'; -import 'package:flutter_unit/repositories/dao/like_dao.dart'; -import 'package:flutter_unit/repositories/local_db.dart'; -import 'package:flutter_unit/repositories/dao/node_dao.dart'; -import 'package:flutter_unit/repositories/dao/widget_dao.dart'; -import 'package:flutter_unit/model/enums.dart'; - -import 'package:flutter_unit/model/node_model.dart'; -import 'package:flutter_unit/model/widget_model.dart'; -import 'package:flutter_unit/repositories/rep/widget_repository.dart'; -import 'package:path_provider/path_provider.dart'; +import 'package:flutter_unit/widget_system/repositories/model/node_model.dart'; +import 'package:flutter_unit/widget_system/repositories/model/widget_model.dart'; /// create by 张风捷特烈 on 2020-03-03 diff --git a/lib/widget_system/repositories/rep/widget_repository.dart b/lib/widget_system/repositories/rep/widget_repository.dart index ce74aea..287b292 100644 --- a/lib/widget_system/repositories/rep/widget_repository.dart +++ b/lib/widget_system/repositories/rep/widget_repository.dart @@ -1,7 +1,7 @@ -import 'package:flutter_unit/model/enums.dart'; -import 'package:flutter_unit/model/node_model.dart'; -import 'package:flutter_unit/model/widget_model.dart'; -import 'package:flutter_unit/repositories/dao/widget_dao.dart'; +import 'package:flutter_unit/widget_system/repositories/model/enums.dart'; +import 'package:flutter_unit/widget_system/repositories/model/node_model.dart'; +import 'package:flutter_unit/widget_system/repositories/model/widget_model.dart'; +import '../dao/widget_dao.dart'; /// create by 张风捷特烈 on 2020-03-03 /// contact me by email 1981462002@qq.com diff --git a/lib/widget_system/repositories/repositories.dart b/lib/widget_system/repositories/repositories.dart new file mode 100644 index 0000000..aa1fdba --- /dev/null +++ b/lib/widget_system/repositories/repositories.dart @@ -0,0 +1,18 @@ +export './local_storage.dart'; +export './local_db.dart'; + +export './app_start.dart'; +export './dao/category_dao.dart'; +export './dao/like_dao.dart'; +export './dao/node_dao.dart'; +export './dao/widget_dao.dart'; + + +export './bean/category_po.dart'; +export './bean/node_po.dart'; +export './bean/widget_po.dart'; + +export './rep/impl/widget_db_repository.dart'; +export './rep/impl/catagory_db_repository.dart'; +export './rep/widget_repository.dart'; +export './rep/category_repository.dart'; \ No newline at end of file diff --git a/lib/widget_system/widget_category/view/category_detail.dart b/lib/widget_system/views/category_view/category_detail.dart similarity index 93% rename from lib/widget_system/widget_category/view/category_detail.dart rename to lib/widget_system/views/category_view/category_detail.dart index a7ea946..ef0949f 100644 --- a/lib/widget_system/widget_category/view/category_detail.dart +++ b/lib/widget_system/views/category_view/category_detail.dart @@ -3,14 +3,15 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_star/flutter_star.dart'; import 'package:flutter_unit/app/router/unit_router.dart'; -import 'package:flutter_unit/blocs/bloc_exp.dart'; + import 'package:flutter_unit/views/components/permanent/circle_image.dart'; import 'package:flutter_unit/views/components/permanent/circle_text.dart'; import 'package:flutter_unit/views/components/permanent/feedback_widget.dart'; -import 'package:flutter_unit/model/category_model.dart'; -import 'package:flutter_unit/model/widget_model.dart'; -import 'package:flutter_unit/widget_system/widget_detail/bloc/detail/detail_bloc.dart'; -import 'package:flutter_unit/widget_system/widget_detail/bloc/detail/detail_event.dart'; +import 'package:flutter_unit/widget_system/repositories/model/category_model.dart'; +import 'package:flutter_unit/widget_system/repositories/model/widget_model.dart'; +import 'package:flutter_unit/widget_system/blocs/widget_system_bloc.dart'; + + /// create by 张风捷特烈 on 2020-04-22 /// contact me by email 1981462002@qq.com diff --git a/lib/widget_system/widget_category/view/category_page.dart b/lib/widget_system/views/category_view/category_page.dart similarity index 96% rename from lib/widget_system/widget_category/view/category_page.dart rename to lib/widget_system/views/category_view/category_page.dart index 7113660..cccdb5d 100644 --- a/lib/widget_system/widget_category/view/category_page.dart +++ b/lib/widget_system/views/category_view/category_page.dart @@ -2,8 +2,8 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_unit/app/router/unit_router.dart'; -import 'package:flutter_unit/blocs/bloc_exp.dart'; -import 'package:flutter_unit/model/category_model.dart'; +import 'package:flutter_unit/widget_system/blocs/widget_system_bloc.dart'; +import 'package:flutter_unit/widget_system/repositories/model/category_model.dart'; import 'package:flutter_unit/views/components/permanent/circle.dart'; import 'package:flutter_unit/views/components/project/default/loading_shower.dart'; import 'package:flutter_unit/views/components/project/dialogs/delete_category_dialog.dart'; diff --git a/lib/widget_system/widget_category/view/collect_page.dart b/lib/widget_system/views/category_view/collect_page.dart similarity index 98% rename from lib/widget_system/widget_category/view/collect_page.dart rename to lib/widget_system/views/category_view/collect_page.dart index 44f24e5..7ebf10b 100644 --- a/lib/widget_system/widget_category/view/collect_page.dart +++ b/lib/widget_system/views/category_view/collect_page.dart @@ -6,7 +6,7 @@ import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_unit/user_system/component/authentic_widget.dart'; import 'package:flutter_unit/views/components/permanent/circle_image.dart'; import 'package:flutter_unit/views/components/permanent/feedback_widget.dart'; -import 'package:flutter_unit/views/navigation/color_change_bloc.dart'; +import 'package:flutter_unit/app/blocs/color_change_bloc.dart'; import 'sync/upload_button.dart'; import 'sync/async_button.dart'; import 'category_page.dart'; diff --git a/lib/widget_system/widget_category/view/edit_category_panel.dart b/lib/widget_system/views/category_view/edit_category_panel.dart similarity index 95% rename from lib/widget_system/widget_category/view/edit_category_panel.dart rename to lib/widget_system/views/category_view/edit_category_panel.dart index 0644b09..eed7e94 100644 --- a/lib/widget_system/widget_category/view/edit_category_panel.dart +++ b/lib/widget_system/views/category_view/edit_category_panel.dart @@ -2,11 +2,11 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_unit/app/res/style/unit_color.dart'; import 'package:flutter_unit/app/utils/color_utils.dart'; -import 'package:flutter_unit/blocs/bloc_exp.dart'; +import 'package:flutter_unit/widget_system/blocs/widget_system_bloc.dart'; import 'package:flutter_unit/views/components/permanent/edit_panel.dart'; import 'package:flutter_unit/views/components/permanent/input_button.dart'; import 'package:flutter_unit/views/components/project/color_chooser.dart'; -import 'package:flutter_unit/model/category_model.dart'; +import 'package:flutter_unit/widget_system/repositories/model/category_model.dart'; /// create by 张风捷特烈 on 2020-04-23 /// contact me by email 1981462002@qq.com diff --git a/lib/widget_system/widget_category/view/empty_category.dart b/lib/widget_system/views/category_view/empty_category.dart similarity index 96% rename from lib/widget_system/widget_category/view/empty_category.dart rename to lib/widget_system/views/category_view/empty_category.dart index 3244b9b..447748f 100644 --- a/lib/widget_system/widget_category/view/empty_category.dart +++ b/lib/widget_system/views/category_view/empty_category.dart @@ -4,7 +4,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_unit/app/res/color_unit.dart'; -import 'package:flutter_unit/blocs/bloc_exp.dart'; +import 'package:flutter_unit/widget_system/blocs/widget_system_bloc.dart'; import 'package:flutter_unit/views/components/permanent/feedback_widget.dart'; import 'package:flutter_unit/views/components/permanent/panel.dart'; import 'package:sqflite/sqflite.dart'; diff --git a/lib/widget_system/widget_category/view/home_right_drawer.dart b/lib/widget_system/views/category_view/home_right_drawer.dart similarity index 94% rename from lib/widget_system/widget_category/view/home_right_drawer.dart rename to lib/widget_system/views/category_view/home_right_drawer.dart index 03ef701..4d4eaae 100644 --- a/lib/widget_system/widget_category/view/home_right_drawer.dart +++ b/lib/widget_system/views/category_view/home_right_drawer.dart @@ -1,9 +1,9 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:flutter_unit/blocs/bloc_exp.dart'; + import 'package:flutter_unit/views/components/permanent/circle.dart'; import 'package:flutter_unit/views/components/project/unit_drawer_header.dart'; -import 'package:flutter_unit/views/navigation/color_change_bloc.dart'; +import 'package:flutter_unit/app/blocs/color_change_bloc.dart'; import 'edit_category_panel.dart'; diff --git a/lib/widget_system/widget_category/view/like_widget_page.dart b/lib/widget_system/views/category_view/like_widget_page.dart similarity index 89% rename from lib/widget_system/widget_category/view/like_widget_page.dart rename to lib/widget_system/views/category_view/like_widget_page.dart index a4d4c59..b974d91 100644 --- a/lib/widget_system/widget_category/view/like_widget_page.dart +++ b/lib/widget_system/views/category_view/like_widget_page.dart @@ -2,12 +2,11 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_unit/app/router/unit_router.dart'; -import 'package:flutter_unit/blocs/bloc_exp.dart'; + import 'package:flutter_unit/views/components/project/no_more_widget.dart'; -import 'package:flutter_unit/model/widget_model.dart'; +import 'package:flutter_unit/widget_system/repositories/model/widget_model.dart'; import 'package:flutter_unit/views/components/project/items/collect_widget_list_item.dart'; -import 'package:flutter_unit/widget_system/widget_detail/bloc/detail/detail_bloc.dart'; -import 'package:flutter_unit/widget_system/widget_detail/bloc/detail/detail_event.dart'; +import 'package:flutter_unit/widget_system/blocs/widget_system_bloc.dart'; /// create by 张风捷特烈 on 2020/6/16 /// contact me by email 1981462002@qq.com diff --git a/lib/widget_system/widget_category/view/sync/async_button.dart b/lib/widget_system/views/category_view/sync/async_button.dart similarity index 89% rename from lib/widget_system/widget_category/view/sync/async_button.dart rename to lib/widget_system/views/category_view/sync/async_button.dart index 477aff1..1f2e016 100644 --- a/lib/widget_system/widget_category/view/sync/async_button.dart +++ b/lib/widget_system/views/category_view/sync/async_button.dart @@ -3,14 +3,15 @@ import 'dart:convert'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:flutter_unit/app/api/category_api.dart'; + 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/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/point_system/api/category_api.dart'; +import 'package:flutter_unit/widget_system/blocs/widget_system_bloc.dart'; + +import 'package:flutter_unit/widget_system/repositories/model/category_model.dart'; +import 'package:flutter_unit/widget_system/repositories/local_db.dart'; +import 'package:flutter_unit/widget_system/repositories/rep/category_repository.dart'; import 'package:flutter_unit/views/components/permanent/feedback_widget.dart'; /// create by 张风捷特烈 on 2021/2/24 diff --git a/lib/widget_system/widget_category/view/sync/upload_button.dart b/lib/widget_system/views/category_view/sync/upload_button.dart similarity index 89% rename from lib/widget_system/widget_category/view/sync/upload_button.dart rename to lib/widget_system/views/category_view/sync/upload_button.dart index be52298..971237f 100644 --- a/lib/widget_system/widget_category/view/sync/upload_button.dart +++ b/lib/widget_system/views/category_view/sync/upload_button.dart @@ -3,14 +3,16 @@ import 'dart:convert'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:flutter_unit/app/api/category_api.dart'; + 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/point_system/api/category_api.dart'; +import 'package:flutter_unit/widget_system/blocs/widget_system_bloc.dart'; + +import 'package:flutter_unit/widget_system/repositories/model/category_model.dart'; + import 'package:flutter_unit/views/components/permanent/feedback_widget.dart'; +import 'package:flutter_unit/widget_system/repositories/repositories.dart'; /// create by 张风捷特烈 on 2021/2/24 /// contact me by email 1981462002@qq.com diff --git a/lib/views/pages/search/app_search_bar.dart b/lib/widget_system/views/search_view/app_search_bar.dart similarity index 91% rename from lib/views/pages/search/app_search_bar.dart rename to lib/widget_system/views/search_view/app_search_bar.dart index 56ed07f..5a4cfd3 100644 --- a/lib/views/pages/search/app_search_bar.dart +++ b/lib/widget_system/views/search_view/app_search_bar.dart @@ -1,7 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:flutter_unit/blocs/bloc_exp.dart'; -import 'package:flutter_unit/repositories/dao/widget_dao.dart'; + +import 'package:flutter_unit/widget_system/blocs/widget_system_bloc.dart'; +import 'package:flutter_unit/widget_system/repositories/repositories.dart'; class AppSearchBar extends StatefulWidget { diff --git a/lib/views/pages/search/error_page.dart b/lib/widget_system/views/search_view/error_page.dart similarity index 100% rename from lib/views/pages/search/error_page.dart rename to lib/widget_system/views/search_view/error_page.dart diff --git a/lib/views/pages/search/not_search_page.dart b/lib/widget_system/views/search_view/not_search_page.dart similarity index 100% rename from lib/views/pages/search/not_search_page.dart rename to lib/widget_system/views/search_view/not_search_page.dart diff --git a/lib/views/pages/search/serach_page.dart b/lib/widget_system/views/search_view/serach_page.dart similarity index 87% rename from lib/views/pages/search/serach_page.dart rename to lib/widget_system/views/search_view/serach_page.dart index 57cdf21..581a3de 100644 --- a/lib/views/pages/search/serach_page.dart +++ b/lib/widget_system/views/search_view/serach_page.dart @@ -2,20 +2,19 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_unit/app/router/unit_router.dart'; import 'package:flutter_unit/app/res/toly_icon.dart'; -import 'package:flutter_unit/blocs/bloc_exp.dart'; -import 'package:flutter_unit/repositories/dao/widget_dao.dart'; -import 'package:flutter_unit/views/components/permanent/circle.dart'; -import 'package:flutter_unit/views/components/project/default/loading_shower.dart'; -import 'package:flutter_unit/model/widget_model.dart'; -import 'package:flutter_unit/views/components/project/items/widget/techno_widget_list_item.dart'; -import 'package:flutter_unit/views/pages/search/app_search_bar.dart'; -import 'package:flutter_unit/views/pages/search/error_page.dart'; -import 'package:flutter_unit/views/pages/search/not_search_page.dart'; -import 'package:flutter_unit/views/components/permanent/multi_chip_filter.dart'; -import 'package:flutter_unit/widget_system/widget_detail/bloc/detail/detail_bloc.dart'; -import 'package:flutter_unit/widget_system/widget_detail/bloc/detail/detail_event.dart'; +import 'package:flutter_unit/widget_system/repositories/repositories.dart'; + +import 'package:flutter_unit/views/components/permanent/circle.dart'; +import 'package:flutter_unit/views/components/project/default/empty_shower.dart'; +import 'package:flutter_unit/views/components/project/default/loading_shower.dart'; +import 'package:flutter_unit/widget_system/repositories/model/widget_model.dart'; +import 'package:flutter_unit/views/components/project/items/widget/techno_widget_list_item.dart'; +import 'app_search_bar.dart'; +import 'error_page.dart'; +import 'not_search_page.dart'; +import 'package:flutter_unit/views/components/permanent/multi_chip_filter.dart'; +import 'package:flutter_unit/widget_system/blocs/widget_system_bloc.dart'; -import '../../components/project/default/empty_shower.dart'; class SearchPage extends StatefulWidget { diff --git a/lib/widget_system/widget_detail/view/category_end_drawer.dart b/lib/widget_system/views/widget_detail_view/category_end_drawer.dart similarity index 93% rename from lib/widget_system/widget_detail/view/category_end_drawer.dart rename to lib/widget_system/views/widget_detail_view/category_end_drawer.dart index 547b835..51e9fac 100644 --- a/lib/widget_system/widget_detail/view/category_end_drawer.dart +++ b/lib/widget_system/views/widget_detail_view/category_end_drawer.dart @@ -1,12 +1,14 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_unit/app/res/style/unit_text_style.dart'; -import 'package:flutter_unit/blocs/bloc_exp.dart'; -import 'package:flutter_unit/repositories/rep/category_repository.dart'; +import 'package:flutter_unit/widget_system/blocs/widget_system_bloc.dart'; + +import 'package:flutter_unit/widget_system/repositories/repositories.dart'; + import 'package:flutter_unit/views/components/permanent/circle.dart'; import 'package:flutter_unit/views/components/permanent/panel.dart'; -import 'package:flutter_unit/model/category_model.dart'; -import 'package:flutter_unit/model/widget_model.dart'; +import 'package:flutter_unit/widget_system/repositories/model/category_model.dart'; +import 'package:flutter_unit/widget_system/repositories/model/widget_model.dart'; import 'package:flutter_unit/views/components/project/unit_drawer_header.dart'; /// create by 张风捷特烈 on 2020-04-22 diff --git a/lib/widget_system/widget_detail/view/widget_detail_page.dart b/lib/widget_system/views/widget_detail_view/widget_detail_page.dart similarity index 95% rename from lib/widget_system/widget_detail/view/widget_detail_page.dart rename to lib/widget_system/views/widget_detail_view/widget_detail_page.dart index 092e543..e11be75 100644 --- a/lib/widget_system/widget_detail/view/widget_detail_page.dart +++ b/lib/widget_system/views/widget_detail_view/widget_detail_page.dart @@ -1,19 +1,20 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_star/flutter_star.dart'; +import 'package:flutter_unit/app/blocs/global/global_bloc.dart'; +import 'package:flutter_unit/app/blocs/global/global_state.dart'; import 'package:flutter_unit/app/res/cons.dart'; import 'package:flutter_unit/app/res/toly_icon.dart'; import 'package:flutter_unit/app/utils/Toast.dart'; -import 'package:flutter_unit/blocs/bloc_exp.dart'; -import 'package:flutter_unit/model/node_model.dart'; -import 'package:flutter_unit/model/widget_model.dart'; +import 'package:flutter_unit/widget_system/repositories/model/node_model.dart'; +import 'package:flutter_unit/widget_system/repositories/model/widget_model.dart'; import 'package:flutter_unit/views/components/permanent/feedback_widget.dart'; import 'package:flutter_unit/views/components/permanent/panel.dart'; import 'package:flutter_unit/views/components/project/widget_node_panel.dart'; import 'package:flutter_unit/views/widgets/widgets_map.dart'; -import 'package:flutter_unit/widget_system/widget_detail/bloc/detail/detail_bloc.dart'; -import 'package:flutter_unit/widget_system/widget_detail/bloc/detail/detail_event.dart'; -import 'package:flutter_unit/widget_system/widget_detail/bloc/detail/detail_state.dart'; + +import 'package:flutter_unit/widget_system/blocs/widget_system_bloc.dart'; + import 'category_end_drawer.dart'; diff --git a/lib/widget_system/widget_home/view/background.dart b/lib/widget_system/views/widget_home_view/background.dart similarity index 100% rename from lib/widget_system/widget_home/view/background.dart rename to lib/widget_system/views/widget_home_view/background.dart diff --git a/lib/widget_system/widget_home/view/home_drawer.dart b/lib/widget_system/views/widget_home_view/home_drawer.dart similarity index 92% rename from lib/widget_system/widget_home/view/home_drawer.dart rename to lib/widget_system/views/widget_home_view/home_drawer.dart index ce8dedf..9ef04ac 100644 --- a/lib/widget_system/widget_home/view/home_drawer.dart +++ b/lib/widget_system/views/widget_home_view/home_drawer.dart @@ -2,12 +2,11 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_unit/app/res/toly_icon.dart'; import 'package:flutter_unit/app/router/unit_router.dart'; -import 'package:flutter_unit/blocs/bloc_exp.dart'; -import 'package:flutter_unit/blocs/point/point_bloc.dart'; -import 'package:flutter_unit/blocs/point/point_event.dart'; +import 'package:flutter_unit/point_system/blocs/point_system_bloc.dart'; + import 'package:flutter_unit/views/components/flutter/no_div_expansion_tile.dart'; import 'package:flutter_unit/views/components/project/unit_drawer_header.dart'; -import 'package:flutter_unit/views/navigation/color_change_bloc.dart'; +import 'package:flutter_unit/app/blocs/color_change_bloc.dart'; /// create by 张风捷特烈 on 2020-03-26 /// contact me by email 1981462002@qq.com diff --git a/lib/widget_system/widget_home/view/home_page.dart b/lib/widget_system/views/widget_home_view/home_page.dart similarity index 89% rename from lib/widget_system/widget_home/view/home_page.dart rename to lib/widget_system/views/widget_home_view/home_page.dart index f031e24..3fd4895 100644 --- a/lib/widget_system/widget_home/view/home_page.dart +++ b/lib/widget_system/views/widget_home_view/home_page.dart @@ -3,12 +3,13 @@ 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/blocs/global/global_bloc.dart'; +import 'package:flutter_unit/app/blocs/global/global_state.dart'; import 'package:flutter_unit/app/res/cons.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/widget_system/repositories/model/enums.dart'; +import 'package:flutter_unit/widget_system/repositories/model/widget_model.dart'; import 'package:flutter_unit/views/components/permanent/feedback_widget.dart'; import 'package:flutter_unit/views/components/project/default/empty_shower.dart'; @@ -17,12 +18,8 @@ import 'package:flutter_unit/views/components/project/default/loading_shower.dar 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/navigation/color_change_bloc.dart'; -import 'package:flutter_unit/widget_system/widget_detail/bloc/detail/detail_bloc.dart'; -import 'package:flutter_unit/widget_system/widget_detail/bloc/detail/detail_event.dart'; -import 'package:flutter_unit/widget_system/widget_home/bloc/widgets_bloc.dart'; -import 'package:flutter_unit/widget_system/widget_home/bloc/widgets_event.dart'; -import 'package:flutter_unit/widget_system/widget_home/bloc/widgets_state.dart'; +import 'package:flutter_unit/app/blocs/color_change_bloc.dart'; +import 'package:flutter_unit/widget_system/blocs/widget_system_bloc.dart'; import 'toly_app_bar.dart'; import 'background.dart'; diff --git a/lib/widget_system/widget_home/view/toly_app_bar.dart b/lib/widget_system/views/widget_home_view/toly_app_bar.dart similarity index 100% rename from lib/widget_system/widget_home/view/toly_app_bar.dart rename to lib/widget_system/views/widget_home_view/toly_app_bar.dart diff --git a/lib/widget_system/views/widget_system_view.dart b/lib/widget_system/views/widget_system_view.dart new file mode 100644 index 0000000..466f35f --- /dev/null +++ b/lib/widget_system/views/widget_system_view.dart @@ -0,0 +1,11 @@ +export './widget_home_view/home_page.dart'; +export './widget_home_view/home_drawer.dart'; + +export './widget_detail_view/widget_detail_page.dart'; +export './category_view/category_page.dart'; +export './category_view/collect_page.dart'; +export './category_view/home_right_drawer.dart'; +export './category_view/category_detail.dart'; +export './search_view/serach_page.dart'; + +