Lista de contato
class ContactsList extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Contacts'),
),
body: FutureBuilder<List<Contact>>(
initialData: List(),
future: findAll(),
builder: (context, snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.none:
// TODO: Handle this case.
break;
case ConnectionState.waiting:
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
CircularProgressIndicator(),
Text('Loading')
],
),
);
break;
case ConnectionState.active:
// TODO: Handle this case.
break;
case ConnectionState.done:
final List<Contact> contacts = snapshot.data;
return ListView.builder(
itemBuilder: (context, index) {
final Contact contact = contacts[index];
return _ContactItem(contact);
},
itemCount: contacts.length,
);
break;
}
return Text("Unknown error");
},
),
floatingActionButton: FloatingActionButton(
onPressed: () {
Navigator.of(context).push(
MaterialPageRoute(
builder: (context) => ContactForm(),
),
);
},
child: Icon(
Icons.add,
),
),
);
}
}
class _ContactItem extends StatelessWidget {
final Contact contact;
_ContactItem(this.contact);
@override
Widget build(BuildContext context) {
return Card(
child: ListTile(
title: Text(
contact.name.toString(),
style: TextStyle(fontSize: 24.0),
),
subtitle: Text(
contact.accountNumber.toString(),
style: TextStyle(fontSize: 16.0),
),
),
);
}
}
Formulario
import 'package:bytebank/database/app_database.dart';
import 'package:bytebank/models/contact.dart';
import 'package:flutter/material.dart';
class ContactForm extends StatefulWidget {
@override
_ContactFormState createState() => _ContactFormState();
}
class _ContactFormState extends State<ContactForm> {
final TextEditingController _nameController = TextEditingController();
final TextEditingController _accountNumberController =
TextEditingController();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('New Contact'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
children: <Widget>[
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: TextField(
controller: _nameController,
decoration: InputDecoration(
labelText: 'Full Name',
),
style: TextStyle(fontSize: 24.0),
),
),
TextField(
controller: _accountNumberController,
decoration: InputDecoration(
labelText: 'Acctoun Number',
),
style: TextStyle(fontSize: 24.0),
keyboardType: TextInputType.number,
),
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: SizedBox(
//para envolver o button e aumentar o tamanho
width: double.maxFinite, // valores maximo da tela
child: RaisedButton(
child: Text('Create'),
onPressed: () {
final String name = _nameController.text;
final int accountNumber =
int.tryParse(_accountNumberController.text);
final Contact newContact = Contact(0, name, accountNumber);
save(newContact).then((id) => Navigator.pop(context));
},
),
),
),
],
),
),
);
}
}
Estou com problemas no video o professor ao clicar no botão criar ele volta pra tela da lista e ja carrega o novo item mais no meu ele não esta carregando preciso voltar pra home e entrar de novo para mostrar a lista porque no meu não mostar e carregar o novo item