【发布时间】:2023-03-22 04:15:02
【问题描述】:
我有这个 showModalBottomSheet,我可以在 TextFormField 小部件中输入文本,定义如下:
showModalBottomSheet(
useRootNavigator: true,
context: context,
clipBehavior: Clip.antiAlias,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.vertical(
top: Radius.circular(24),
),
),
builder: (context) {
return StatefulBuilder(builder: (context, setModalState) {
return Container(
padding: const EdgeInsets.all(32),
child: Form(
key: _formKey,
child: Column(
children: [
TextFormField(
validator: (String? value) {
if (value!.isEmpty)
return 'Please enter name';
},
controller: detailsController,
style: TextStyle(),
border: OutlineInputBorder(
borderRadius:
BorderRadius.circular(5.0)),
),
TextFormField(
controller: nameController,
style: TextStyle(),
border: OutlineInputBorder(
borderRadius:
BorderRadius.circular(5.0)),
),
),
SizedBox(
height: 10,
),
ElevatedButton(
onPressed: () {
setState(() {
if (_formKey.currentState!.validate()) {
_save();
Navigator.pop(context);
ScaffoldMessenger.of(context)
.showSnackBar(SnackBar(
content:
Text('Done'))); }}); },
child: Text('save'),
当我点击保存按钮时,它应该带着TextField中的数据回到主页,但它没有出现!
这是它们应该出现的地方:
ListView(children: [
Padding(
padding: const EdgeInsets.all(8.0),
child: FutureBuilder(
future: storage.ready,
builder: (context, snapshot) {
if (snapshot.data == null) {
return Center(child: CircularProgressIndicator());
}
if (!initial) {
var items = storage.getItem('reminder');
if (items != null) {
list.items = List<Data>.from((items as List).map((item) =>
Data(
id: item['id'],
name: item['name'],
details: item['details'],
save: item['save'])));
}
initial = true;
}
List<Widget> widgets = list.items.map((item) {
return remindersCard(item.name, item.details);
}).toList();
return Column(children: <Widget>[
Expanded(
flex: 1,
child: ListView(
children: widgets,
itemExtent: 50.0,
我的本地存储功能是:
_addReminder(String name, String details) {
setState(() {
final item = new Data(id: id, name: name, details: details, save: true);
list.items.add(item);
id++;
_saveToStorage();
print('must');
});
}
【问题讨论】:
-
` _addReminder(String name, String details) { setState(() { final item = new Data(id: id, name: name, details: details, save: true); list.items。 add(item); id++; _saveToStorage(); print('must'); })`