Files
flutter-todos/lib/logic/icon_setting_page_logic.dart

77 lines
2.6 KiB
Dart

import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:flutter_colorpicker/flutter_colorpicker.dart';
import 'package:todo_list/i10n/localization_intl.dart';
import 'package:todo_list/json/task_icon_bean.dart';
import 'package:todo_list/model/all_model.dart';
import 'package:todo_list/utils/icon_list_util.dart';
import 'package:todo_list/utils/shared_util.dart';
import 'package:todo_list/utils/theme_util.dart';
import 'package:todo_list/widgets/custom_icon_widget.dart';
class IconSettingPageLogic {
final IconSettingPageModel _model;
IconSettingPageLogic(this._model);
void onIconPress(IconBean iconBean) {
showDialog(
barrierDismissible: false,
context: _model.context,
builder: (ctx) {
return AlertDialog(
elevation: 0.0,
contentPadding: EdgeInsets.fromLTRB(20, 0, 20, 0),
title: Text(DemoLocalizations.of(_model.context).customIcon),
content: CustomIconWidget(
iconData: IconBean.fromBean(iconBean),
onApplyTap: (color) async{
_model.currentPickerColor = color;
ColorBean colorBean =
ColorBean.fromColor(_model.currentPickerColor);
TaskIconBean taskIconBean = TaskIconBean(
taskName: _model.currentIconName.isEmpty
? DemoLocalizations.of(_model.context).defaultIconName
: _model.currentIconName,
colorBean: colorBean,
iconBean: iconBean);
final data = jsonEncode(taskIconBean.toMap());
final canAddMore = await SharedUtil.instance.readAndSaveList(Keys.taskIconBeans, data);
if(!canAddMore){
showCanNotAddIcon();
}
getTaskList();
},
pickerColor: _model.currentPickerColor,
onTextChange: (text){
final name = text.isEmpty ? DemoLocalizations.of(_model.context).defaultIconName : text;
_model.currentIconName = name;
},
)
);
});
}
void getTaskList() async {
final list =
await IconListUtil.getInstance().getIconWithCache(_model.context);
_model.taskIcons.clear();
_model.taskIcons.addAll(list);
_model.refresh();
}
void showCanNotAddIcon(){
showDialog(context: _model.context,builder: (ctx){
return AlertDialog(
content: Text(DemoLocalizations.of(_model.context).canNotAddMoreIcon),
);
});
}
void removeIcon(){
}
}