我正在努力为用户创造一种身临其境的体验,他必须完成一个句子.

我面临的困难部分是如何使其"响应",以便输入文本完成当前行,并在超过当前行的情况下添加新的整行.

以下是Textfield为空时的图像示例:

Empty text field

以下是给它写信的一个例子:

enter image description here

对于如何构建这样的文本字段,您有什么建议吗?

推荐答案

go 掉textField的边框并在输入文本样式中添加下划线如何?

TextField(
        style: TextStyle(
    fontSize: 15,
    decoration: TextDecoration.underline,
  ),  decoration: InputDecoration(
          border: InputBorder.none,
          
        ),
      ),

像这样的事情

Edit 2:

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData.dark().copyWith(
        scaffoldBackgroundColor: Colors.black,
      ),
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        body: Padding(
          padding: const EdgeInsets.all(32.0),
          child: Center(child: MyWidget()),
        ),
      ),
    );
  }
}

class MyWidget extends StatefulWidget {
  @override
  State<MyWidget> createState() => _MyWidgetState();
}

class _MyWidgetState extends State<MyWidget> {
  String filtext = "    ";
  TextEditingController myController = TextEditingController();
  FocusNode myFocusNode = FocusNode();
  @override
  void dispose() {
    myController.dispose();
    myFocusNode.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: [
        Container(
          constraints: BoxConstraints(maxWidth: 0, maxHeight: 0),
          child: IntrinsicWidth(
            child: TextField(
              focusNode: myFocusNode,
              controller: myController,
              onChanged: (value) {
                filtext = value;
                if (value.length <= 0) {
                  filtext = "    ";
                }
                setState(() {});
              },
              style: TextStyle(
                decoration: TextDecoration.underline,
              ),
              decoration: InputDecoration(
                  contentPadding: EdgeInsets.zero, border: InputBorder.none),
            ),
          ),
        ),
        Container(
            width: MediaQuery.of(context).size.width,
            child: InkWell(
              onTap: () {
                setState(() {});
                FocusScope.of(context).requestFocus(myFocusNode);
                myFocusNode = FocusNode();
                setState(() {});
              },
              child: RichText(
                text: TextSpan(
                  style: DefaultTextStyle.of(context).style,
                  children: <TextSpan>[
                    TextSpan(text: ' I am '),
                    TextSpan(
                        text: " $filtext ",
                        style: TextStyle(
                          decoration: TextDecoration.underline,
                        )),
                    TextSpan(text: ' Thank you for coming'),
                  ],
                ),
              ),
            )),
      ],
    );
  }
}

sample output

Flutter相关问答推荐

下拉图标未居中

我有相关的下拉菜单Flutter Windows应用程序的问题

在LinkedIn上分享Fighter和Web的链接会产生不同的结果

升级到Ffltter 3.16后,应用程序栏、背景 colored颜色 、按钮大小和间距都会发生变化

按一下按钮即可更新 fl_chart

如何在 Flutter 中创建厚度沿着容器逐渐减小的边框

Dart:未捕获错误:RangeError(索引):索引超出范围:索引应小于 7:7

点击按钮后重新启动定时器

在flutter中从图库或相机中 Select 图像的方法

#Flutter/Riverpod - 使用 AsyncNotifier 时是否可以仅调用错误?

有什么办法可以消除Flutter 中的传递依赖?

如何将 List 转换为 String []?

容器在发布模式下显示灰色框(抖动)

无法在 flutter 中更新 void 方法内的变量值

Flutter 如何要求用户在应用程序中设置电话密码?

Flutter 中的无效日期格式 2022 年 11 月 14 日

如何在Flutter 中根据其父小部件高度设置图标按钮飞溅半径

在列表视图Flutter 中 Select 下一个单选按钮时单选按钮更改

Flutter:如何将 AssetImage 转换为 Unit8List?

Flutter 广告导致延迟