Flutter Controller 中使用别一个Controller

24 min read

在 Flutter 中使用另一个 Controller 的方法有很多种,比较常见的两种方法是:

  1. 使用 TextEditingController 控制器

TextEditingController 控制器可以用于管理 TextFieldTextFormField 等可编辑的文本控件的文本内容。如果要在 TextField 中显示另一个 TextField 控件的文本内容,可以先创建一个 TextEditingController 控制器,并在需要显示另一个 TextField 的文本内容的 TextField 中设置它的 controller 属性。

示例代码:

TextEditingController _textEditingController = TextEditingController();
// 创建一个新的 TextEditingController 控制器

TextField(
  controller: _textEditingController,
  // 在需要显示另一个 TextField 的文本内容的 TextField 中设置 _textEditingController 控制器
  decoration: InputDecoration(
    labelText: '输入文字',
    hintText: '请输入要显示的文字',
  ),
),
TextField(
  decoration: InputDecoration(
    labelText: '显示文字',
  ),
  readOnly: true,
  // 另一个 TextField 只用于显示,设置为 readOnly
  controller: _textEditingController,
  // 在需要显示文本的 TextField 中使用 _textEditingController 控制器
),
  1. 使用 ScrollController 控制器

ScrollController 控制器可以用于管理可滚动的控件,比如 ListViewGridView 等。如果需要在一个 ListView 中显示另一个 ListView 的内容,可以先创建一个 ScrollController 控制器,并在需要显示另一个 ListViewListView 中设置它的 controller 属性。

示例代码:

ScrollController _scrollController = ScrollController();
// 创建一个新的 ScrollController 控制器

ListView(
  controller: _scrollController,
  // 在需要显示另一个 ListView 的 ListView 中设置 _scrollController 控制器
  children: [
    // ...
  ],
),
ListView(
  children: [
    // 这里需要显示另一个 ListView 的内容
  ],
  controller: _scrollController,
  // 在需要显示另一个 ListView 的 ListView 中,使用 _scrollController 控制器
),

以上两种方法都是使用控制器将一个控件的属性与另一个控件的属性绑定起来,以实现同步更新的效果。需要根据具体情况选择合适的方法。