Commit 4a82380f8393f6ccd7d0dc71e9e79d3bced31fd1

Authored by 蓋亞光
1 parent 2406ff27

常用备注管理

... ... @@ -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 = "151"
def flutterVersionCode = "153"
if (flutterVersionCode == null) {
flutterVersionCode = '151'
flutterVersionCode = '153'
}
def flutterVersionName = "1.5.1"
def flutterVersionName = "1.5.3"
if (flutterVersionName == null) {
flutterVersionName = '1.5.1'
flutterVersionName = '1.5.3'
}
apply plugin: 'com.android.application'
... ...
... ... @@ -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;
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"; //添加常用备注
}
... ...
... ... @@ -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';
... ... @@ -151,3 +153,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);
}
}
... ...
... ... @@ -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}");
}
}
... ...