Commit c59625c74e04f901e2cedd68c9c5c986a403fc95

Authored by gaiyaguang
1 parent 46ddf41a

1.版本更新弹框;2.联系客服;3.帮助与反馈

1.91 KB | W: | H:

1.2 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin
... ... @@ -25,6 +25,8 @@ PODS:
- jpush_flutter (0.0.2):
- Flutter
- JPush
- package_info (0.0.1):
- Flutter
- path_provider (0.0.1):
- Flutter
- path_provider_macos (0.0.1):
... ... @@ -59,6 +61,7 @@ DEPENDENCIES:
- fluwx (from `.symlinks/plugins/fluwx/ios`)
- install_plugin (from `.symlinks/plugins/install_plugin/ios`)
- jpush_flutter (from `.symlinks/plugins/jpush_flutter/ios`)
- package_info (from `.symlinks/plugins/package_info/ios`)
- path_provider (from `.symlinks/plugins/path_provider/ios`)
- path_provider_macos (from `.symlinks/plugins/path_provider_macos/ios`)
- permission_handler (from `.symlinks/plugins/permission_handler/ios`)
... ... @@ -97,6 +100,8 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/install_plugin/ios"
jpush_flutter:
:path: ".symlinks/plugins/jpush_flutter/ios"
package_info:
:path: ".symlinks/plugins/package_info/ios"
path_provider:
:path: ".symlinks/plugins/path_provider/ios"
path_provider_macos:
... ... @@ -131,6 +136,7 @@ SPEC CHECKSUMS:
JCore: d75c0306dc99875d323d23e5a063b3a3ef22335a
JPush: 9468c84a3809dc3ac2fc1c89c6d1d6c858a91bf5
jpush_flutter: 69133df35eaf9135e540549b154d992c44f8ee44
package_info: 873975fc26034f0b863a300ad47e7f1ac6c7ec62
path_provider: fb74bd0465e96b594bb3b5088ee4a4e7bb1f2a9d
path_provider_macos: f760a3c5b04357c380e2fddb6f9db6f3015897e0
permission_handler: f615215121f43c1640d2b8500d4ad749512828a8
... ...
... ... @@ -159,164 +159,169 @@ class HandleOnlinePageState extends State<HandleOnlinePage> {
Expanded(
child: DefaultTextStyle(style: TextStyle(decoration: TextDecoration.none), child: Container(
color: MyColours.color_ffffff,
child: SingleChildScrollView(
child: Container(
color: MyColours.color_ffffff,
padding:
EdgeInsets.symmetric(horizontal: ScreenUtil().setWidth(43)),
child: Column(
children: <Widget>[
RowMultiText("用餐时段", detailEntity.ddateMd),
Stack(
alignment: Alignment.center,
child: Column(
children: <Widget>[
SingleChildScrollView(
child: Container(
color: MyColours.color_ffffff,
padding:
EdgeInsets.symmetric(horizontal: ScreenUtil().setWidth(43)),
child: Column(
children: <Widget>[
Column(
RowMultiText("用餐时段", detailEntity.ddateMd),
Stack(
alignment: Alignment.center,
children: <Widget>[
RowMultiText("用餐时间", detailEntity.ddateHm),
Offstage(
offstage: detailEntity.type=="0"?false:true,
child: RowMultiText("用餐人数", detailEntity.pnum),
)
Column(
children: <Widget>[
RowMultiText("用餐时间", detailEntity.ddateHm),
Offstage(
offstage: detailEntity.type=="0"?false:true,
child: RowMultiText("用餐人数", detailEntity.pnum),
)
],
),
Image.asset(detailEntity.statuImgAssets,width: ScreenUtil().setWidth(100),height: ScreenUtil().setWidth(30),)
],
),
Image.asset(detailEntity.statuImgAssets,width: ScreenUtil().setWidth(100),height: ScreenUtil().setWidth(30),)
],
),
RowMultiText("包间需求", (detailEntity.demands.length.toString()+"个")??""),
Align(
alignment: Alignment.centerRight,
child: Offstage(
offstage: detailEntity.demands.length>0?false:true,
child: Container(
height: ScreenUtil().setHeight(210),
child: ListView.builder(itemBuilder: (BuildContext contxt,int index){
return NeedItem(detailEntity.demands[index]);
},itemCount: detailEntity.demands.length,shrinkWrap: true,scrollDirection: Axis.horizontal,),
),
)
),
RowMultiText("客户姓名", detailEntity.rnameStr),
RowMultiText("客户电话", detailEntity.phone),
MyDivider(double.infinity, ScreenUtil().setHeight(1)),
Container(
color: MyColours.color_ffffff,
width: double.infinity,
height: ScreenUtil().setHeight(80),
alignment: Alignment.center,
child: Stack(
alignment: Alignment.center,
children: <Widget>[
Positioned(
left: 0,
child: Text(
"客户经理",
style: TextStyle(
color: MyColours.color_828282,
fontSize: ScreenUtil().setSp(30)),
),
),
Positioned(
right: 0,
child: GestureDetector(
onTap: () async {
List<String> list=[];
for(Manager manager in managers){
list.add(manager.roleUserName);
}
DialogUtil.showSelectCusmanDialog(context,list).then((value){
setState(() {
cusmanText=managers[value.first].userName;
});
_setCurrManager();
});
},
child: Text(
cusmanText,
style: TextStyle(
color: MyColours.color_353535,
fontSize: ScreenUtil().setSp(30),
decoration: TextDecoration.underline,
RowMultiText("包间需求", (detailEntity.demands.length.toString()+"个")??""),
Align(
alignment: Alignment.centerRight,
child: Offstage(
offstage: detailEntity.demands.length>0?false:true,
child: Container(
height: ScreenUtil().setHeight(210),
child: ListView.builder(itemBuilder: (BuildContext contxt,int index){
return NeedItem(detailEntity.demands[index]);
},itemCount: detailEntity.demands.length,shrinkWrap: true,scrollDirection: Axis.horizontal,),
),
)
),
RowMultiText("客户姓名", detailEntity.rnameStr),
RowMultiText("客户电话", detailEntity.phone),
RowMultiText("备注信息",detailEntity.cusdem??""),
MyDivider(double.infinity, ScreenUtil().setHeight(1)),
Container(
color: MyColours.color_ffffff,
width: double.infinity,
height: ScreenUtil().setHeight(80),
alignment: Alignment.center,
child: Stack(
alignment: Alignment.center,
children: <Widget>[
Positioned(
left: 0,
child: Text(
"客户经理",
style: TextStyle(
color: MyColours.color_828282,
fontSize: ScreenUtil().setSp(30)),
),
),
),
)
],
),
Positioned(
right: 0,
child: GestureDetector(
onTap: () async {
List<String> list=[];
for(Manager manager in managers){
list.add(manager.roleUserName);
}
DialogUtil.showSelectCusmanDialog(context,list).then((value){
setState(() {
cusmanText=managers[value.first].userName;
});
_setCurrManager();
});
},
child: Text(
cusmanText,
style: TextStyle(
color: MyColours.color_353535,
fontSize: ScreenUtil().setSp(30),
decoration: TextDecoration.underline,
),
),
),
)
],
),
),
],
)),
),
Container(
margin: EdgeInsets.only(top: ScreenUtil().setHeight(30),bottom: ScreenUtil().setHeight(30)),
child: Column(
children: <Widget>[
CommonButton(
content: "安排包间",
width: 669,
height: 76,
fontSize: 34,
onPress: () async {
String tid=await NavigatorUtil.goSelectTablePage(context,widget.rid,int.parse(detailEntity.ddate)*1000,detailEntity.ddate_solt);
if(tid!=null){
setReserveStatus("5",tid:tid);
}
},
),
VEmptyView(20),
Container(
margin: EdgeInsets.only(top: ScreenUtil().setHeight(206)),
child: Column(
width: ScreenUtil().setWidth(669),
height: ScreenUtil().setHeight(76),
decoration: BoxDecoration(
border: Border.all(color: MyColours.color_199095),
borderRadius: BorderRadius.circular(
ScreenUtil().setWidth(5)),
),
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
CommonButton(
content: "安排包间",
width: 669,
height: 76,
fontSize: 34,
onPress: () async {
String tid=await NavigatorUtil.goSelectTablePage(context,widget.rid,int.parse(detailEntity.ddate)*1000,detailEntity.ddate_solt);
if(tid!=null){
setReserveStatus("5",tid:tid);
}
},
Expanded(
child: GestureDetector(
child: Center(
child: Text(
"拒绝订单",
style: TextStyle(
color: MyColours.color_199095,
fontSize: ScreenUtil().setSp(34)),
),
),
onTap: () {
_showRefuseDialog();
},
)),
MyDivider(
ScreenUtil().setWidth(2),
ScreenUtil().setHeight(52),
color: MyColours.color_199095,
),
VEmptyView(20),
Container(
width: ScreenUtil().setWidth(669),
height: ScreenUtil().setHeight(76),
decoration: BoxDecoration(
border: Border.all(color: MyColours.color_199095),
borderRadius: BorderRadius.circular(
ScreenUtil().setWidth(5)),
),
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Expanded(
child: GestureDetector(
child: Center(
child: Text(
"拒绝订单",
style: TextStyle(
color: MyColours.color_199095,
fontSize: ScreenUtil().setSp(34)),
),
),
onTap: () {
_showRefuseDialog();
},
)),
MyDivider(
ScreenUtil().setWidth(2),
ScreenUtil().setHeight(52),
color: MyColours.color_199095,
Expanded(
child: GestureDetector(
child: Center(
child: Text(
"联系顾客",
style: TextStyle(
color: MyColours.color_199095,
fontSize: ScreenUtil().setSp(34)),
),
),
Expanded(
child: GestureDetector(
child: Center(
child: Text(
"联系顾客",
style: TextStyle(
color: MyColours.color_199095,
fontSize: ScreenUtil().setSp(34)),
),
),
onTap: () {
if(detailEntity.phone!=null&&detailEntity.phone.isNotEmpty){
Utils.goPhone(detailEntity.phone);
}else{
Utils.showToast("没有客户电话!");
}
},
)),
],
),
)
onTap: () {
if(detailEntity.phone!=null&&detailEntity.phone.isNotEmpty){
Utils.goPhone(detailEntity.phone);
}else{
Utils.showToast("没有客户电话!");
}
},
)),
],
),
)
],
)),
),
),
)
],
)
)),
)
],
... ...
... ... @@ -90,7 +90,7 @@ class NotebookDetailPageState extends State<NotebookDetailPage> {
showBack: true,
),
Expanded(
child: DefaultTextStyle(style: TextStyle(decoration: TextDecoration.none), overflow:TextOverflow.ellipsis,child: Container(
child: DefaultTextStyle(style: TextStyle(decoration: TextDecoration.none),child: Container(
color: MyColours.color_ffffff,
child: SingleChildScrollView(
child: Container(
... ... @@ -149,7 +149,8 @@ class NotebookDetailPageState extends State<NotebookDetailPage> {
)
),
RowMultiText("客户姓名", detailEntity.rnameStr),
RowMultiText("客户电话", detailEntity.phone),
RowMultiText("客户电话", detailEntity.phone??""),
RowMultiText("备注信息",detailEntity.cusdem??""),
MyDivider(double.infinity, ScreenUtil().setHeight(1)),
Container(
color: MyColours.color_ffffff,
... ...
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/provider/update_model.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/utils/utils.dart';
import 'package:one_key/widgets/MyDivider.dart';
import 'package:one_key/widgets/app_bar.dart';
import 'package:one_key/widgets/h_empty_view.dart';
import 'package:one_key/widgets/my_item.dart';
import 'package:one_key/widgets/v_empty_view.dart';
import 'package:provider/provider.dart';
... ... @@ -16,6 +20,26 @@ class MyPage extends StatefulWidget{
}
class MyPageState extends State<MyPage>{
String cur_version="";
@override
void initState() {
// TODO: implement initState
super.initState();
Utils.getCurrVersion().then((version){
setState(() {
cur_version="v"+version;
});
});
}
//检查版本更新
checkUpdate(){
UpdateModel updateModel=new UpdateModel();
updateModel.checkUpdate(context);
}
@override
Widget build(BuildContext context) {
// TODO: implement build
... ... @@ -28,39 +52,60 @@ class MyPageState extends State<MyPage>{
MyAppBar("我的",showBack: false,backgroundColor: MyColours.color_2bb5b7,fontColor: MyColours.color_fefefe,),
Container(
width: double.infinity,
height: ScreenUtil().setHeight(396),
decoration: BoxDecoration(
color: MyColours.color_2bb5b7,
boxShadow: [BoxShadow(color: MyColours.color_2e000000,offset: Offset(.0,2.0))],
borderRadius: BorderRadius.only(bottomLeft: Radius.circular(ScreenUtil().setWidth(350)),bottomRight: Radius.circular(ScreenUtil().setWidth(350)))
),
height: ScreenUtil().setHeight(242),
alignment: Alignment.centerLeft,
padding: EdgeInsets.only(left: ScreenUtil().setWidth(40)),
color: MyColours.color_2bb5b7,
child: Consumer<UserModel>(builder: (BuildContext context,UserModel model,Widget child){
return Column(
crossAxisAlignment: CrossAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
VEmptyView(25),
Image.asset("assets/my_logo.png",width: ScreenUtil().setWidth(228),height: ScreenUtil().setWidth(228),),
VEmptyView(40),
Text(model.user.sellername,style: TextStyle(color: MyColours.color_ffffff,fontSize: ScreenUtil().setSp(32)),),
VEmptyView(12),
Text(model.user.account+" | "+model.user.role_name,style: TextStyle(color: MyColours.color_ffffff,fontSize: ScreenUtil().setSp(30)),)
VEmptyView(38),
Text(model.user.sellername,style: TextStyle(color: MyColours.color_ffffff,fontSize: ScreenUtil().setSp(36)),),
VEmptyView(38),
Text(model.user.account+" | "+model.user.role_name,style: TextStyle(color: MyColours.color_ffffff,fontSize: ScreenUtil().setSp(30)),),
],
);
},)
),
VEmptyView(44),
MyItem(title:"联系客服",content:"09:00~21:00",callback: (){
Utils.goPhone("400-000-9690");
},),
MyDivider(double.infinity,ScreenUtil().setHeight(1),color: MyColours.color_f3f3f3,),
MyItem(title:"帮助与反馈",content:"",callback: (){
Utils.goHelp();
},),
MyDivider(double.infinity,ScreenUtil().setHeight(1),color: MyColours.color_f3f3f3),
GestureDetector(
onTap: checkUpdate,
child: Container(
width: double.infinity,
height: ScreenUtil().setHeight(122),
color: MyColours.color_ffffff,
padding: EdgeInsets.symmetric(horizontal: ScreenUtil().setWidth(40)),
alignment: Alignment.center,
child: Row(
children: <Widget>[
Text("版本更新",style: TextStyle(fontSize: ScreenUtil().setSp(30),color: MyColours.color_353535),),
Spacer(),
Text(cur_version,style: TextStyle(fontSize: ScreenUtil().setSp(28),color: MyColours.color_666666),),
HEmptyView(20),
Image.asset("assets/arr_right_gray.png",width: ScreenUtil().setWidth(14),height: ScreenUtil().setWidth(22),)
],
),
),
),
MyDivider(double.infinity,ScreenUtil().setHeight(1),color: MyColours.color_f3f3f3,),
VEmptyView(40),
Consumer<UserModel>(builder: (BuildContext context,UserModel model,Widget child){
return GestureDetector(
onTap: (){
model.loginOut(context, {"seller_code":model.user.sellercode,"account":model.user.account});
model.showLoginOutDialog(context);
},
child: Container(
height: ScreenUtil().setHeight(106),
margin: EdgeInsets.symmetric(horizontal: ScreenUtil().setWidth(20),vertical: ScreenUtil().setHeight(40)),
decoration: BoxDecoration(
color: MyColours.color_ffffff,
borderRadius: BorderRadius.all(Radius.circular(ScreenUtil().setWidth(8))),
boxShadow: [BoxShadow(color: MyColours.color_14000000,offset: Offset(.0, 1.0))]
),
height: ScreenUtil().setHeight(122),
color: MyColours.color_ffffff,
child: Center(
child: Row(
mainAxisSize: MainAxisSize.min,
... ... @@ -68,7 +113,7 @@ class MyPageState extends State<MyPage>{
children: <Widget>[
Image.asset("assets/icon_exist.png",width: ScreenUtil().setWidth(30),height: ScreenUtil().setWidth(30),),
HEmptyView(18),
Text("退出登录",style: TextStyle(color: MyColours.color_353535,fontSize: ScreenUtil().setSp(34),))
Text("退出登录",style: TextStyle(color: MyColours.color_2bb5b7,fontSize: ScreenUtil().setSp(34),))
],
),
),
... ...
import 'dart:io';
import 'dart:math';
... ... @@ -8,101 +7,176 @@ import 'package:install_plugin/install_plugin.dart';
import 'package:one_key/models/version.dart';
import 'package:one_key/net/dio_util.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/widgets/MyDivider.dart';
import 'package:one_key/widgets/v_empty_view.dart';
import 'package:path_provider/path_provider.dart';
import 'package:permission_handler/permission_handler.dart';
class UpdateModel{
int _progress;//下载进度
class UpdateModel {
int _progress; //下载进度
Function _setState;
//检查更新
Future<Version> checkUpdate(BuildContext context){
Future.delayed(new Duration(milliseconds: 1000),(){
if(Random().nextInt(10)>0){
Version version=Version.fromJson({
"version":"v1.0.3",
"file_url":"http://xt03.colorcun.com/uploads/20191105/67e38355c41528b24a97e9ac71a221ea.apk",
"content":"1.bug修复;\n2.功能更新;"
checkUpdate(BuildContext context) {
Future.delayed(new Duration(milliseconds: 1000), () {
if (Random().nextInt(10) > 0) {
Version version = Version.fromJson({
"version": "v1.0.3",
"file_url":
"http://xt03.colorcun.com/uploads/20191105/67e38355c41528b24a97e9ac71a221ea.apk",
"content": "1.bug修复;\n2.功能更新;"
});
showUpdateDialog(context, version);
}
});
}
//拒绝订单弹框
showUpdateDialog(BuildContext context,Version version){
showDialog(context: context,builder: (context){
return AlertDialog(
title: Text("版本更新${version.version}"),
titleTextStyle: TextStyle(color: MyColours.color_353535,fontSize: ScreenUtil().setSp(32)),
content: Text("${version.content}"),
contentTextStyle:TextStyle(color: MyColours.color_828282,fontSize: ScreenUtil().setSp(28)),
actions: <Widget>[
FlatButton(
child: Text("取消",style: TextStyle(fontSize: ScreenUtil().setSp(32)),),
onPressed: (){
Navigator.of(context).pop();
},
),
FlatButton(
child: Text("去更新",style: TextStyle(fontSize: ScreenUtil().setSp(32)),),
onPressed: () async {
Navigator.of(context).pop();
if(Platform.isAndroid){
downloadApk(context,version.file_url);
}else{
InstallPlugin.gotoAppStore("itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=1510697490");
}
},
)
],
);
});
//版本更新弹框
showUpdateDialog(BuildContext context, Version version) {
showDialog(
context: context,
builder: (context) {
Widget widget = Container(
decoration: BoxDecoration(
color: MyColours.color_ffffff,
borderRadius: BorderRadius.all(
Radius.circular(ScreenUtil().setWidth(30)))),
padding: EdgeInsets.only(top: ScreenUtil().setWidth(50)),
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Container(
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(60)),
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Center(
child: Text(
"${version.version}版本更新啦",
style: TextStyle(
fontSize: ScreenUtil().setSp(36),
color: MyColours.color_353535),
),
),
VEmptyView(20),
Text(
version.content,
style: TextStyle(
fontSize: ScreenUtil().setSp(28),
color: MyColours.color_353535),
)
],
),
),
VEmptyView(40),
MyDivider(double.infinity, ScreenUtil().setWidth(1)),
Container(
height: ScreenUtil().setWidth(94),
child: Row(
children: <Widget>[
Expanded(
child: GestureDetector(
onTap: () {
Navigator.of(context).pop();
},
child: Text(
"下次一定",
style: TextStyle(
fontSize: ScreenUtil().setSp(34),
color: MyColours.color_777777),
textAlign: TextAlign.center,
),
),
),
MyDivider(ScreenUtil().setWidth(1),ScreenUtil().setWidth(94)),
Expanded(
child: GestureDetector(
onTap: () {
Navigator.of(context).pop();
if (Platform.isAndroid) {
downloadApk(context, version.file_url);
} else {
InstallPlugin.gotoAppStore(
"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=1510697490");
}
},
child: Text(
"立即更新",
style: TextStyle(
fontSize: ScreenUtil().setSp(34),
color: MyColours.color_2bb5b7),
textAlign: TextAlign.center,
),
),
)
],
),
)
],
),
);
return Center(child: UnconstrainedBox(
constrainedAxis: Axis.vertical,
child: ConstrainedBox(
constraints: BoxConstraints(maxWidth: ScreenUtil().setWidth(560)),
child: DefaultTextStyle(
style: TextStyle(decoration: TextDecoration.none),
child: widget,
)
),
),);
return AlertDialog(
content: widget,
contentPadding: EdgeInsets.zero,
);
});
}
//下载更新版本
Future<void> downloadApk(BuildContext context,String file_url) async {
Future<void> downloadApk(BuildContext context, String file_url) async {
Map<PermissionGroup, PermissionStatus> permissions =
await PermissionHandler().requestPermissions([PermissionGroup.storage]);
if(permissions[PermissionGroup.storage] == PermissionStatus.granted){
final dir=await getExternalStorageDirectory();
String savePath=dir.path+"/one_key";
DioUtil().download(file_url, savePath,onProgress: (received,total){
int progress=((received/total)*100).round();
_progress=progress;
_setState((){});
if(received==total){//下载完成
InstallPlugin.installApk(savePath,"com.naji.one_key");
await PermissionHandler().requestPermissions([PermissionGroup.storage]);
if (permissions[PermissionGroup.storage] == PermissionStatus.granted) {
final dir = await getExternalStorageDirectory();
String savePath = dir.path + "/one_key";
DioUtil().download(file_url, savePath, onProgress: (received, total) {
int progress = ((received / total) * 100).round();
_progress = progress;
_setState(() {});
if (received == total) {
//下载完成
InstallPlugin.installApk(savePath, "com.naji.one_key");
}
});
}
}
//显示下载进度条
Function showDownloadProgress(BuildContext context){
Function showDownloadProgress(BuildContext context) {
showDialog(
context: context,
barrierDismissible: false,
builder: (context) {
return AlertDialog(
content: StatefulBuilder(builder: (context, setState) {
if(_progress==100){
Navigator.of(context).pop();
}
_setState=setState;
return Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
CircularProgressIndicator(),
Padding(
padding: EdgeInsets.only(top: 26),
child: Text("正在下载...${_progress}%"),
)
],
);
}));
if (_progress == 100) {
Navigator.of(context).pop();
}
_setState = setState;
return Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
CircularProgressIndicator(),
Padding(
padding: EdgeInsets.only(top: 26),
child: Text("正在下载...${_progress}%"),
)
],
);
}));
});
return _setState;
}
}
\ No newline at end of file
}
... ...
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:jpush_flutter/jpush_flutter.dart';
import 'package:one_key/constant/constant.dart';
import 'package:one_key/models/user.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';
import 'package:one_key/res/colors.dart';
import 'package:one_key/utils/log_util.dart';
import 'package:one_key/utils/navigator_util.dart';
import 'package:one_key/utils/utils.dart';
import 'package:one_key/widgets/MyDivider.dart';
import 'package:one_key/widgets/v_empty_view.dart';
import '../app.dart';
... ... @@ -118,6 +122,88 @@ class UserModel with ChangeNotifier {
}
}
//版本更新弹框
showLoginOutDialog(BuildContext pageContext) {
showDialog(
context: pageContext,
builder: (context) {
Widget widget = Container(
decoration: BoxDecoration(
color: MyColours.color_ffffff,
borderRadius: BorderRadius.all(
Radius.circular(ScreenUtil().setWidth(30)))),
padding: EdgeInsets.only(top: ScreenUtil().setWidth(88)),
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Center(
child: Text(
"确定要退出登录吗?",
style: TextStyle(
fontSize: ScreenUtil().setSp(36),
color: MyColours.color_353535),
),
),
VEmptyView(66),
MyDivider(double.infinity, ScreenUtil().setWidth(1)),
Container(
height: ScreenUtil().setWidth(94),
child: Row(
children: <Widget>[
Expanded(
child: GestureDetector(
onTap: () {
Navigator.of(context).pop();
},
child: Text(
"取消",
style: TextStyle(
fontSize: ScreenUtil().setSp(34),
color: MyColours.color_777777),
textAlign: TextAlign.center,
),
),
),
MyDivider(ScreenUtil().setWidth(1),ScreenUtil().setWidth(94)),
Expanded(
child: GestureDetector(
onTap: () {
Navigator.of(context).pop();
loginOut(pageContext, {"seller_code":user.sellercode,"account":user.account});
},
child: Text(
"确定",
style: TextStyle(
fontSize: ScreenUtil().setSp(34),
color: MyColours.color_2bb5b7),
textAlign: TextAlign.center,
),
),
)
],
),
)
],
),
);
return Center(child: UnconstrainedBox(
constrainedAxis: Axis.vertical,
child: ConstrainedBox(
constraints: BoxConstraints(maxWidth: ScreenUtil().setWidth(560)),
child: DefaultTextStyle(
style: TextStyle(decoration: TextDecoration.none),
child: widget,
)
),
),);
return AlertDialog(
content: widget,
contentPadding: EdgeInsets.zero,
);
});
}
///退出登录
loginOut(BuildContext context, Map<String, String> params) async {
BaseResp<int> baseResp = await DioUtil()
... ...
... ... @@ -22,12 +22,14 @@ class MyColours {
static const Color color_828282=Color(0xff828282);
static const Color color_a8e2e4=Color(0xffA8E2E4);
static const Color color_63a6d1=Color(0xff63A6D1);
static const Color color_666666=Color(0xff666666);
static const Color color_777777=Color(0xff777777);
static const Color color_ea5750=Color(0xffEA5750);
static const Color color_89c0b7=Color(0xff89C0B7);
static const Color color_ededed=Color(0xffededed);
static const Color color_f7fdfd=Color(0xffF7FDFD);
static const Color color_dbe3e3=Color(0xffdbe3e3);
static const Color color_f3f3f3=Color(0xfff3f3f3);
static const Color color_f49a5e=Color(0xffF49A5E);
static const Color color_ff0000=Color(0xffff0000);
static const Color color_000000=Color(0xff000000);
... ...
... ... @@ -3,11 +3,8 @@ import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:flutter_picker/flutter_picker.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/models/message.dart';
import 'package:one_key/models/notebook.dart';
import 'package:one_key/pages/message/message_dialog_item.dart';
import 'package:one_key/provider/message_dialog_model.dart';
import 'package:one_key/provider/message_model.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/utils/log_util.dart';
import 'package:one_key/utils/navigator_util.dart';
... ...
... ... @@ -7,6 +7,7 @@ import 'package:fluttertoast/fluttertoast.dart';
import 'package:flutter/services.dart';
import 'package:fluwx/fluwx.dart';
import 'package:one_key/utils/log_util.dart';
import 'package:package_info/package_info.dart';
import 'package:url_launcher/url_launcher.dart';
class Utils {
... ... @@ -76,6 +77,23 @@ class Utils {
}
}
//跳转拨打电话页面
static goHelp() async {
String url="https://support.qq.com/product/152856";
if(await canLaunch(url)){
await launch(url);
}else{
LogUtil.e("Could not launch $url");
}
}
//获取应用版本昊
static Future<String> getCurrVersion() async {
PackageInfo packageInfo=await PackageInfo.fromPlatform();
String version=packageInfo.version;
return version;
}
//比较两个日期是否同一天
static isOneDay(DateTime one,DateTime two){
if(one.year==two.year&&one.month==two.month&&one.day==two.day)return true;
... ...
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/widgets/h_empty_view.dart';
class MyItem extends StatefulWidget{
final String title;
final String content;
final VoidCallback callback;
const MyItem({Key key, this.title, this.content, this.callback}) : super(key: key);
@override
State<StatefulWidget> createState() {
// TODO: implement createState
return new MyItemState();
}
}
class MyItemState extends State<MyItem>{
@override
Widget build(BuildContext context) {
// TODO: implement build
return GestureDetector(
onTap: widget.callback,
child: Container(
width: double.infinity,
height: ScreenUtil().setHeight(122),
color: MyColours.color_ffffff,
padding: EdgeInsets.symmetric(horizontal: ScreenUtil().setWidth(40)),
alignment: Alignment.center,
child: Row(
children: <Widget>[
Text(widget.title,style: TextStyle(fontSize: ScreenUtil().setSp(30),color: MyColours.color_353535),),
Spacer(),
Text(widget.content,style: TextStyle(fontSize: ScreenUtil().setSp(28),color: MyColours.color_666666),),
HEmptyView(20),
Image.asset("assets/arr_right_gray.png",width: ScreenUtil().setWidth(14),height: ScreenUtil().setWidth(22),)
],
),
),
);
}
}
\ No newline at end of file
... ...
... ... @@ -15,7 +15,7 @@ class RowMultiText extends StatelessWidget{
return Container(
color: MyColours.color_ffffff,
width: double.infinity,
height: ScreenUtil().setHeight(80),
padding: EdgeInsets.symmetric(vertical: ScreenUtil().setWidth(25)),
alignment: Alignment.center,
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
... ... @@ -28,7 +28,7 @@ class RowMultiText extends StatelessWidget{
child: Container(
alignment: Alignment.centerRight,
margin: EdgeInsets.only(left: ScreenUtil().setWidth(20)),
child: Text(content,style: TextStyle(color: MyColours.color_353535,fontSize: ScreenUtil().setSp(30)),maxLines:1,overflow: TextOverflow.ellipsis,),
child: Text(content,style: TextStyle(color: MyColours.color_353535,fontSize: ScreenUtil().setSp(30)),softWrap: true,textAlign: TextAlign.right,),
),
)
],
... ...
... ... @@ -485,6 +485,13 @@ packages:
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.9.2"
package_info:
dependency: "direct main"
description:
name: package_info
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.4.0+18"
package_resolver:
dependency: transitive
description:
... ...
... ... @@ -75,6 +75,8 @@ dependencies:
# fake_push: ^0.5.4
# 安装apk
install_plugin: ^2.0.1
# 获取应用版本信息
package_info: ^0.4.0+18
dev_dependencies:
flutter_test:
... ... @@ -134,6 +136,8 @@ flutter:
- assets/invication_back.png
- assets/icon_exist.png
- assets/my_logo.png
- assets/arr_right_gray.png
- assets/bg_error.png
# assets:
# - images/a_dot_burr.jpeg
... ...