首页 > 解决方案 > 在重建之间保持状态

问题描述

我有一个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,但据我所知,我只能访问旧的小部件而不是它的状态。

如何将旧小部件的状态转移到新小部件?

标签: flutterdartstatefulwidget

解决方案


推荐阅读