import 'package:flutter/material.dart'; import 'data_util.dart' as data; import 'db_helper.dart'; class AddForm extends StatefulWidget { const AddForm({Key? key, required this.type}) : super(key: key); final data.Page type; @override State createState() => _AddFormState(type); } class _AddFormState extends State { _AddFormState(this.type); final _formKey = GlobalKey(); final data.Page type; int _templatChoice = -1; List templates = []; final FocusNode _TemplateFocusNode = FocusNode(); void loadTemplates() async { var rows = await DBHelper.dbHelper.getAllLists(data.Page.templates); setState(() { templates.clear(); for (var row in rows) { var template = data.List.fromMap(row); templates.add(template); } }); } List> generateDropdown() { loadTemplates(); List> items = [ DropdownMenuItem(child: Text("None"), value: -1) ]; templates.asMap().forEach((index, value) { items.add(DropdownMenuItem( child: Text(value.name), value: index, )); }); return items; } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text( 'Add ' + ((type == data.Page.lists) ? 'Check List' : (type == data.Page.templates) ? 'Template' : ''), ), ), body: Container( margin: const EdgeInsets.all(10), child: Form( key: _formKey, child: Column( children: [ TextFormField( onFieldSubmitted: (value) { FocusScope.of(context).requestFocus(_TemplateFocusNode); }, decoration: const InputDecoration(labelText: 'Label')), DropdownButtonFormField( focusNode: _TemplateFocusNode, value: _templatChoice, onChanged: (value) { setState() { _templatChoice = (value != null) ? value : -1; } }, decoration: const InputDecoration(labelText: "Starting Template"), items: generateDropdown(), ) ], ), ), ), floatingActionButton: FloatingActionButton( child: Icon(Icons.save_alt), onPressed: () { // TODO implement adding list to database Navigator.pop(context); // TODO replace route with checklist page }, ), floatingActionButtonLocation: FloatingActionButtonLocation.centerFloat, ); } }