Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import 'package:flutter/material.dart';
- import 'package:flutter/widgets.dart';
- import 'controls/databaseClient.dart';
- import 'models/dog.dart';
- void main() => runApp(MyApp());
- class MyApp extends StatelessWidget {
- @override
- Widget build(BuildContext context) {
- return MaterialApp(
- theme: ThemeData(
- primarySwatch: Colors.cyan,
- ),
- home: DogPage(),
- );
- }
- }
- class DogPage extends StatefulWidget {
- @override
- _DogPageState createState() => _DogPageState();
- }
- class _DogPageState extends State<DogPage> {
- final GlobalKey<FormState> _formStateKey = GlobalKey<FormState>();
- Future<List<Dog>> dogs;
- int _dogId;
- String _dogName;
- int _dogAge;
- bool isUpdate = false;
- int dogIdForUpdate;
- DatabaseClient db;
- final _dogIdController = TextEditingController();
- final _dogNameController = TextEditingController();
- final _dogAgeController = TextEditingController();
- @override
- void initState() {
- super.initState();
- db = DatabaseClient();
- openDatabase();
- }
- openDatabase() async {
- await db.open();
- refreshDogList();
- }
- refreshDogList() {
- setState(() {
- dogs = db.getDogs();
- });
- }
- @override
- Widget build(BuildContext context) {
- return Scaffold(
- appBar: AppBar(
- title: Text('App Dog'),
- ),
- body: Column(
- children: <Widget>[
- Form(
- key: _formStateKey,
- autovalidate: true,
- child: Column(
- children: <Widget>[
- Padding(
- padding: EdgeInsets.only(left: 10, right: 10, bottom: 10),
- child: TextFormField(
- validator: (value) {
- if (value.isEmpty) {
- return 'Por favor insira o Id do cachorro';
- }
- if (value.trim() == "")
- return "Somente espaço não é válido!";
- return null;
- },
- onSaved: (value) {
- _dogId = int.parse(value);
- },
- controller: _dogIdController,
- keyboardType: TextInputType.number,
- decoration: InputDecoration(
- focusedBorder: new UnderlineInputBorder(
- borderSide: new BorderSide(
- color: Colors.cyan,
- width: 2,
- style: BorderStyle.solid)),
- labelText: "Id do cachorro",
- icon: Icon(
- Icons.vpn_key,
- color: Colors.cyan,
- ),
- fillColor: Colors.white,
- labelStyle: TextStyle(
- color: Colors.cyan,
- )),
- ),
- ),
- Padding(
- padding: EdgeInsets.only(left: 10, right: 10, bottom: 10),
- child: TextFormField(
- validator: (value) {
- if (value.isEmpty) {
- return 'Por favor insira o nome do cachorro';
- }
- if (value.trim() == "")
- return "Somente espaço não é válido!";
- return null;
- },
- onSaved: (value) {
- _dogName = value;
- },
- controller: _dogNameController,
- decoration: InputDecoration(
- focusedBorder: new UnderlineInputBorder(
- borderSide: new BorderSide(
- color: Colors.cyan,
- width: 2,
- style: BorderStyle.solid)),
- labelText: "Nome do cachorro",
- icon: Icon(
- Icons.pets,
- color: Colors.cyan,
- ),
- fillColor: Colors.white,
- labelStyle: TextStyle(
- color: Colors.cyan,
- )),
- ),
- ),
- Padding(
- padding: EdgeInsets.only(left: 10, right: 10, bottom: 10),
- child: TextFormField(
- validator: (value) {
- if (value.isEmpty) {
- return 'Por favor insira a idade do cachorro';
- }
- if (value.trim() == "")
- return "Somente espaço não é válido!";
- return null;
- },
- onSaved: (value) {
- _dogAge = int.parse(value);
- },
- controller: _dogAgeController,
- keyboardType: TextInputType.number,
- decoration: InputDecoration(
- focusedBorder: new UnderlineInputBorder(
- borderSide: new BorderSide(
- color: Colors.cyan,
- width: 2,
- style: BorderStyle.solid)),
- labelText: "Idade do cachorro",
- icon: Icon(
- Icons.calendar_today,
- color: Colors.cyan,
- ),
- fillColor: Colors.white,
- labelStyle: TextStyle(
- color: Colors.cyan,
- )),
- ),
- ),
- ],
- ),
- ),
- Row(
- mainAxisAlignment: MainAxisAlignment.center,
- children: <Widget>[
- RaisedButton(
- color: Colors.cyan,
- child: Text(
- (isUpdate ? 'ATUALIZAR' : 'ADICIONAR'),
- style: TextStyle(color: Colors.white),
- ),
- onPressed: () {
- if (isUpdate) {
- if (_formStateKey.currentState.validate()) {
- _formStateKey.currentState.save();
- db
- .updateDog(Dog(
- id: dogIdForUpdate, name: _dogName, age: _dogAge))
- .then((data) {
- setState(() {
- isUpdate = false;
- });
- });
- }
- }
- else {
- if (_formStateKey.currentState.validate()) {
- _formStateKey.currentState.save();
- db.insertDog(
- Dog(id: _dogId, name: _dogName, age: _dogAge));
- }
- }
- _dogIdController.text = '';
- _dogNameController.text = '';
- _dogAgeController.text = '';
- refreshDogList();
- },
- ),
- Padding(
- padding: EdgeInsets.all(10),
- ),
- RaisedButton(
- color: Colors.red,
- child: Text(
- (isUpdate ? 'CANCELAR ATUALIZAÇÃO' : 'LIMPAR'),
- style: TextStyle(color: Colors.white),
- ),
- onPressed: () {
- _dogIdController.text = '';
- _dogNameController.text = '';
- _dogAgeController.text = '';
- setState(() {
- isUpdate = false;
- dogIdForUpdate = null;
- });
- },
- ),
- ],
- ),
- const Divider(
- height: 20.0,
- ),
- Expanded(
- child: FutureBuilder(
- future: dogs,
- builder: (context, snapshot) {
- if (snapshot.data == null || snapshot.data.length == 0) {
- return Text('Sem dados para exibir');
- }
- else if (snapshot.hasData) {
- return generateList(snapshot.data);
- }
- return CircularProgressIndicator();
- },
- ),
- ),
- ],
- ),
- );
- }
- SingleChildScrollView generateList(List<Dog> dogs) {
- return SingleChildScrollView(
- scrollDirection: Axis.vertical,
- child: SizedBox(
- width: MediaQuery.of(context).size.width,
- child: DataTable(
- columns: [
- DataColumn(
- label: Text('ID'),
- ),
- DataColumn(
- label: Text('NOME'),
- ),
- DataColumn(
- label: Text('IDADE'),
- ),
- DataColumn(
- label: Text('DELETAR'),
- )
- ],
- rows: dogs
- .map(
- (dog) => DataRow(
- cells: [
- DataCell(
- Text(dog.id.toString()),
- onTap: () {
- setState(() {
- isUpdate = true;
- dogIdForUpdate = dog.id;
- });
- _dogIdController.text = dog.id.toString();
- _dogNameController.text = dog.name;
- _dogAgeController.text = dog.age.toString();
- },
- ),
- DataCell(
- Text(dog.name),
- onTap: () {
- setState(() {
- isUpdate = true;
- dogIdForUpdate = dog.id;
- });
- _dogIdController.text = dog.id.toString();
- _dogNameController.text = dog.name;
- _dogAgeController.text = dog.age.toString();
- },
- ),
- DataCell(
- Text(dog.age.toString()),
- onTap: () {
- setState(() {
- isUpdate = true;
- dogIdForUpdate = dog.id;
- });
- _dogIdController.text = dog.id.toString();
- _dogNameController.text = dog.name;
- _dogAgeController.text = dog.age.toString();
- },
- ),
- DataCell(
- IconButton(
- icon: Icon(Icons.delete),
- onPressed: () {
- db.deleteDog(dog.id);
- refreshDogList();
- },
- ),
- ),
- ],
- ),
- )
- .toList(),
- ),
- ),
- );
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement