如何在 Flutter 中同时滚动多个文本字段

Posted

技术标签:

【中文标题】如何在 Flutter 中同时滚动多个文本字段【英文标题】:How to Scroll multiple Textfields together in Flutter 【发布时间】:2021-05-15 13:51:57 【问题描述】:

我有一种情况,其中 2 个文本字段被放置在一个堆栈小部件内,彼此重叠。如果数据超过屏幕大小,我是否可以垂直滚动两个文本字段?

Stack(
              children: [
                Container(
                  width: MediaQuery.of(context).size.width,
                  padding: EdgeInsets.fromLTRB(15, 8, 0, 0),
                  child: SyntaxView(
                      code: codeController.text,
                      syntax: Syntax.C,
                      syntaxTheme: SyntaxTheme.gravityDark(),
                      withZoom: true,
                      withLinesCount: true),
                ),
                Container(
                  width: 362,
                  padding: EdgeInsets.fromLTRB(55, 12, 0, 0),
                  child: TextFormField(
                    scrollPhysics: NeverScrollableScrollPhysics(),
                    focusNode: codeFocus,
                    controller: codeController,
                    autofocus: true,
                    keyboardType: TextInputType.multiline,
                    maxLines: null,
                    style: TextStyle(
                      color: Color(0x00ffffff),
                      // color: Colors.yellow,
                      height: 1.35,
                      fontFamily: "CodeFont",
                      fontSize: 12,
                    ),
                    decoration: InputDecoration(
                      border: InputBorder.none,
                    ),
                    onChanged: (value) 
                      setState(() 
                        CODE = value;
                        // print("X : $codeController.text");
                      );
                    ,
                  ),
                ),
              ],
            ),

【问题讨论】:

使用SingleChildScrollView 【参考方案1】:

处理这种情况的一种简单方法是将您的内容包装在 ListView 中,该 ListView 处理其子项的滚动。以下是来自ListView 文档的 sn-p 示例:

ListView(
  padding: const EdgeInsets.all(8),
  children: <Widget>[
    Container(
      height: 50,
      color: Colors.amber[600],
      child: const Center(child: Text('Entry A')),
    ),
    Container(
      height: 50,
      color: Colors.amber[500],
      child: const Center(child: Text('Entry B')),
    ),
    Container(
      height: 50,
      color: Colors.amber[100],
      child: const Center(child: Text('Entry C')),
    ),
  ],
)

https://api.flutter.dev/flutter/widgets/ListView-class.html

【讨论】:

以上是关于如何在 Flutter 中同时滚动多个文本字段的主要内容,如果未能解决你的问题,请参考以下文章

FLUTTER 滚动多个小部件

Flutter如何测试多个字段对象的哪些字段为空?

多个文本字段的滚动视图不起作用

如何在表格视图 IOS 内的滚动视图中创建文本字段

Flutter Web - 文本字段滚动而不是选择长文本

Flutter - 如何使列屏幕可滚动