123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300 |
- import 'package:flutter/cupertino.dart';
- import 'package:flutter/material.dart';
- import 'package:flutter/widgets.dart';
- import 'package:taskservice/Common/JXColors.dart';
- import 'package:taskservice/Model/JXMemberModel.dart';
- import 'package:taskservice/Model/JXServiceModel.dart';
- import 'package:taskservice/database/DataBase.dart';
- import 'package:taskservice/src/custom_widgets.dart';
- import 'package:taskservice/src/service/page_servicelist.dart';
- class CreateAccPage extends StatefulWidget {
- @override
- _CreateAccPageState createState() => _CreateAccPageState();
- }
- class _CreateAccPageState extends State<CreateAccPage> {
- JXMemberModel member;
- TextEditingController nameController = TextEditingController();
- TextEditingController phoneController = TextEditingController();
- TextEditingController birthController = TextEditingController();
- TextEditingController addrConotroller = TextEditingController();
- TextEditingController remarkConotroller = TextEditingController();
- @override
- void initState() {
- super.initState();
- member = JXMemberModel();
- nameController.addListener(onInfoChanged);
- phoneController.addListener(onInfoChanged);
- birthController.addListener(onInfoChanged);
- addrConotroller.addListener(onInfoChanged);
- remarkConotroller.addListener(onInfoChanged);
- }
- void onInfoChanged() {
- member.name = nameController.value.text;
- member.tel = phoneController.value.text;
- member.birth = birthController.value.text;
- member.addr = addrConotroller.value.text;
- member.remark = remarkConotroller.value.text;
- }
- @override
- Widget build(BuildContext context) {
- return MyScaffold(title: '新建会员', body: Column(
- children: <Widget>[
- Expanded(
- child: CustomScrollView(physics:BouncingScrollPhysics(),
- slivers: <Widget>[
- buildEditPart(),
- buildItemsPart(),
- SliverToBoxAdapter(
- child: Container(
- decoration: BoxDecoration(
- borderRadius: BorderRadius.circular(12),
- border: Border.all(
- width: 1,
- )),
- margin: EdgeInsets.symmetric(vertical: 12, horizontal: 80),
- child: InkWell(
- onTap: () {
- /*跳转到服务*/
- Navigator.of(context).pushNamed('$CreateServiceList',
- arguments: {'services': member.services}).then((value) {
- print(value.toString());
- onClickAddServer(value);
- });
- },
- child: Container(
- padding: EdgeInsets.all(8),
- child: Text(
- '添加服务',
- textAlign: TextAlign.center,
- style: TextStyle(fontSize: 18),
- ),
- ),
- ),
- ),
- ),
- ],
- ),
- ),
- GestureDetector(onTap: onClickSave, child: Container(width: MediaQuery.of(context).size.width, child: Text('保存', textAlign: TextAlign.center, style: TextStyle(fontSize: 16, color: JXColors.kFFFFFF),), padding: EdgeInsets.symmetric(vertical: 16), decoration: BoxDecoration(color: JXColors.k101E40),)),
- ],
- ));
- }
- SliverList buildItemsPart() {
- return SliverList(
- delegate: SliverChildBuilderDelegate((BuildContext context, int index) {
- if (index <= member.services.length - 1) {
- var service = member.services[index];
- return Container(
- padding: EdgeInsets.symmetric(horizontal: 16),
- child: Column(
- children: <Widget>[
- SizedBox(
- height: 8,
- ),
- Row(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: <Widget>[
- Text('类型: ${service.kind}'),
- Text('周期: ${service.cycle}${service.cycleUnit}'),
- ],
- ),
- SizedBox(
- height: 20,
- ),
- Row(
- children: <Widget>[
- Text('备注 ${service.remark}'),
- ],
- ),
- SizedBox(
- height: 8,
- ),
- Divider(
- height: 2,
- thickness: 2,
- ),
- ],
- ),
- );
- } else {
- return null;
- }
- }),
- );
- }
- SliverList buildEditPart() {
- return SliverList(
- delegate: SliverChildListDelegate([
- Row(
- mainAxisSize: MainAxisSize.max,
- children: <Widget>[
- SizedBox(
- width: 20,
- ),
- Text(
- '姓名',
- style: TextStyle(fontSize: 15, fontWeight: FontWeight.bold),
- ),
- Expanded(
- child: Padding(
- padding: const EdgeInsets.symmetric(horizontal: 20),
- child: TextField(controller: nameController,),
- )),
- ],
- ),
- Row(
- mainAxisSize: MainAxisSize.max,
- children: <Widget>[
- SizedBox(
- width: 20,
- ),
- Text(
- '电话',
- style: TextStyle(fontSize: 15, fontWeight: FontWeight.bold),
- ),
- Expanded(
- child: Padding(
- padding: const EdgeInsets.symmetric(horizontal: 20),
- child: TextField(controller: phoneController,),
- )),
- ],
- ),
- Row(
- mainAxisSize: MainAxisSize.max,
- children: <Widget>[
- SizedBox(
- width: 20,
- ),
- Text(
- '生日',
- style: TextStyle(fontSize: 15, fontWeight: FontWeight.bold),
- ),
- Expanded(
- child: Padding(
- padding: const EdgeInsets.symmetric(horizontal: 20),
- child: TextField(controller: birthController,),
- )),
- ],
- ),
- Container(
- height: 44,
- child: Row(
- mainAxisSize: MainAxisSize.max,
- children: <Widget>[
- SizedBox(
- width: 20,
- ),
- Text(
- '地址',
- style: TextStyle(fontSize: 15, fontWeight: FontWeight.bold),
- ),
- Expanded(
- child: Padding(
- padding: const EdgeInsets.symmetric(horizontal: 20),
- child: Container(
- margin: EdgeInsets.only(bottom: 1),
- child: Text('省份/城市/区域')),
- ),
- ),
- ],
- ),
- ),
- Divider(
- height: 1,
- ),
- SizedBox(
- height: 12,
- ),
- Row(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: <Widget>[
- SizedBox(
- width: 12,
- ),
- Container(
- margin: EdgeInsets.only(top: 8),
- width: 60,
- alignment: Alignment.center,
- child: Text(
- '详细地址',
- style: TextStyle(fontSize: 15, fontWeight: FontWeight.bold),
- ),
- ),
- Expanded(
- child: Padding(
- padding: const EdgeInsets.symmetric(horizontal: 20),
- child: Container(
- decoration: BoxDecoration(
- border: Border.all(color: JXColors.kE6E6E6, width: 2),
- borderRadius: BorderRadius.circular(12)),
- height: 150,
- child: TextField(decoration: null, controller: addrConotroller,)),
- )),
- ],
- ),
- SizedBox(
- height: 12,
- ),
- Row(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: <Widget>[
- SizedBox(
- width: 12,
- ),
- Container(
- margin: EdgeInsets.only(top: 8),
- width: 60,
- alignment: Alignment.center,
- child: Text(
- '备注',
- style: TextStyle(fontSize: 15, fontWeight: FontWeight.bold),
- ),
- ),
- Expanded(
- child: Padding(
- padding: const EdgeInsets.symmetric(horizontal: 20),
- child: Container(
- decoration: BoxDecoration(
- border: Border.all(color: JXColors.kE6E6E6, width: 2),
- borderRadius: BorderRadius.circular(12)),
- height: 150,
- child: TextField(decoration: null, controller: remarkConotroller,)),
- )),
- ],
- ),
- SizedBox(
- height: 12,
- ),
- Container(
- padding: EdgeInsets.all(12),
- decoration: BoxDecoration(color: JXColors.kE6E6E6),
- child: Text(
- '服务',
- style: TextStyle(color: JXColors.k2E3032),
- ),
- ),
- ]),
- );
- }
- /*保存*/
- Future<void> onClickSave() async {
- (await MyDataBase.database).saveMember(member);
- Navigator.of(context).pop();
- }
- /*界面返回后添加服务*/
- void onClickAddServer(List <JXServiceModel> services) {
- print('添加多个服务');
- member.services.clear();
- member.services.addAll(services);
- setState(() {});
- }
- }
|