当 ExpansionTile 在 Flutter 中折叠时,ExpansionTile 内的 TextFormField 会丢失数据

Vis*_*n K 4 dart flutter

这是我的代码,我创建了一个ExpansionTile并且它有一个 child TextFormField

import 'package:flutter/material.dart';

class OrderCreatePage extends StatefulWidget {
  @override
  _OrderCreatePageState createState() => _OrderCreatePageState();
}

class _OrderCreatePageState extends State<OrderCreatePage> {
  String _userID;
  TextEditingController _controllerl;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: new Text("Create"),
      ),
      body: ExpansionTile(
        title: Text("Create"),
        children: <Widget>[
          TextFormField(
            decoration: InputDecoration(
              labelText: "User ID",
              icon: Icon(Icons.face),
            ),
            validator: (val) {},
            controller: _controllerl,
            onSaved: (val) => _userID = val,
          )
        ],
      ),
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

每当我在 中输入内容TextFormField并折叠 时ExpansionTile, 中的数据TextFormField就会丢失。我使用这种类型的用户界面是因为我必须创建一个大表单来获取大量详细信息。如果没有ExpansionTile,那么用户必须滚动很长一段距离。

小智 5

https://api.flutter.dev/flutter/material/ExpansionTile/maintainState.html

ExpansionTile(maintainState: true, title: Text("text here"), ...
Run Code Online (Sandbox Code Playgroud)

这样,孩子们在折叠和打开后的状态就会保持不变。