flutter - 在重建之间保持状态
问题描述
我有一个StatefulWidget
由字段列表构建的。
它看起来像这样:
class MultiFieldForm extends StatefulWidget {
/// constructor
const MultiFieldForm(this.fields);
/// Fields
final List<Field> fields;
@override
_MultiFieldFormState createState() => _MultiFieldForm();
}
class _MultiFieldFormState extends State<MultiFieldForm> {
/// constructor
_MultiFieldFormState();
/// Fields the user has minimized
List<Field> collapsedFields = [];
/// Fields the user has filled with the values
Map<Field,String> filledFields = {};
@override
Widget build(BuildContext context) {
// build code here
}
}
该州采用此字段列表并为每个字段创建一个表单,其中包含一个要填写的文本框和一个提交整个内容的按钮。
现在这可以工作了,除非在用户填写表单时向表单添加了一个新字段,并且在旧的位置构建了全新的小部件。对于用户来说,这看起来就像他们的表单刚刚被完全擦除。事实上,他们必须重新开始。这并不理想,因为我实际上一直都有新的领域出现。
我想做的是在构建新状态时可以访问旧状态,这样我就可以复制用户已经填写的内容并对其进行调整,使其适合新表单。
这有点像didUpdateWidget
,但据我所知,我只能访问旧的小部件而不是它的状态。
如何将旧小部件的状态转移到新小部件?
解决方案
推荐阅读
- design-patterns - 委托模式;如何共享上下文信息?
- javascript - 如何制作一个可以将任何看起来像 javascript 代码的字符串转换为对象的函数?
- python - ValueError:python AI程序中的矩阵未对齐问题
- c - 为什么在这种情况下使用 memset
- jquery - 使用 Jquery 在 foreach MVC Razor 表中定位特定 td
- omnet++ - Castalia WBAN application | Getting Throughput
- javascript - Node spawn stdout on data not being reached when run from command line
- javascript - How to render a Twig template after AJAX call
- c++ - 在库中创建 CWnd
- django - Django Custom Setting Size Attribute on Model Form Not Working