diff --git a/README.md b/README.md index 3f4af6f..c630241 100644 --- a/README.md +++ b/README.md @@ -24,10 +24,10 @@ ``` a1@toly ~ % flutter --version -Flutter 1.22.5 • channel stable • https://github.com/flutter/flutter.git -Framework • revision 7891006299 (4 weeks ago) • 2020-12-10 11:54:40 -0800 -Engine • revision ae90085a84 -Tools • Dart 2.10.4 +Flutter 1.22.6 • channel stable • https://github.com/flutter/flutter.git +Framework • revision 9b2d32b605 (4 weeks ago) • 2021-01-22 14:36:39 -0800 +Engine • revision 2f0af37152 +Tools • Dart 2.10.5 ``` --- diff --git a/lib/model/category_model.dart b/lib/model/category_model.dart index f0d79c9..15e7287 100644 --- a/lib/model/category_model.dart +++ b/lib/model/category_model.dart @@ -8,7 +8,7 @@ import 'package:intl/intl.dart'; /// contact me by email 1981462002@qq.com /// 说明: 收藏夹展示数据模型 -class CategoryModel extends Equatable{ +class CategoryModel extends Equatable { final int id; final String name; final String info; @@ -19,12 +19,12 @@ class CategoryModel extends Equatable{ CategoryModel( {this.name, - this.id, - this.info, - this.createDate, - this.imageCover, - this.count, - this.color}); + this.id, + this.info, + this.createDate, + this.imageCover, + this.count, + this.color}); bool get canDelete => id > 1; @@ -42,19 +42,27 @@ class CategoryModel extends Equatable{ @override List get props => [ - id, - name, - info, - createDate, - imageCover, - count, - color, - ]; + id, + name, + info, + createDate, + imageCover, + count, + color, + ]; @override String toString() { return 'CategoryModel{id: $id, name: $name, info: $info, createDate: $createDate, imageCover: $imageCover, count: $count, color: $color}'; } - -} \ No newline at end of file + Map toJson() => { + "id": this.id, + "name": this.name, + "info": this.info, + "createDate": this.createDate, + "imageCover": this.imageCover, + "count": this.count, + "color": this.color.value, + }; +} diff --git a/lib/views/pages/about/version_info.dart b/lib/views/pages/about/version_info.dart index 07a7974..287d708 100644 --- a/lib/views/pages/about/version_info.dart +++ b/lib/views/pages/about/version_info.dart @@ -1,3 +1,5 @@ +import 'dart:io'; + import 'package:flutter/material.dart'; import 'package:flutter_unit/app/res/cons.dart'; import 'package:flutter_unit/app/res/str_unit.dart'; @@ -5,6 +7,7 @@ import 'package:flutter_unit/app/router/unit_router.dart'; import 'package:flutter_unit/app/res/style/behavior/no_scroll_behavior.dart'; import 'package:flutter_unit/views/components/permanent/circle_image.dart'; import 'package:flutter_unit/views/components/permanent/feedback_widget.dart'; +import 'package:path_provider/path_provider.dart'; import 'package:url_launcher/url_launcher.dart'; /// create by 张风捷特烈 on 2020/6/16 @@ -88,7 +91,7 @@ class VersionInfo extends StatelessWidget { ListTile( title: Text('检查数据库新版本',style: labelStyle), trailing: _nextIcon(context), - onTap: () { + onTap: () async{ }, ), diff --git a/lib/views/pages/category/category_page.dart b/lib/views/pages/category/category_page.dart index 3adbd9d..3a26070 100644 --- a/lib/views/pages/category/category_page.dart +++ b/lib/views/pages/category/category_page.dart @@ -1,3 +1,4 @@ +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'; @@ -29,6 +30,7 @@ class CategoryPage extends StatelessWidget { SliverOverlapInjector( handle: NestedScrollView.sliverOverlapAbsorberHandleFor(ctx), ), + _buildContent(context, state), SliverToBoxAdapter( child: NoMoreWidget(), diff --git a/lib/views/pages/category/collect_page.dart b/lib/views/pages/category/collect_page.dart index b984c3c..b056ffb 100644 --- a/lib/views/pages/category/collect_page.dart +++ b/lib/views/pages/category/collect_page.dart @@ -1,10 +1,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/router/unit_router.dart'; import 'package:flutter_unit/blocs/bloc_exp.dart'; +import 'package:flutter_unit/model/category_model.dart'; +import 'package:flutter_unit/repositories/itf/category_repository.dart'; import 'package:flutter_unit/views/components/permanent/circle_image.dart'; import 'package:flutter_unit/views/components/permanent/feedback_widget.dart'; +import 'package:path_provider/path_provider.dart'; import 'category_page.dart'; import 'like_widget_page.dart'; @@ -67,7 +72,7 @@ class _CollectPageState extends State with AutomaticKeepAliveClient ), )), backgroundColor: BlocProvider.of(context).state.color, - actions: [_buildAddActionBuilder(context)], + actions: [_buildSyncAction(context),_buildAddAction(context)], title: Text( '收藏集 CollectUnit', style: TextStyle( @@ -110,13 +115,26 @@ class _CollectPageState extends State with AutomaticKeepAliveClient ); } - Widget _buildAddActionBuilder(BuildContext context) => IconButton( + Widget _buildAddAction(BuildContext context) => IconButton( icon: Icon( Icons.add, size: 30, ), onPressed: () => Scaffold.of(context).openEndDrawer()); + Widget _buildSyncAction(BuildContext context) => IconButton( + icon: Icon( + Icons.cloud_upload_outlined, + size: 25, + ), + onPressed: () async{ + final dir = await getDownloadsDirectory(); + // CategoryRepository rep = BlocProvider.of(context).repository; + // List loadCategories = await rep.loadCategories(); + // String json1= jsonEncode(loadCategories); + // print(json1); + }); + @override bool get wantKeepAlive => true; } diff --git a/lib/views/pages/category/like_widget_page.dart b/lib/views/pages/category/like_widget_page.dart index 2301f03..6dfc0ca 100644 --- a/lib/views/pages/category/like_widget_page.dart +++ b/lib/views/pages/category/like_widget_page.dart @@ -1,3 +1,4 @@ +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'; @@ -8,11 +9,12 @@ import 'package:flutter_unit/views/components/project/items/collect_widget_list_ /// create by 张风捷特烈 on 2020/6/16 /// contact me by email 1981462002@qq.com -/// 说明: +/// 说明: class LikeWidgetPage extends StatelessWidget { - final SliverGridDelegate gridDelegate = const SliverGridDelegateWithFixedCrossAxisCount( + final SliverGridDelegate gridDelegate = + const SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 2, mainAxisSpacing: 10, crossAxisSpacing: 10, @@ -21,37 +23,36 @@ class LikeWidgetPage extends StatelessWidget { @override Widget build(BuildContext context) { - return BlocBuilder( - builder: (ctx, state) { - return CustomScrollView( - slivers: [ - SliverOverlapInjector( - handle: NestedScrollView.sliverOverlapAbsorberHandleFor(ctx), - ), - _buildContent(context, state), - SliverToBoxAdapter( - child: NoMoreWidget(), - ) - ], - ); - }); + return BlocBuilder(builder: (ctx, state) { + return CustomScrollView( + slivers: [ + SliverOverlapInjector( + handle: NestedScrollView.sliverOverlapAbsorberHandleFor(ctx), + ), + _buildContent(context, state), + SliverToBoxAdapter( + child: NoMoreWidget(), + ) + ], + ); + }); } Widget _buildContent(BuildContext context, LikeWidgetState state) { return SliverPadding( - padding: EdgeInsets.only(top:10, left: 10, right: 10, bottom: 0), + padding: EdgeInsets.only(top: 10, left: 10, right: 10, bottom: 0), sliver: SliverGrid( delegate: SliverChildBuilderDelegate( - (_, index) => Container( - child: GestureDetector( - onTap: () => - _toDetailPage(context, state.widgets[index]), - child: CollectWidgetListItem( - data: state.widgets[index], - onDeleteItemClick: (model) => - _deleteCollect(context, model), - )), - ), + (_, index) => Container( + child: GestureDetector( + onTap: () => + _toDetailPage(context, state.widgets[index]), + child: CollectWidgetListItem( + data: state.widgets[index], + onDeleteItemClick: (model) => + _deleteCollect(context, model), + )), + ), childCount: state.widgets.length), gridDelegate: gridDelegate), ); @@ -65,5 +66,4 @@ class LikeWidgetPage extends StatelessWidget { BlocProvider.of(context).add(FetchWidgetDetail(model)); Navigator.pushNamed(context, UnitRouter.widget_detail, arguments: model); } - }