import 'package:flutter/material.dart'; import 'package:liftmanager/res/gaps.dart'; import 'package:liftmanager/net/api_service.dart'; import 'package:liftmanager/utils/toast.dart'; import 'package:liftmanager/widgets/app_bar.dart'; import 'package:liftmanager/internal/search/search_router.dart'; import 'package:liftmanager/widgets/app_search_bar.dart'; import 'package:liftmanager/res/resources.dart'; import 'package:liftmanager/routers/fluro_navigator.dart'; import 'package:liftmanager/widgets/load_image.dart'; import 'package:liftmanager/internal/bbs/bbs_router.dart'; import 'dart:math' as math; import 'package:liftmanager/internal/search/presenter/base_list_provider.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:liftmanager/internal/bbs/model/liftcase_model.dart'; import 'package:liftmanager/mvp/base_page_state.dart'; import 'package:liftmanager/widgets/my_refresh_list.dart'; import 'package:provider/provider.dart'; import 'package:liftmanager/internal/bbs/presenter/liftcase_list_presenter.dart'; import 'dart:async'; import 'package:liftmanager/utils/time_format.dart'; import 'package:liftmanager/utils/url.dart'; import 'dart:convert'; import 'package:liftmanager/common/common.dart'; // import 'package:flustars/flustars.dart'; import 'package:flustars/flustars.dart' as FlutterStars; import 'package:liftmanager/internal/wode/order_const.dart'; class WorkPlace extends StatefulWidget { @override WorkPlaceState createState() => WorkPlaceState(); } class WorkPlaceState extends BasePageState { BaseListProvider provider = BaseListProvider(); // ExpertListState({Key key}) : super(key: key); bool sortBool = true; String sortName = "排序"; int indexNowConst = 999; String checkId = ""; bool isOnline = true; int _page = 1; List labelList = ["特邀专家", "普通专家"]; List expertType = [ {"value": 0, "label": "特邀专家"}, {"value": 1, "label": "普通专家"} ]; @override void initState() { super.initState(); getBrandDetail(); _onRefresh(); startTimer(); } getLevel(level){ String img; if(level == 1){ img = "L1@2x"; }else if (level == 2){ img = "L2@2x"; }else if (level == 3){ img = "L3@2x"; }else if (level == 4){ img = "L4@2x"; }else if (level == 5){ img = "L5@2x"; } return img; } bool _hasData = false; var detailObj; getBrandDetail() { NewApiService().getExpertDetail(FlutterStars.SpUtil.getString(Constant.userId), onSuccess: (res) { detailObj = res; print("获取详情成功"); if(detailObj.statuz==1){ isOnline = true; }else { isOnline = false; } print(JsonEncoder().convert(res)); print(123123); _hasData = true; setState(() {}); }, onError: (code, msg) { toasts(msg); }); } updateUser(int status){ NewApiService().updateUser({ "userId":FlutterStars.SpUtil.getString(Constant.userId), "statuz":status }, onSuccess: (res) { getBrandDetail(); setState(() {}); }, onError: (code, msg) { toasts(msg); }); } Timer _timer; void startTimer() { //设置 30 秒回调一次 const period = const Duration(seconds: 30); _timer = Timer.periodic(period, (timer) { _onRefresh(); //更新界面 setState(() {}); }); } void cancelTimer() { if (_timer != null) { _timer.cancel(); _timer = null; } } @override void dispose() { super.dispose(); cancelTimer(); } @override Widget build(BuildContext context) { double width = MediaQuery.of(context).size.width; double height = MediaQuery.of(context).size.height; return Container( child: ChangeNotifierProvider>( create: (_) => provider, child: Scaffold( appBar: MyAppBar( centerTitle: '工作台', isFun: true, fun: () { Navigator.popUntil(context, ModalRoute.withName('/home')); }, ), body: Container( child: Stack( children: [ Column( children: [ _hasData ? Container( height: ScreenUtil().setWidth(150), decoration: BoxDecoration( gradient: const LinearGradient( colors: [Color(0xFF00D9FF), Color(0xFF0287FF)], ), ), child: Column( children: [ Container( child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ Container( margin: EdgeInsets.only( left: ScreenUtil().setWidth(10), right: ScreenUtil().setWidth(10), top: ScreenUtil().setWidth(5)), decoration: BoxDecoration( borderRadius: BorderRadius.circular( ScreenUtil().setWidth(25)), ), child: Container( width: ScreenUtil().setWidth(50), height: ScreenUtil().setWidth(70), child: Stack( children: [ Container( padding: EdgeInsets.only(left:ScreenUtil().setWidth(3)), child: ClipRRect( borderRadius: BorderRadius.all( Radius.circular(50)), child: LoadNetworkImage( // image: AssetImage(i['img']), FlutterStars.SpUtil.getString( "avatarUrl"), width: ScreenUtil().setWidth(44), height: ScreenUtil().setWidth(44), // alignment: Alignment.centerLeft, ), ), ), Positioned( top:ScreenUtil().setWidth(34), left: 0, child: LoadAssetImage( // image: AssetImage(i['img']), getLevel(detailObj.expertLevel), width: ScreenUtil().setWidth(50), height: ScreenUtil().setWidth(13), // alignment: Alignment.centerLeft, ), ) ], ), ) ), Expanded( child: Container( padding: EdgeInsets.only( right: ScreenUtil().setWidth(15),bottom: detailObj.platformInvitedFlag==0?ScreenUtil().setWidth(20):ScreenUtil().setWidth(35)), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( detailObj.name ?? '', style: TextStyle( color: Colors.white, fontSize: ScreenUtil().setSp(18)), ), Text( detailObj.proficiencyBrandName ?? '', style: TextStyle( color: Colors.white, fontSize: ScreenUtil().setSp(14)), // textAlign:TextAlign.start, overflow: TextOverflow.ellipsis, ), detailObj.platformInvitedFlag==0?Container( padding:EdgeInsets.only(left:5,right:5), margin: EdgeInsets.only(right:5,top:10), // color:Colors.red, decoration: BoxDecoration( borderRadius: BorderRadius.circular(1.0), border: Border.all( width:0.5, color:Color(0xffB0E2FF), ), ), child:Text( "特邀专家", style: TextStyle( color:Colors.white, fontSize:ScreenUtil().setSp(12) ), textAlign:TextAlign.center, ), ):Container(child: null,) ], ), ), ), GestureDetector( onTap: () { setState(() { isOnline = !isOnline; if(isOnline==true){ updateUser(1); }else { updateUser(0); } }); }, child: Container( margin: EdgeInsets.only(right: 20), child: LoadAssetImage( // image: AssetImage(i['img']), isOnline ? "tab_first/upline" : "tab_first/downline", width: ScreenUtil().setWidth(58), height: ScreenUtil().setWidth(26), // alignment: Alignment.centerLeft, ), ), ) ], ), ), Container( child: Row( crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ Container( child: Column( crossAxisAlignment: CrossAxisAlignment.center, children: [ Text( detailObj.serviceCounts!=null?detailObj.serviceCounts.toString():"", style: TextStyle( color: Colors.white, fontSize: ScreenUtil().setSp(16)), textAlign: TextAlign.start, ), Text( "服务次数", style: TextStyle( color: Colors.white, fontSize: ScreenUtil().setSp(14)), textAlign: TextAlign.start, ), ], ), ), Container( child: Column( crossAxisAlignment: CrossAxisAlignment.center, children: [ Text( detailObj.adoptCounts!=null?detailObj.adoptCounts.toString():"", style: TextStyle( color: Colors.white, fontSize: ScreenUtil().setSp(16)), textAlign: TextAlign.start, ), Text( "采纳次数", style: TextStyle( color: Colors.white, fontSize: ScreenUtil().setSp(14)), textAlign: TextAlign.start, ), ], ), ), ], ), ), ], ), ) : Container(child: null), Expanded( flex: 1, child: Consumer>( builder: (_, provider, __) { return MyListView( key: Key('liftcase_list'), pageSize: 10, itemCount: provider.list.length, stateType: provider.stateType, onRefresh: _onRefresh, loadMore: _loadMore, hasMore: provider.hasMore, itemBuilder: (_, index) { return WorkListWidget(item: provider.list[index]); }, ); })) ], ), ], ))), )); } Future _onRefresh() async { _page = 1; await presenter.getLiftcaseList(_page); } Future _loadMore() async { _page++; await presenter.getLiftcaseList(_page); } @override LiftcaseListPresenter createPresenter() { return LiftcaseListPresenter(); } } class WorkListWidget extends StatelessWidget { WorkListWidget({Key key, this.item}) : super(key: key); dynamic item; @override Widget build(BuildContext context) { double width = MediaQuery.of(context).size.width; return Container( // height: 20, padding: EdgeInsets.only( bottom: ScreenUtil().setWidth(20), top: ScreenUtil().setWidth(10)), decoration: BoxDecoration( border: Border( bottom: BorderSide(width: 0.5, color: Colours.line), ), ), child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ Expanded( child: GestureDetector( behavior: HitTestBehavior.opaque, onTap: () { if (item.dataTable == 1) { NavigatorUtils.push(context, "${BbsRouter.recommendAsk}?id=${item.id}&type=1"); } else if (item.dataTable == 2) { NavigatorUtils.push(context, "${BbsRouter.recommendAsk}?id=${item.id}&type=2"); } }, child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ Container( margin: EdgeInsets.only( left: ScreenUtil().setWidth(10), right: ScreenUtil().setWidth(10), top: ScreenUtil().setWidth(5), ), decoration: BoxDecoration( borderRadius: BorderRadius.circular(ScreenUtil().setWidth(22)), ), child: ClipRRect( borderRadius: BorderRadius.all(Radius.circular(50)), child: LoadNetworkImage( // image: AssetImage(i['img']), item.avatarUrl, width: ScreenUtil().setWidth(43), height: ScreenUtil().setWidth(43), // alignment: Alignment.centerLeft, ), ), ), Expanded( child: Container( padding: EdgeInsets.only(right: ScreenUtil().setWidth(15)), child: Column( children: [ Container( child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ Container( width: width * 0.3, child: Text( item.name ?? "", style: TextStyle( color: Color(0xff333333), fontSize: ScreenUtil().setSp(17), ), textAlign: TextAlign.start, maxLines: 1, overflow: TextOverflow.ellipsis, ), ), Container( padding: EdgeInsets.only(left: 5), child: Text( item.dataTable == 1 ? "问诊服务" : "出诊服务", style: TextStyle( color: Color(0xff0288FF), fontSize: ScreenUtil().setSp(14), ), textAlign: TextAlign.start, ), ) ], ), Container( child: Text( OrderConstant.getStatusName( item.statuz, item.dataTable, arrivedFlag: item.arrivedFlag), style: TextStyle( color: Color(0xffF84203), fontSize: ScreenUtil().setSp(14), ), textAlign: TextAlign.end, ), ) ], ), ), Container( child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Row( crossAxisAlignment: CrossAxisAlignment.center, children: [ Text( item.createTime != null ? DateUtils.instance.getFormartData( timeSamp: item.createTime, format: "yyyy-MM-dd") : "", style: TextStyle( color: Color(0xff999999), fontSize: ScreenUtil().setSp(13), ), textAlign: TextAlign.start, ), Container( padding: EdgeInsets.only(left: 5), child: Text( item.brandName ?? "", style: TextStyle( color: Color(0xff999999), fontSize: ScreenUtil().setSp(13), ), textAlign: TextAlign.start, ), ) ], ), ], ), ), item.dataTable == 2 ? Container( child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Row( crossAxisAlignment: CrossAxisAlignment.center, children: [ Text( '出诊时间:', style: TextStyle( color: Color(0xff666666), fontSize: ScreenUtil().setSp(14), ), textAlign: TextAlign.start, ), Container( padding: EdgeInsets.only(left: 5), child: Text( item.arrivedTime != null ? DateUtils.instance .getFormartData( timeSamp: item.arrivedTime, format: "yyyy-MM-dd HH:mm") : "", style: TextStyle( color: Color(0xff666666), fontSize: ScreenUtil().setSp(14), ), textAlign: TextAlign.start, ), ) ], ), ], ), ) : Container(child: null), item.dataTable == 2 ? Container( child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Row( crossAxisAlignment: CrossAxisAlignment.center, children: [ Text( '出诊地点:', style: TextStyle( color: Color(0xff666666), fontSize: ScreenUtil().setSp(14), ), textAlign: TextAlign.start, ), Container( width: width*0.6, padding: EdgeInsets.only(left: 5), child: Text( item.address ?? "", style: TextStyle( color: Color(0xff666666), fontSize: ScreenUtil().setSp(14), ), textAlign: TextAlign.start, maxLines: 1, overflow: TextOverflow.ellipsis, ), ) ], ), ], ), ) : Container(child: null), Container( child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ Container( width: width*0.7, child: Text( '问题描述:' + (item.expression != null ? item.expression : ""), style: TextStyle( color: Color(0xff666666), fontSize: ScreenUtil().setSp(14), ), textAlign: TextAlign.start, maxLines: 1, overflow: TextOverflow.ellipsis, ), ) ], ), ), // list[i]["type"] != "1" // ? Container( // margin: EdgeInsets.only(top: 6), // child: Row( // children: [ // Container( // padding: // EdgeInsets.only(right: 5), // child: Text( // "¥${list[i]["price"]}", // style: TextStyle( // color: Color(0xffFD0808), // fontSize: // ScreenUtil().setSp(15)), // textAlign: TextAlign.start, // ), // ), // ], // ), // ) // : Container(child: null) ], ), ), ) ], ), ), ), ], ), ); } }