【问题标题】:my local storage data does not appear! -Flutter我的本地存储数据没有出现! -扑
【发布时间】: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'); })`

标签: flutter dart


【解决方案1】:

我为您创建了一个minimal exemple,以说明您尝试归档的内容。 由于您发送的代码不完整,我们无法真正为您提供帮助,例如我们无法获得saveToStorage函数的内容。

希望我的minimal exemple可以帮助你自己调试。

【讨论】:

  • 谢谢,但是代码实际上很长,这就是为什么我不能把所有必要的东西都放好。现在问题很复杂,新的错误已经抛出:(我试图将代码上传到git hub,如果你有时间可以看看吗?link
  • 我在你的存储库上向你提出了一个拉取请求,我对你的项目的可读性和可维护性做了一些改进,并修复了你的提醒的创建。 @AbrarLasebai
猜你喜欢
  • 1970-01-01
  • 2014-02-09
  • 1970-01-01
  • 1970-01-01
  • 2013-08-04
  • 1970-01-01
  • 2013-08-21
  • 2023-01-27
  • 2015-08-25
相关资源
最近更新 更多