diff --git a/lib/config/provider_config.dart b/lib/config/provider_config.dart index 142aee3..c4b0d56 100644 --- a/lib/config/provider_config.dart +++ b/lib/config/provider_config.dart @@ -32,32 +32,41 @@ class ProviderConfig { } ChangeNotifierProvider getTaskDetailPage( - int index, TaskBean taskBean,) { + int index, + TaskBean taskBean, + ) { return ChangeNotifierProvider( builder: (context) => TaskDetailPageModel(taskBean), - child: TaskDetailPage(index,), + child: TaskDetailPage( + index, + ), ); } - ChangeNotifierProvider getEditTaskPage(TaskIconBean taskIcon,{MainPageModel mainPageModel, TaskBean taskBean}){ - return ChangeNotifierProvider( - builder:(context) => EditTaskPageModel(oldTaskBean: taskBean), - child: EditTaskPage(taskIcon,mainPageModel: mainPageModel,), - ); + ChangeNotifierProvider getEditTaskPage( + TaskIconBean taskIcon, + {MainPageModel mainPageModel, + TaskBean taskBean}) { + return ChangeNotifierProvider( + builder: (context) => EditTaskPageModel(oldTaskBean: taskBean), + child: EditTaskPage( + taskIcon, + mainPageModel: mainPageModel, + ), + ); } - ChangeNotifierProvider getIconSettingPage(){ - return ChangeNotifierProvider( - builder:(context) => IconSettingPageModel(), - child: IconSettingPage(), - ); - } - - ChangeNotifierProvider getThemePage(){ - return ChangeNotifierProvider( - builder:(context) => ThemePageModel(), - child: ThemePage(), - ); - } + ChangeNotifierProvider getIconSettingPage() { + return ChangeNotifierProvider( + builder: (context) => IconSettingPageModel(), + child: IconSettingPage(), + ); + } + ChangeNotifierProvider getThemePage() { + return ChangeNotifierProvider( + builder: (context) => ThemePageModel(), + child: ThemePage(), + ); + } } diff --git a/lib/json/task_icon_bean.dart b/lib/json/task_icon_bean.dart index b34f4b0..cb4c264 100644 --- a/lib/json/task_icon_bean.dart +++ b/lib/json/task_icon_bean.dart @@ -6,7 +6,6 @@ import 'package:flutter/services.dart'; import 'package:todo_list/json/color_bean.dart'; export 'package:todo_list/json/color_bean.dart'; - class TaskIconBean { String taskName; IconBean iconBean; @@ -30,7 +29,6 @@ class TaskIconBean { return list; } - Map toMap() { return { 'taskName': taskName, @@ -40,7 +38,6 @@ class TaskIconBean { } } - class IconBean { int codePoint; String fontFamily; @@ -50,13 +47,13 @@ class IconBean { IconBean( {this.codePoint, - this.fontFamily, - this.fontPackage, - this.iconName, - this.matchTextDirection}); + this.fontFamily, + this.fontPackage, + this.iconName, + this.matchTextDirection}); - static IconData fromBean(IconBean bean) => - IconData(bean.codePoint, fontFamily: bean.fontFamily, fontPackage: bean.fontPackage == "null" ? null : bean.fontPackage); + static IconData fromBean(IconBean bean) => IconData(bean.codePoint, + fontFamily: bean.fontFamily,); static IconBean fromMap(Map map) { IconBean bean = new IconBean(); @@ -64,7 +61,7 @@ class IconBean { bean.fontFamily = map['fontFamily']; bean.fontPackage = map['fontPackage']; bean.iconName = map['iconName']; - bean.matchTextDirection = map['taskStatus'] == 'ture'; + bean.matchTextDirection = map['matchTextDirection'] == 'ture'; return bean; } @@ -93,10 +90,10 @@ class IconBean { Map toMap() { return { 'codePoint': codePoint.toString(), - 'fontFamily': fontFamily??"", - 'fontPackage': fontPackage??"", - 'iconName': iconName??"", + 'fontFamily': fontFamily ?? "", + 'fontPackage': fontPackage ?? "", + 'iconName': iconName ?? "", 'matchTextDirection': matchTextDirection.toString() }; } -} \ No newline at end of file +} diff --git a/lib/logic/edit_page_task_logic.dart b/lib/logic/edit_page_task_logic.dart index 1a9468a..b553717 100644 --- a/lib/logic/edit_page_task_logic.dart +++ b/lib/logic/edit_page_task_logic.dart @@ -197,13 +197,22 @@ class EditTaskPageLogic { //修改旧的任务 void submitOldTask() async{ - TaskBean taskBean = await transformDataToBean(id: _model.oldTaskBean.id); + TaskBean taskBean = await transformDataToBean(id: _model.oldTaskBean.id,overallProgress: _getOverallProgress()); DBProvider.db.updateTask(taskBean); _model.mainPageModel.logic.getTasks(); Navigator.of(_model.context).popUntil((route) => route.isFirst); } - Future transformDataToBean({int id}) async { + double _getOverallProgress(){ + int length = _model.taskDetails.length; + double overallProgress = 0.0; + for(int i = 0; i < length;i++){ + overallProgress += _model.taskDetails[i].itemProgress / length; + } + return overallProgress; + } + + Future transformDataToBean({int id, double overallProgress = 0.0}) async { final account = await SharedUtil.instance.getString(Keys.account) ?? "default"; final taskName = _model.currentTaskName.isEmpty ? _model.taskIcon.taskName : _model.currentTaskName; TaskBean taskBean = TaskBean( @@ -216,6 +225,7 @@ class EditTaskPageLogic { deadLine: _model.deadLine?.toIso8601String(), detailList: _model.taskDetails, taskIconBean: _model.taskIcon, + overallProgress: overallProgress, ); if(id != null){ taskBean.id = id; diff --git a/lib/pages/task_detail_page.dart b/lib/pages/task_detail_page.dart index 6bcb46b..ab45332 100644 --- a/lib/pages/task_detail_page.dart +++ b/lib/pages/task_detail_page.dart @@ -23,10 +23,12 @@ class TaskDetailPage extends StatelessWidget { final globalModel = Provider.of(context); final mainPageModel = globalModel.mainPageModel; model.setContext(context); - final taskColor = globalModel.isCardChangeWithBg ? Theme.of(context).primaryColor : ColorBean.fromBean(model.taskBean.taskIconBean.colorBean); + final taskColor = globalModel.isCardChangeWithBg + ? Theme.of(context).primaryColor + : ColorBean.fromBean(model.taskBean.taskIconBean.colorBean); return WillPopScope( - onWillPop: (){ + onWillPop: () { model.logic.exitPage(); }, child: Stack( @@ -45,8 +47,11 @@ class TaskDetailPage extends StatelessWidget { iconTheme: IconThemeData(color: taskColor), leading: model.isAnimationComplete && !model.isExiting ? IconButton( - icon: Icon(Platform.isAndroid ? Icons.arrow_back : Icons.arrow_back_ios), - onPressed: model.logic.exitPage,) + icon: Icon(Platform.isAndroid + ? Icons.arrow_back + : Icons.arrow_back_ios), + onPressed: model.logic.exitPage, + ) : SizedBox(), elevation: 0, backgroundColor: Colors.transparent, @@ -73,32 +78,55 @@ class TaskDetailPage extends StatelessWidget { )), Expanded( child: Container( - margin: EdgeInsets.only( - left: 50, top: 20, right: 50, bottom: 20), + margin: EdgeInsets.only(top: 20), child: !model.isExiting - ? ListView( - children: List.generate( + ? NotificationListener< + OverscrollIndicatorNotification>( + onNotification: (overScroll) { + overScroll.disallowGlow(); + }, + child: ListView( + children: List.generate( model?.taskBean?.detailList?.length ?? 0, (index) { - TaskDetailBean taskDetailBean = - model.taskBean.detailList[index]; - return TaskDetailItem( - index: index, - itemProgress: taskDetailBean.itemProgress, - itemName: taskDetailBean.taskDetailName, - iconColor: taskColor, - onProgressChanged: (progress) { - model.logic.refreshProgress( - taskDetailBean, progress, mainPageModel); - model.refresh(); - }, - onChecked: (progress) { - model.logic.refreshProgress( - taskDetailBean, progress, mainPageModel); - model.refresh(); - }, - ); - })) + TaskDetailBean taskDetailBean = + model.taskBean.detailList[index]; + return Container( + margin: EdgeInsets.only( + bottom: index == + model.taskBean.detailList + .length - + 1 + ? 20 + : 0, + left: 50,right: 50 + ), + child: TaskDetailItem( + index: index, + itemProgress: + taskDetailBean.itemProgress, + itemName: + taskDetailBean.taskDetailName, + iconColor: taskColor, + onProgressChanged: (progress) { + model.logic.refreshProgress( + taskDetailBean, + progress, + mainPageModel); + model.refresh(); + }, + onChecked: (progress) { + model.logic.refreshProgress( + taskDetailBean, + progress, + mainPageModel); + model.refresh(); + }, + ), + ); + }, + ), + )) : SizedBox(), ), ) diff --git a/lib/utils/icon_utils.dart b/lib/utils/icon_utils.dart index f27bce4..a292514 100644 --- a/lib/utils/icon_utils.dart +++ b/lib/utils/icon_utils.dart @@ -16,7 +16,7 @@ class IconUtil { List get icons => _icons; - + List get iconNames => _iconNames; List _icons = [ @@ -1007,7 +1007,7 @@ class IconUtil { Icons.zoom_out_map ]; - List iconNames = [ + List _iconNames = [ "threesixty", "threed_rotation", "four_k",