wt1.1a introducing flutter_bloc
This commit is contained in:
parent
9ef208d72a
commit
8363d7772f
@ -1,112 +0,0 @@
|
||||
import 'package:aitrainer_app/viewmodel/customer_changing_view_model.dart';
|
||||
import 'package:aitrainer_app/viewmodel/customer_view_model.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:aitrainer_app/widgets/nav_drawer.dart';
|
||||
|
||||
class CustomerNewPage extends StatefulWidget{
|
||||
_CustomerNewPageState createState() => _CustomerNewPageState();
|
||||
}
|
||||
|
||||
class _CustomerNewPageState extends State {
|
||||
final CustomerViewModel customer = CustomerViewModel();
|
||||
String groupValue = "m";
|
||||
final _formKey = GlobalKey<FormState>();
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
CustomerChangingViewModel model;
|
||||
customer.createNew();
|
||||
customer.setSex(groupValue);
|
||||
return Scaffold(
|
||||
drawer: NavDrawer(),
|
||||
appBar: AppBar(
|
||||
title: Text('New customer'),
|
||||
),
|
||||
body: Center(
|
||||
child: Form(
|
||||
key: _formKey,
|
||||
child: Column(
|
||||
children: <Widget>[
|
||||
TextFormField(
|
||||
decoration: InputDecoration(
|
||||
border: OutlineInputBorder(),
|
||||
labelText: 'Name',
|
||||
),
|
||||
validator: (input) => input.length == 0 ? "Please type the name" : null,
|
||||
onChanged: (input) => customer.setName(input),
|
||||
),
|
||||
TextFormField(
|
||||
decoration: InputDecoration(
|
||||
border: OutlineInputBorder(),
|
||||
labelText: 'First Name',
|
||||
),
|
||||
validator: (input) => input.length == 0 ? "Please type the first name" : null,
|
||||
onChanged: (input) => customer.setFirstName(input),
|
||||
),
|
||||
TextFormField(
|
||||
decoration: InputDecoration(
|
||||
border: OutlineInputBorder(),
|
||||
labelText: 'Email',
|
||||
),
|
||||
validator: (String input) {
|
||||
RegExp exp = new RegExp(r"[\w._]+\@[\w._]+.[a-z]+",
|
||||
caseSensitive: false,
|
||||
multiLine: false,);
|
||||
String ret = exp.hasMatch(input) == true ?
|
||||
null:
|
||||
"Please type an email address";
|
||||
return ret;
|
||||
},
|
||||
onChanged: (input) => customer.setEmail(input),
|
||||
),
|
||||
TextFormField(
|
||||
decoration: InputDecoration(
|
||||
border: OutlineInputBorder(),
|
||||
labelText: 'Age',
|
||||
),
|
||||
validator: (input) => (int.parse(input) < 99 && int.parse(input) > 0) ?
|
||||
null :
|
||||
"Please type the right age 0-99",
|
||||
onChanged: (input) => customer.setBirthYear(int.parse(input)),
|
||||
),
|
||||
RadioListTile(
|
||||
title: const Text('Man'),
|
||||
value: "m",
|
||||
groupValue: groupValue,
|
||||
onChanged: (input) => {
|
||||
setState(() {
|
||||
groupValue = input;
|
||||
customer.setSex(input);
|
||||
}
|
||||
)},
|
||||
|
||||
),RadioListTile(
|
||||
title: const Text('Woman'),
|
||||
value: "w",
|
||||
groupValue: groupValue,
|
||||
onChanged: (input) => {
|
||||
setState(() {
|
||||
groupValue = input;
|
||||
customer.setSex(input);
|
||||
}
|
||||
)},
|
||||
),
|
||||
])
|
||||
),
|
||||
),
|
||||
floatingActionButton: FloatingActionButton(
|
||||
onPressed: () => {
|
||||
if (_formKey.currentState.validate()) {
|
||||
model = CustomerChangingViewModel(customer),
|
||||
model.addCustomer(),
|
||||
model.addNewCustomerToList(customer),
|
||||
Navigator.pop(context),
|
||||
}
|
||||
},
|
||||
child: Icon(Icons.save,),
|
||||
mini: true,
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user