Commit 09fd5b57a224d7f6e0be4bf09ec942894dcda1f1

Authored by “gaiyaguang”
2 parents f625f95d 4a82380f

快捷备注

... ... @@ -11,14 +11,14 @@ if (flutterRoot == null) {
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}
def flutterVersionCode = "152"
def flutterVersionCode = "153"
if (flutterVersionCode == null) {
flutterVersionCode = '152'
flutterVersionCode = '153'
}
def flutterVersionName = "1.5.2"
def flutterVersionName = "1.5.3"
if (flutterVersionName == null) {
flutterVersionName = '1.5.2'
flutterVersionName = '1.5.3'
}
apply plugin: 'com.android.application'
... ...
<<<<<<< HEAD
83b3ddec6f4d9a6ed2f11de1a0a1915e
=======
c71e777004aab201609920eac28801f9
>>>>>>> 2406ff27ef5df44d08bdbc317457d4068c568441
7babc7873f8d177769b987ba4c6c2911
\ No newline at end of file
... ...
... ... @@ -152,4 +152,4 @@ SPEC CHECKSUMS:
PODFILE CHECKSUM: a75497545d4391e2d394c3668e20cfb1c2bbd4aa
COCOAPODS: 1.9.1
COCOAPODS: 1.9.3
... ...
... ... @@ -34,7 +34,7 @@ Future<void> main() async {
Routes.configureRoutes(router);
App.router = router;
App.setupLocator();
LogUtil.init(isDebug: false, tag: 'ONE_KEY');
LogUtil.init(isDebug: true, tag: 'ONE_KEY');
Provider.debugCheckInvalidValueType = null;
await initializeDateFormatting();
Utils.changeStatusColor();
... ...
import 'package:json_annotation/json_annotation.dart';
part 'remark.g.dart';
@JsonSerializable()
class Remark extends Object {
@JsonKey(name: 'id')
String id;
@JsonKey(name: 'uid')
String uid;
@JsonKey(name: 'often_use')
String oftenUse;
@JsonKey(name: 'custom')
String custom;
@JsonKey(name: 'cdate')
String cdate;
bool selected = false;
Remark();
factory Remark.fromJson(Map<String, dynamic> srcJson) =>
_$RemarkFromJson(srcJson);
Map<String, dynamic> toJson() => _$RemarkToJson(this);
}
... ...
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'remark.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
Remark _$RemarkFromJson(Map<String, dynamic> json) {
return Remark()
..id = json['id'] as String
..uid=json['uid'] as String
..oftenUse=json['often_use'] as String
..custom=json['custom'] as String
..cdate = json['cdate'] as String;
}
Map<String, dynamic> _$RemarkToJson(Remark instance) => <String, dynamic>{
'id': instance.id,
'uid': instance.uid,
'often_use': instance.oftenUse,
'custom': instance.custom,
'cdate': instance.cdate,
};
... ...
... ... @@ -45,4 +45,12 @@ class HttpUrl {
static const String set_order_time =
"?service=App.Seller.SetReOrderTime"; //在线预订配置-接单时间
static const String get_custom_remark=
"?service=App.User.GetCustomRemark"; //获取常用备注
static const String del_custom_remark=
"?service=App.User.DelCustomRemark"; //删除常用备注
static const String add_custom_remark=
"?service=App.User.AddCustomRemark"; //添加常用备注
}
... ...
... ... @@ -2,16 +2,18 @@ import 'dart:convert';
import 'dart:ui';
import 'package:common_utils/common_utils.dart';
// import 'package:contacts_service/contacts_service.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_screenutil/screenutil.dart';
import 'package:one_key/models/notebook_detail.dart';
import 'package:one_key/models/remark.dart';
import 'package:one_key/models/reserve_info_model.dart';
import 'package:one_key/provider/notebook_detail_change_model.dart';
import 'package:one_key/provider/notebook_detail_model.dart';
import 'package:one_key/provider/remark_manager_model.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/res/styles.dart';
import 'package:one_key/utils/dialog_util.dart';
import 'package:one_key/utils/event_bus.dart';
import 'package:one_key/utils/misc.dart';
... ... @@ -23,7 +25,6 @@ import 'package:one_key/widgets/common_button.dart';
import 'package:one_key/widgets/h_empty_view.dart';
import 'package:one_key/widgets/new_table_item.dart';
import 'package:one_key/widgets/round_button.dart';
import 'package:one_key/widgets/table_item.dart';
import 'package:one_key/widgets/v_empty_view.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:provider/provider.dart';
... ... @@ -51,6 +52,7 @@ class _NoteBookChangePageState extends State<NoteBookChangePage> {
FocusNode _needNode = FocusNode();
NotebookDetailModel detailModel = NotebookDetailModel();
EasyContactPicker _contactPicker = EasyContactPicker();
RemarkManagerModel remarkManagerModel;
@override
void initState() {
... ... @@ -68,6 +70,10 @@ class _NoteBookChangePageState extends State<NoteBookChangePage> {
widget.detailEntity.pnum,
widget.detailEntity.tables);
_initData();
Map<String, String> params = {
"uid": Provider.of<UserModel>(context, listen: false).user.openid
};
remarkManagerModel.getRemarks(context, params);
// //输入框焦点
// _nameNode.addListener(() {
// if (!_nameNode.hasFocus) {
... ... @@ -144,8 +150,9 @@ class _NoteBookChangePageState extends State<NoteBookChangePage> {
}
if (j ==
_notebookDetailChangeModel.dateList.length - 1) {
String selectStr =
_notebookDetailChangeModel.dateList[2]['title']+" 00:00:00";
String selectStr = _notebookDetailChangeModel
.dateList[2]['title'] +
" 00:00:00";
_calendWidget(DateUtil.getDateTime(selectStr));
}
}
... ... @@ -307,7 +314,8 @@ class _NoteBookChangePageState extends State<NoteBookChangePage> {
// _createDateText(day);
dateTime = day;
int dateTimeMill = day.millisecondsSinceEpoch;
String dateText = DateUtil.formatDateMs(dateTimeMill, format: 'yyyy-MM-dd');
String dateText =
DateUtil.formatDateMs(dateTimeMill, format: 'yyyy-MM-dd');
bool isThird = true;
for (int i = 0; i < _notebookDetailChangeModel.dateList.length; i++) {
_notebookDetailChangeModel.dateList[i]['select'] = false;
... ... @@ -632,43 +640,117 @@ class _NoteBookChangePageState extends State<NoteBookChangePage> {
MyDivider(ScreenUtil().setWidth(335 * 2), ScreenUtil().setWidth(2),
color: MyColours.color_F1F0F4),
VEmptyView(52),
TextField(
maxLines: 1,
inputFormatters: [LengthLimitingTextInputFormatter(25)],
//输入文本的样式
style: TextStyle(
fontSize: ScreenUtil().setSp(34),
color: MyColours.color_353535),
controller: _notebookDetailChangeModel.customController,
focusNode: _needNode,
// textAlignVertical: TextAlignVertical.top,
decoration: InputDecoration(
hintText: "客户要求(25字以内,选填)",
hintStyle: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setSp(34),
Row(
children: [
Expanded(
child: TextField(
maxLines: 1,
inputFormatters: [LengthLimitingTextInputFormatter(25)],
//输入文本的样式
style: TextStyle(
fontSize: ScreenUtil().setSp(34),
color: MyColours.color_353535),
controller: _notebookDetailChangeModel.customController,
focusNode: _needNode,
// textAlignVertical: TextAlignVertical.top,
decoration: InputDecoration(
hintText: "客户要求(25字以内,选填)",
hintStyle: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setSp(34),
),
// contentPadding:
// EdgeInsets.only(bottom: ScreenUtil().setWidth(17)),
border: InputBorder.none,
),
onChanged: (value) {},
onEditingComplete: () {
print('fff');
_needNode.unfocus();
},
// keyboardType: TextInputType.number,
)),
InkWell(
onTap: () {
DialogUtil.showRemarkDialog(
context, remarkManagerModel.remarks, (item) {
int index = remarkManagerModel.remarks.indexOf(item);
_refreshRemark(remarkManagerModel.remarks, index);
});
},
child: Container(
margin: EdgeInsets.only(left: ScreenUtil().setWidth(40)),
width: ScreenUtil().setWidth(122),
height: ScreenUtil().setWidth(42),
child: Text(
'快速备注',
style: TextStyle(
fontSize: ScreenUtil().setSp(30),
color: MyColours.color_199095),
),
),
),
// contentPadding:
// EdgeInsets.only(bottom: ScreenUtil().setWidth(17)),
border: InputBorder.none,
),
onChanged: (value) {},
onEditingComplete: () {
print('fff');
_needNode.unfocus();
},
// keyboardType: TextInputType.number,
],
),
VEmptyView(40),
MyDivider(ScreenUtil().setWidth(335 * 2), ScreenUtil().setWidth(2),
color: MyColours.color_F1F0F4),
// VEmptyView(72),
VEmptyView(30),
_remarkListWidget()
// VEmptyView(62),
],
),
);
}
_remarkListWidget() {
List<Remark> remark = [];
if (remarkManagerModel.remarks.length > 4) {
remark = remarkManagerModel.remarks.sublist(0, 5);
} else {
remark = remarkManagerModel.remarks;
}
return Container(
height: ScreenUtil().setWidth(50),
child: ListView.builder(
shrinkWrap: true,
itemCount: remark.length,
scrollDirection: Axis.horizontal,
itemBuilder: (BuildContext contxt, int index) {
return remarkButton(
content: remark[index].custom,
isSelect: remark[index].selected,
onPress: () {
setState(() {
remark[index].selected = !remark[index].selected;
});
_refreshRemark(remark, index);
});
}),
);
}
_refreshRemark(List<Remark> remark, int index) {
String currentRemark = '';
for (int i = 0; i < remark.length; i++) {
if (remark[i].selected) {
if (currentRemark.length == 0) {
currentRemark += '${remark[i].custom}';
} else {
currentRemark += '、${remark[i].custom}';
}
}
}
if (currentRemark.length > 25) {
Utils.showToast('备注字数超过25个字!');
remark[index].selected = !remark[index].selected;
} else {
setState(() {
_notebookDetailChangeModel.customController.text = currentRemark;
});
}
}
///底部弹框,设置时间30分钟间隔布局
_showDateChooseWidget(BuildContext context) async {
List tempMndList = [];
... ... @@ -725,7 +807,8 @@ class _NoteBookChangePageState extends State<NoteBookChangePage> {
),
Padding(
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(60),vertical: ScreenUtil().setWidth(40)),
horizontal: ScreenUtil().setWidth(60),
vertical: ScreenUtil().setWidth(40)),
child: GridView.builder(
padding:
EdgeInsets.only(top: ScreenUtil().setWidth(20)),
... ... @@ -822,7 +905,8 @@ class _NoteBookChangePageState extends State<NoteBookChangePage> {
//用户选择不在弹出权限提示框
print('never');
DialogUtil.openAlertDialog(
context, '未获得通讯录权限', "请在手机的权限管理里,将通讯录权限开启", '去设置',340.0, onTap: () {
context, '未获得通讯录权限', "请在手机的权限管理里,将通讯录权限开启", '去设置', 340.0,
onTap: () {
openSetting();
Navigator.pop(context, '');
});
... ... @@ -868,6 +952,7 @@ class _NoteBookChangePageState extends State<NoteBookChangePage> {
Widget build(BuildContext context) {
_notebookDetailChangeModel =
Provider.of<NotebookDetailChangeModel>(context, listen: true);
remarkManagerModel = Provider.of<RemarkManagerModel>(context, listen: true);
return GestureDetector(
behavior: HitTestBehavior.translucent,
onTap: () {
... ... @@ -1126,3 +1211,29 @@ class _ButtonState extends State<CustomButton> {
);
}
}
Widget remarkButton({GestureTapCallback onPress, content, isSelect = false}) {
return InkWell(
onTap: onPress,
child: Container(
height: ScreenUtil().setHeight(48),
margin: EdgeInsets.only(right: ScreenUtil().setWidth(20)),
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(20),
vertical: ScreenUtil().setWidth(6)),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(ScreenUtil().setWidth(10)),
color: isSelect ? MyColours.color_199095 : MyColours.color_f5f5f5,
),
child: Align(
alignment: Alignment.center,
child: Text(
content,
style: TextStyle(
color: isSelect ? Colors.white : MyColours.color_353535,
fontSize: ScreenUtil().setSp(28)),
),
),
),
);
}
... ...
... ... @@ -203,6 +203,18 @@ class MyPageState extends State<MyPage> with WidgetsBindingObserver {
NavigatorUtil.goReceiveOrdersTimeSetPage(context);
},
),
MyDivider(
double.infinity,
ScreenUtil().setHeight(1),
color: MyColours.color_f3f3f3,
),
MyItem(
title: "常用备注管理",
content: "",
callback: () {
NavigatorUtil.goRemarkManagerPage(context);
},
),
VEmptyView(40),
MyItem(
title: "联系客服",
... ...
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/screenutil.dart';
import 'package:one_key/constant/state.dart';
import 'package:one_key/models/remark.dart';
import 'package:one_key/provider/remark_manager_model.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/widgets/MyDivider.dart';
import 'package:one_key/widgets/h_empty_view.dart';
import 'package:one_key/widgets/page_exception.dart';
import 'package:one_key/widgets/system_app_bar.dart';
import 'package:one_key/widgets/v_empty_view.dart';
import 'package:provider/provider.dart';
import '../../app.dart';
class RemarkManagerPage extends StatefulWidget {
@override
State<StatefulWidget> createState() {
// TODO: implement createState
return RemarkManagerPageState();
}
}
class RemarkManagerPageState extends State<RemarkManagerPage> {
RemarkManagerModel remarkManagerModel;
bool isAdding = false; //正在添加备注
TextEditingController _controller = TextEditingController();
FocusNode focusNode = FocusNode();
@override
void initState() {
// TODO: implement initState
super.initState();
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
_getRemarks();
});
}
//获取备注
_getRemarks() {
Map<String, String> params = {
"uid": Provider.of<UserModel>(context, listen: false).user.openid
};
remarkManagerModel.getRemarks(context, params);
}
//添加备注
_addRemark() {
Map<String, String> params = {
"uid": Provider.of<UserModel>(context, listen: false).user.openid,
"custom": _controller.text
};
remarkManagerModel.addRemark(context, params);
}
//删除备注
_delRemark(Remark remark) {
if (remark.id == "-1") return;
Map<String, String> params = {
"uid": Provider.of<UserModel>(context, listen: false).user.openid,
"kid": remark.id,
};
remarkManagerModel.delRemark(context, params);
}
//构建常用备注
List<Widget> _buildAlwayItems() {
List<Widget> always = [];
for (Remark remark in remarkManagerModel.remarks) {
if (remark.oftenUse != null && remark.oftenUse.isNotEmpty)
always.add(Container(
height: ScreenUtil().setWidth(50),
decoration: BoxDecoration(
color: MyColours.color_199095,
borderRadius: BorderRadius.circular(ScreenUtil().setWidth(10))),
child: Row(mainAxisSize: MainAxisSize.min, children: <Widget>[
Flexible(
child: Padding(
padding:
EdgeInsets.symmetric(horizontal: ScreenUtil().setWidth(20)),
child: Text(
"${remark.oftenUse}",
style: TextStyle(
fontSize: ScreenUtil().setSp(30),
color: MyColours.color_ffffff,
),
overflow: TextOverflow.ellipsis,
),
),
),
MyDivider(
ScreenUtil().setWidth(2),
ScreenUtil().setWidth(30),
color: MyColours.color_6AB6B9,
),
GestureDetector(
onTap: () {
setState(() {
remark.oftenUse = "";
});
_delRemark(remark);
},
child: Padding(
padding: EdgeInsets.all(ScreenUtil().setWidth(10)),
child: Text(
"X",
style: TextStyle(
color: MyColours.color_ffffff,
fontSize: ScreenUtil().setSp(30)),
)),
)
]),
));
}
return always;
}
//构建所有备注
List<Widget> _buildAllItems() {
List<Widget> alls = [];
for (Remark remark in remarkManagerModel.remarks) {
alls.add(
GestureDetector(
onTap: () {
setState(() {
remark.oftenUse = remark.custom;
});
},
child: Container(
height: ScreenUtil().setWidth(50),
padding:
EdgeInsets.symmetric(horizontal: ScreenUtil().setWidth(20)),
decoration:
(remark.oftenUse != null && remark.oftenUse.isNotEmpty)
? BoxDecoration(
color: MyColours.color_199095,
borderRadius:
BorderRadius.circular(ScreenUtil().setWidth(10)))
: BoxDecoration(
color: MyColours.color_ffffff,
borderRadius:
BorderRadius.circular(ScreenUtil().setWidth(10)),
border: Border.all(
color: MyColours.color_6AB6B9,
width: ScreenUtil().setWidth(2))),
child: Row(mainAxisSize: MainAxisSize.min, children: <Widget>[
Flexible(
child: Text(
"${remark.custom}",
style: TextStyle(
fontSize: ScreenUtil().setSp(30),
color:
(remark.oftenUse != null && remark.oftenUse.isNotEmpty)
? MyColours.color_ffffff
: MyColours.color_199095,
),
overflow: TextOverflow.ellipsis,
)),
]),
)),
);
}
alls.add(Stack(
children: [
isAdding
? Container(
width: ScreenUtil().setWidth(200),
height: ScreenUtil().setWidth(50),
padding:
EdgeInsets.symmetric(horizontal: ScreenUtil().setWidth(20)),
decoration: BoxDecoration(
border: Border.all(
color: MyColours.color_cccccc,
width: ScreenUtil().setWidth(2)),
borderRadius:
BorderRadius.circular(ScreenUtil().setWidth(10))),
child: Expanded(
child: TextField(
controller: _controller,
focusNode: focusNode,
autofocus: true,
textInputAction: TextInputAction.done,
textAlignVertical: TextAlignVertical.center,
keyboardType: TextInputType.text,
maxLength: 10,
decoration: InputDecoration(
border: InputBorder.none,
),
style: TextStyle(
color: MyColours.color_353535,
fontSize: ScreenUtil().setSp(30),
textBaseline:
TextBaseline.alphabetic),
onEditingComplete: () {
if(_controller.text.isEmpty){
setState(() {
isAdding=false;
return;
});
}
setState(() {
isAdding = false;
remarkManagerModel.remarks.add(Remark()
..id = "-1"
..custom = _controller.text
..oftenUse = _controller.text);
});
_addRemark();
_controller.clear();
},
),
),
)
: GestureDetector(
onTap: () {
if(remarkManagerModel.remarks.length>=20)return;
setState(() {
isAdding = true;
});
},
child: Container(
width: ScreenUtil().setWidth(200),
height: ScreenUtil().setWidth(50),
alignment: Alignment.center,
decoration: BoxDecoration(
border: Border.all(
color: MyColours.color_cccccc,
width: ScreenUtil().setWidth(2)),
borderRadius:
BorderRadius.circular(ScreenUtil().setWidth(10))),
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
Icon(
Icons.add,
size: ScreenUtil().setWidth(30),
color: MyColours.color_999999,
),
HEmptyView(10),
Text(
"添加备注",
style: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setSp(30)),
)
],
),
),
)
],
));
return alls;
}
@override
Widget build(BuildContext context) {
// TODO: implement build
remarkManagerModel =
Provider.of<RemarkManagerModel>(context, listen: false);
return Scaffold(
backgroundColor: MyColours.color_ffffff,
appBar: SystemAppBar(
'常用备注管理',
onTap: () {
Navigator.of(context).pop();
},
),
body: SafeArea(
child: Consumer<RemarkManagerModel>(
builder: (context, model, _) {
if (model.pageState != PageState.Success) {
return ExceptionPage(
pageState: model.pageState,
callback: () {
_getRemarks();
},
emptyMsg: "暂时没有备注哦",
emptyImg: "empty_search",
showMsg: "加载中,请稍后...",
);
} else {
return Container(
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(40)),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
VEmptyView(60),
Row(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
Text(
"我的常用备注",
style: TextStyle(
color: MyColours.color_353535,
fontSize: ScreenUtil().setSp(30),
fontWeight: FontWeight.bold),
),
Text(
"(最多添加10个)",
style: TextStyle(
color: MyColours.color_666666,
fontSize: ScreenUtil().setSp(26)),
),
],
),
Padding(
padding: EdgeInsets.symmetric(
vertical: ScreenUtil().setWidth(20)),
child: Wrap(
spacing: ScreenUtil().setWidth(20),
runSpacing: ScreenUtil().setWidth(20),
children: _buildAlwayItems()),
),
VEmptyView(20),
MyDivider(
double.infinity,
ScreenUtil().setWidth(2),
color: MyColours.color_f3f3f3,
),
VEmptyView(40),
Row(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
Text(
"所有备注",
style: TextStyle(
color: MyColours.color_353535,
fontSize: ScreenUtil().setSp(30),
fontWeight: FontWeight.bold),
),
Text(
"(最多添加20个)",
style: TextStyle(
color: MyColours.color_666666,
fontSize: ScreenUtil().setSp(26)),
),
],
),
Padding(
padding: EdgeInsets.symmetric(
vertical: ScreenUtil().setWidth(20)),
child: Wrap(
spacing: ScreenUtil().setWidth(20),
runSpacing: ScreenUtil().setWidth(20),
children: _buildAllItems()),
)
],
),
);
}
},
),
));
}
}
... ...
import 'package:flutter/material.dart';
import 'package:one_key/constant/constant.dart';
import 'package:one_key/constant/error.dart';
import 'package:one_key/constant/state.dart';
import 'package:one_key/models/remark.dart';
import 'package:one_key/net/base_resp.dart';
import 'package:one_key/net/dio_util.dart';
import 'package:one_key/net/http_url.dart';
/**
* 常用备注管理
*/
class RemarkManagerModel extends ChangeNotifier{
List<Remark> remarks=[];//所有备注
PageState pageState = PageState.Loading;
//获取备注
getRemarks(BuildContext context, Map<String, String> params) async {
pageState = PageState.Loading;
notifyListeners();
BaseResp<List> baseResp = await DioUtil()
.request<List>(context, Method.get, HttpUrl.get_custom_remark,
data: params, showLoading: false)
.catchError((error) {
print(error.toString());
if (error is MyError) {
switch (error.type) {
case 1:
pageState = PageState.ConnectivityError;
break;
case 2:
pageState = PageState.ConnectivityTimeOut;
break;
default:
pageState = PageState.ConnectivityError;
break;
}
}
notifyListeners();
});
if (baseResp != null && baseResp.code == Constant.status_success) {
remarks = baseResp.data.map<Remark>((value) {
return Remark.fromJson(value);
}).toList();
if (remarks.isEmpty) {
pageState = PageState.Empty;
} else {
pageState = PageState.Success;
}
notifyListeners();
}
}
//添加备注
addRemark(BuildContext context, Map<String, String> params) async {
BaseResp<dynamic> baseResp = await DioUtil()
.request<dynamic>(context, Method.get, HttpUrl.add_custom_remark,
data: params, showLoading: false)
.catchError((error) {
print(error.toString());
});
if (baseResp != null && baseResp.code == Constant.status_success) {
}
}
//删除备注
delRemark(BuildContext context, Map<String, String> params) async {
BaseResp<dynamic> baseResp = await DioUtil()
.request<dynamic>(context, Method.get, HttpUrl.del_custom_remark,
data: params, showLoading: false)
.catchError((error) {
print(error.toString());
});
if (baseResp != null && baseResp.code == Constant.status_success) {
}
}
}
\ No newline at end of file
... ...
... ... @@ -11,6 +11,7 @@ class MyColours {
static const Color color_d8d8d8 = Color(0xffD8D8D8);
static const Color color_bff6f7 = Color(0xffBFF6F7);
static const Color color_c1c1c1 = Color(0xffC1C1C1);
static const Color color_cccccc = Color(0xffCCCCCC);
static const Color color_2bb5b7 = Color(0xff2BB5B7);
static const Color color_26000000 = Color(0x26000000);
static const Color color_d93535 = Color(0xffD93535);
... ...
... ... @@ -14,6 +14,7 @@ import 'package:one_key/pages/detail/notebook_detail_page.dart';
import 'package:one_key/pages/login/web_page.dart';
import 'package:one_key/pages/my/book_time_set.dart';
import 'package:one_key/pages/my/receive_orders_time_set.dart';
import 'package:one_key/pages/my/remark_manager_page.dart';
import 'package:one_key/pages/sms/sms_page.dart';
import 'package:one_key/pages/table/select_table_page.dart';
import 'package:one_key/pages/webview/webview_page.dart';
... ... @@ -21,6 +22,7 @@ import 'package:one_key/provider/book_set_time_model.dart';
import 'package:one_key/provider/choose_table_model.dart';
import 'package:one_key/provider/notebook_detail_change_model.dart';
import 'package:one_key/provider/notebook_detail_model.dart';
import 'package:one_key/provider/remark_manager_model.dart';
import 'package:one_key/utils/fluro_convert_utils.dart';
import 'package:provider/provider.dart';
... ... @@ -135,7 +137,9 @@ var handleChangeDetailHandler = new Handler(
String rid = params['rid'].first;
return ChangeNotifierProvider<NotebookDetailChangeModel>(
create: (_) => NotebookDetailChangeModel(detailEntity),
child: NoteBookChangePage(detailEntity: detailEntity, rid: rid));
child: ChangeNotifierProvider<RemarkManagerModel>(
create: (_) => RemarkManagerModel(),
child: NoteBookChangePage(detailEntity: detailEntity, rid: rid)));
});
// 跳转可订时段管理页面
... ... @@ -151,3 +155,10 @@ var handleReceiveOrdersTimeSetHandler = new Handler(
return ChangeNotifierProvider<BookSetTimeModel>(
create: (_) => BookSetTimeModel(), child: ReceiveOrdersTimeSetPage());
});
// 常用备注管理
var handleRemarkManagerHandler = new Handler(
handlerFunc: (BuildContext context, Map<String, List<Object>> params) {
return ChangeNotifierProvider<RemarkManagerModel>(
create: (_) => RemarkManagerModel(), child: RemarkManagerPage());
});
... ...
... ... @@ -17,6 +17,7 @@ class Routes {
static String change_detail = "/change_detail"; //变更预订
static String book_time_set = "/book_time_set"; //可订时段管理
static String receive_orders_time_set = "/receive_orders_time_set"; //接单时间管理
static String remark_manager = "/remark_manager"; //常用备注管理
static void configureRoutes(Router router) {
router.notFoundHandler = new Handler(
... ... @@ -37,5 +38,7 @@ class Routes {
router.define(book_time_set, handler: handleBookTimeSetHandler);
router.define(receive_orders_time_set,
handler: handleReceiveOrdersTimeSetHandler);
router.define(remark_manager,
handler: handleRemarkManagerHandler);
}
}
... ...
... ... @@ -5,6 +5,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_picker/flutter_picker.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/constant/constant.dart';
import 'package:one_key/models/remark.dart';
import 'package:one_key/pages/message/message_dialog_item.dart';
import 'package:one_key/provider/message_dialog_model.dart';
import 'package:one_key/res/colors.dart';
... ... @@ -19,7 +20,98 @@ import 'package:provider/provider.dart';
import 'package:table_calendar/table_calendar.dart';
import 'package:one_key/models/table.dart' as t;
typedef CustomCallBack = void Function(Object object);
class DialogUtil {
//备注弹框
static showRemarkDialog(
BuildContext context, List<Remark> remarks, CustomCallBack callback,
{GestureTapCallback onTapLeft, GestureTapCallback onTapRight}) {
return showModalBottomSheet(
context: context,
isScrollControlled: true,
isDismissible: false,
backgroundColor: Colors.transparent,
builder: (context) {
return StatefulBuilder(builder: (context, state) {
// locationState = state;
return Container(
decoration: BoxDecoration(
color: MyColours.color_ffffff,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(ScreenUtil().setWidth(24)),
topRight: Radius.circular(ScreenUtil().setWidth(24)))),
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
VEmptyView(40),
Center(
child: Text(
'更多标签',
style: TextStyle(
fontSize: ScreenUtil().setSp(32),
color: MyColours.color_353535,
),
softWrap: true,
textAlign: TextAlign.center,
),
),
VEmptyView(60),
Container(
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(40)),
child: Wrap(
children: listWidget(remarks, state, callback),
spacing: ScreenUtil().setWidth(20),
runSpacing: ScreenUtil().setWidth(20),
// alignment: WrapAlignment.start,
// runAlignment: WrapAlignment.end,
),
),
VEmptyView(60)
]));
});
});
}
static listWidget(
List<Remark> remarks, StateSetter state, CustomCallBack callback) {
List<Widget> lists = remarks.map((item) {
return remarkButton(
content: item.custom,
isSelect: item.selected,
onPress: () {
state(() {
item.selected = !item.selected;
});
callback(item);
});
}).toList();
return lists;
}
static Widget remarkButton(
{GestureTapCallback onPress, content, isSelect = false}) {
return InkWell(
onTap: onPress,
child: Container(
height: ScreenUtil().setHeight(50),
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(20),
vertical: ScreenUtil().setWidth(12)),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(ScreenUtil().setWidth(10)),
color: isSelect ? MyColours.color_199095 : MyColours.color_f5f5f5,
),
child: Text(
content,
style: TextStyle(
color: isSelect ? Colors.white : MyColours.color_353535,
fontSize: ScreenUtil().setSp(28)),
),
));
}
//显示消息弹框
static showMessageDialog(BuildContext context) async {
MessageDialogModel messageModel =
... ...
... ... @@ -115,4 +115,9 @@ class NavigatorUtil {
static void goReceiveOrdersTimeSetPage(BuildContext context) {
_navigateTo(context, "${Routes.receive_orders_time_set}");
}
/// 常用备注管理
static void goRemarkManagerPage(BuildContext context) {
_navigateTo(context, "${Routes.remark_manager}");
}
}
... ...