123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375 |
- import 'package:flutter/cupertino.dart';
- import 'package:flutter/material.dart';
- import 'package:flutterappfuyou/YSPage.dart';
- import 'package:flutterappfuyou/code/YSMeans.dart';
- import 'package:flutterappfuyou/code/base/YSBase.dart';
- import 'package:flutterappfuyou/code/base/YSTools.dart';
- import 'package:flutterappfuyou/code/version3/view/YSChapterInputView.dart';
- import 'package:shared_preferences/shared_preferences.dart';
- import '../base/YSNetWorking.dart';
- class YSPerfectChapterInfo extends StatefulWidget {
- final bool isFirst;
- const YSPerfectChapterInfo({Key key, this.isFirst = false}) : super(key: key);
- @override
- _YSPerfectChapterInfoState createState() => _YSPerfectChapterInfoState();
- }
- class _YSPerfectChapterInfoState extends State<YSPerfectChapterInfo> {
- List _titleArray = [
- {'title':'备孕篇'},
- {'title':'孕产篇'},
- {'title':'儿童篇'}
- ];
- int _pageIndex = 1;
- List _showArray = [
- [{'title':'月经一般持续天数','type':1,'image':'母血补采'},{'title':'月经周期天数','type':1,'image':'时钟 2'}],
- [{'title':'预产期','type':2,'image':'日历 2'}],
- [{'title':'宝宝姓名','type':1,'image':'编组 9备份 6'},{'title':'宝宝生日','type':2,'image':'生日 2'},
- {'title':'宝宝性别','type':2,'image':'男女 2'},{'title':'保健册号','type':1,'image':'手册 2'}]
- ];
- SharedPreferences _prefs;
- @override
- void initState() {
- _getSharedPreferences();
- // Future.delayed(Duration(seconds: 0)).then((value) {
- // _getInfoData();
- // });
- super.initState();
- }
- _getSharedPreferences() async{
- _prefs = await SharedPreferences.getInstance();
- }
- _getInfoData() async{
- Map dict1 = await ysRequestHttpNoLoading(context, requestType.get, 'chapter/info', {'category_id':1});
- if(dict1!=null){
- Map data = dict1['data']??{};
- List array1 = _showArray[0];
- array1.clear();
- array1.addAll([
- {'title':'月经一般持续天数','type':1,'image':'母血补采','value':'${data['duration']??''}'},{'title':'月经周期天数','type':1,'image':'时钟 2','value':'${data['duration']??''}'}
- ]);
- setState(() {});
- }
- Map dict2 = await ysRequestHttpNoLoading(context, requestType.get, 'chapter/info', {'category_id':2});
- if(dict2!=null){
- Map data = dict2['data']??{};
- List array2 = _showArray[1];
- array2.clear();
- array2.addAll([
- {'title':'预产期','type':2,'image':'日历 2','value':data['expected_time']}
- ]);
- }
- // Map dict3 = await ysRequestHttpNoLoading(context, requestType.get, 'chapter/info', {'category_id':3});
- // if(dict3!=null){
- // Map data = dict3['data']??{};
- // List array2 = _showArray[1];
- // array2.clear();
- // array2.addAll([
- // {'title':'预产期','type':2,'image':'日历 2','value':data['expected_time']}
- // ]);
- // }
- }
- @override
- Widget build(BuildContext context) {
- List array = _showArray[_pageIndex];
- return YSBase(
- ystitle: '选择篇章',
- isBack: widget.isFirst==false,
- yschild: Container(
- margin: EdgeInsets.only(left: 30,right: 30),
- child: SingleChildScrollView(
- child: Column(
- children: [
- Container(
- margin: EdgeInsets.only(top: 30,bottom: 30),
- height: 120,
- child: GridView.builder(gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
- crossAxisCount: _titleArray.length,
- childAspectRatio: (ysWidth(context)-60)/3/120
- ), itemBuilder: (context,index){
- Map item = _titleArray[index];
- return GestureDetector(
- onTap: (){
- _pageIndex = index;
- setState(() {});
- },
- behavior: HitTestBehavior.opaque,
- child: Container(
- child: LayoutBuilder(builder: (context,conSize){
- return Column(
- children: [
- Image.asset('lib/images/fy_chapter${index+1}_${_pageIndex==index?'2':'1'}.png',height: 90,width: 90,),
- Container(
- height: 30,
- child: Text(item['title'],style: TextStyle(fontSize: 18,color: Color(0xFF444444)),),
- )
- ],
- );
- }),
- ),
- );
- },itemCount: _titleArray.length,padding: EdgeInsets.all(0),physics: NeverScrollableScrollPhysics(),),
- ),
- DashLine(width: 5,color: Color(0xFF979797),height: 1,),
- Container(
- height: ysHeight(context)-ysTOP(context)-261,
- key: Key('$_pageIndex'),
- margin: EdgeInsets.all(15),
- child: SingleChildScrollView(
- child: Column(
- children: [
- if(_pageIndex==1)Container(
- child: Text('请输入产检时医生告知的预产期,如尚未产检可以使用“计算预产期”',style: TextStyle(fontSize: 12,color: Color(0xFF8A8A8A)),),
- padding: EdgeInsets.only(top: 20),
- ),
- array.isNotEmpty?ListView.separated(
- itemBuilder: (context,indexSub){
- Map item = array[indexSub];
- int type = item['type'];
- return type==1?YSChapterInputView(
- item: item,
- ):YSChapterChooseView(
- item: item,
- );
- },
- separatorBuilder: (context,index){
- return Container(height: 30,);
- },
- itemCount: array.length,
- shrinkWrap: true,
- physics: NeverScrollableScrollPhysics(),
- padding: EdgeInsets.only(top: 20),
- ):Container(height: 100,),
- if (_pageIndex==1) GestureDetector(
- onTap: (){
- ysShowCenterAlertView(context, YSCountDateView(postDate: (value){
- array[0]['value'] = value;
- setState(() {});
- },));
- },
- child: Container(
- margin: EdgeInsets.only(top: 10,bottom: 60),
- height: 20,
- alignment: Alignment.centerRight,
- child: Row(
- mainAxisSize: MainAxisSize.min,
- children: [
- Text('计算预产期 ',style: TextStyle(fontSize: 12,color: Color(0xFF808080),decoration: TextDecoration.none,fontWeight: FontWeight.normal),),
- Image(height: 15,width: 15,image: AssetImage('lib/images/calculte.png'),),
- ],
- ),
- ),
- ) else Container(height: 60,),
- YSSubmitView(callback: (){
- if(_pageIndex==0){
- _postPeriodData();
- }else if(_pageIndex==1){
- _postDueData();
- }else if(_pageIndex==2){
- _postChildData();
- }
- },title: _pageIndex==1?'下一步':'完成',)
- ],
- ),
- ),
- ),
- ],
- ),
- ),
- ),
- );
- }
- _postPeriodData() async{
- List array0 = _showArray[0];
- if(array0.isEmpty)return;
- Map cxMap = array0[0];
- Map zqdMap = array0[1];
- if(zqdMap['value']==null){
- ysFlutterToast(context, '请输入周期时间');
- return;
- }
- if(int.parse(zqdMap['value'])>51){
- ysFlutterToast(context, '周期时间过长');
- return;
- }
- if(cxMap['value']==null){
- ysFlutterToast(context, '请输入持续时间');
- return;
- }
- if(int.parse(cxMap['value'])>51){
- ysFlutterToast(context, '持续时间过长');
- return;
- }
- Map dict = await ysRequestHttp(context,requestType.put, 'motherhood/period', {'cycle':zqdMap['value'],'duration':cxMap['value']});
- if(dict!=null){
- _jumpPage();
- }
- }
- _postDueData() async{
- List array1 = _showArray[1];
- if(array1.isEmpty)return;
- Map ycMap = array1[0];
- if(ycMap['value']==null){
- ysFlutterToast(context, '请选择预产期');
- return;
- }
- Map dict = await ysRequestHttpNoLoading(context, requestType.post, 'phase/dueDate', {'expected_time':ycMap['value']});
- if(dict!=null){
- _jumpPage();
- }
- }
- _postChildData() async{
- List array2 = _showArray[2];
- if(array2.isEmpty)return;
- Map xmMap = array2[0];
- Map srMap = array2[1];
- Map xbMap = array2[2];
- Map bjMap = array2[3];
- if(xmMap['value']==null){
- ysFlutterToast(context, '请完善宝宝姓名');
- return;
- }
- if(srMap['value']==null){
- ysFlutterToast(context, '请完善宝宝生日');
- return;
- }
- if(xbMap['value']==null){
- ysFlutterToast(context, '请完善宝宝性别');
- return;
- }
- if(bjMap['value']==null){
- ysFlutterToast(context, '请完善保健册号');
- return;
- }
- DateTime now = DateTime.now();
- DateTime expected = DateTime.parse('${srMap['value']} ${now.hour.toString().padLeft(2,'0')}:${now.minute.toString().padLeft(2,'0')}:${now.second.toString().padLeft(2,'0')}');
- bool isBefore = now.isBefore(expected);
- if(isBefore){
- ysFlutterToast(context, '宝宝生日不能大于当前日期');
- return;
- }
- Map pragma = Map();
- pragma['name'] = xmMap['value'];
- pragma['health_book'] = bjMap['value'];
- pragma['birthday'] = srMap['value'];
- if(xbMap['value']=='男'){
- pragma['gender'] = 1;
- }else{
- pragma['gender'] = 2;
- }
- Map dict = await ysRequestHttp(context,requestType.post, 'child/chapter/addOrUp', pragma);
- if(dict!=null){
- _prefs.setInt('childId', dict['data']['child_id']);
- _jumpPage();
- }
- }
- _jumpPage() {
- if(true){//widget.isFirst
- _prefs.setInt('chapters', _pageIndex);
- if(true){//_pageIndex==1
- Navigator.of(context).pushAndRemoveUntil(CupertinoPageRoute(builder: (context){
- return YSMeans(isFirst: true,);
- }), (route) => false);
- }else{
- Navigator.of(context).pushAndRemoveUntil(CupertinoPageRoute(builder: (context){
- return YSPage();
- }), (route) => false);
- }
- }else{
- Navigator.of(context).pop('完成');
- }
- }
- }
- class YSCountDateView extends StatefulWidget {
- final ValueSetter postDate;
- const YSCountDateView({Key key, this.postDate}) : super(key: key);
- @override
- _YSCountDateViewState createState() => _YSCountDateViewState();
- }
- class _YSCountDateViewState extends State<YSCountDateView> {
- String _dateStr = '';
- @override
- Widget build(BuildContext context) {
- return Center(
- child: Container(
- width: MediaQuery.of(context).size.width-60,
- padding: EdgeInsets.all(15),
- height: 150,
- decoration: BoxDecoration(
- color: Colors.white,
- borderRadius: BorderRadius.all(Radius.circular(10))
- ),
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: [
- Text('计算预产期',style: TextStyle(fontSize: 14,color: Color(0xFF292929),decoration: TextDecoration.none,fontWeight: FontWeight.w600),),
- CupertinoButton(
- padding: EdgeInsets.all(0),
- child: Container(
- height: 30,
- width: MediaQuery.of(context).size.width-30,
- child: Text(_dateStr.isNotEmpty?_dateStr:'请选择末次月经时间进行计算',style: TextStyle(fontSize: 13,color: Color(0xFF808080),decoration: TextDecoration.none,fontWeight: FontWeight.normal),),
- decoration: BoxDecoration(
- border: Border(bottom: BorderSide(width: 0.5,color: Color(0xFFD7D7D7)))
- ),
- ),
- onPressed: (){
- ysDatePicker(context, (value){
- setState(() {
- _dateStr = value;
- });
- },lastDate: DateTime.now().subtract(Duration(days: 1)),initDate: DateTime.now().subtract(Duration(days: 1)));
- },
- ),
- Row(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: [
- Container(),
- Row(
- children: [
- CupertinoButton(
- padding: EdgeInsets.all(0),
- child: Text('取消',style: TextStyle(fontSize: 13,color: Color(0xFF8E1B3C),decoration: TextDecoration.none,fontWeight: FontWeight.w600),),
- onPressed: (){
- Navigator.pop(context);
- },
- ),
- CupertinoButton(
- padding: EdgeInsets.all(0),
- child: Text('计算',style: TextStyle(fontSize: 13,color: Color(0xFF8E1B3C),decoration: TextDecoration.none,fontWeight: FontWeight.w600),),
- onPressed: () async{
- if(_dateStr.isEmpty){
- ysFlutterToast(context, '请选择时间后进行计算');
- return;
- }
- Map dict = await ysRequestHttpNoLoading(context, requestType.post, 'phase/dueDateQuery', {'date':_dateStr});
- if(dict!=null){
- Navigator.pop(context);
- String dueDate = dict['data']['data'];
- widget.postDate(dueDate);
- }
- },
- )
- ],
- )
- ],
- )
- ],
- ),
- ),
- );
- }
- }
|