import 'dart:convert'; import 'dart:io'; import 'package:eitc_erm_app/registration.dart'; import 'package:eitc_erm_app/utils/Component.dart'; import 'package:eitc_erm_app/utils/Constants.dart'; import 'package:eitc_erm_app/utils/logger.dart'; import 'package:eitc_erm_app/widget/loading.dart'; import 'package:flutter/material.dart'; import 'package:http/http.dart' as http; import 'add_patient.dart'; import 'bean/user_list.dart'; import 'online_consultation.dart'; String mFrom = ""; // void main() { // WidgetsFlutterBinding.ensureInitialized(); // runApp(SelectPatient()); // } class SelectPatient extends StatefulWidget { SelectPatient(String from) { mFrom = from; } @override State createState() => SelectPatientState(); } class SelectPatientState extends State { ValueNotifier result = ValueNotifier(null); late Future _future; late BuildContext cxt; @override void initState() { super.initState(); _future = fetchData(); } Future fetchData() async { Map headers = { 'token': '${Global.token}', }; final response = await http.get(Uri.parse('${Global.BaseUrl}user/list'), headers: jsonHeaders(withToken: true)); if (response.statusCode == 200) { final json = decodeBodyToJson(response.bodyBytes); logd("就诊人列表=$json"); UserListEntity mUserListEntity = new UserListEntity.fromJson(json); if (mUserListEntity.code == Global.responseSuccessCode) { } else { Component.toast("服务器错误提示:" + mUserListEntity.msg.toString(), 0); return null; } return mUserListEntity; } else { Component.toast("出错了,请稍后再试!", 0); return null; } } @override Widget build(BuildContext context) { cxt = context; return Scaffold( appBar: new AppBar( title: new Text('选择就诊人', style: TextStyle( color: Colors.white, )), centerTitle: true, elevation: 0.5, backgroundColor: Global.StatusBarColor, leading: new IconButton( tooltip: '返回上一页', icon: const Icon( Icons.arrow_back_ios, color: Colors.white, ), onPressed: () { Navigator.of(context).pop(); //_nextPage(-1); }, ), ), body: Column(children: [ /*Text( '选择就诊人', style: const TextStyle(fontSize: 15), textAlign: TextAlign.start, overflow: TextOverflow.ellipsis, ),*/ FutureBuilder( future: _future, builder: (context, snapshot) { if (snapshot.hasData) { UserListEntity? data = snapshot.data; return Expanded( // wrap in Expanded child: ListView.separated( itemCount: data?.data!.length ?? 0, itemBuilder: (context, index) { return ListTile( title: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Row(children: [ Text( data!.data == null ? "" : data.data![index].patientName as String, style: const TextStyle(fontSize: 18), ), const SizedBox(width: 15), // if (index == 0) Container( padding: const EdgeInsets.symmetric(horizontal: 5), decoration: const ShapeDecoration( shape: StadiumBorder(), color: Colors.lightBlueAccent), child: Text( " ${data.data == null ? "" : data.data![index].userRelationship} ", style: const TextStyle( color: Colors.white, fontSize: 13)), ), ]), if (data.data == null ? false : data.data![index].isDefault == 1) const Text( '默认就诊人', style: TextStyle(fontSize: 13, color: Colors.grey), ), ]), subtitle: Text( '身份证-${data!.data == null ? "" : data!.data![index].identificationCard}'), onTap: () { Global.appointmentPersonId = data!.data![index].patientId!; Global.patient = data; Global.selectPatient = index; if (mFrom == "fromDoctorDetail") { Navigator.of(cxt).pop(); } else if (mFrom == "fromRecordRegistration") { Navigator.pop(cxt, "success"); } else if (mFrom == "fromSelectDoctor") { Navigator.push( context, MaterialPageRoute( builder: (context) => OnlineConsultation()), ); } else { Navigator.push( context, MaterialPageRoute( builder: (context) => Registration( userListEntity: data, whichPatient: index, key: Key(""))), ); } }, ); }, separatorBuilder: (BuildContext context, int index) => const Divider(), )); } else if (snapshot.hasError) { return Text('Error: ${snapshot.error}'); } return const Expanded( child: Center( child: ColorLoader(), )); }, ), Padding( padding: const EdgeInsets.symmetric(horizontal: 20), child: SizedBox( width: double.infinity, child: ElevatedButton( style: const ButtonStyle( backgroundColor: WidgetStatePropertyAll(Colors.blue), ), onPressed: () async { final result = await Navigator.push( context, MaterialPageRoute( builder: (context) => AddPatient( userListEntity: UserListEntity(), whichPatient: -1, key: const Key(""), )), ); setState(() { _future = fetchData(); }); }, child: const Text("添加就诊人", style: TextStyle(color: Colors.white, fontSize: 15)), ), ), ), const SizedBox( height: 10, ) ]), ); } }