如何在Flutter文本字段或textformfield中获取段落?

时间:2019-11-12 21:13:03

标签: flutter flutter-web

我正在构建一个包含备注字段的表单。我希望用户能够点击enter / return并开始一个新段落。

我能够创建一个将接受并显示大量文本的字段。但是我特别希望用户能够创建段落,否则他们的注释只是一个长字符串而没有间断,因此很难阅读和编辑。

我提出了一个问题here,但被告知我只需要做类似this的事情即可。

这不想要我想要的。我正在尝试做类似this的事情。

似乎应该可行(https://github.com/flutter/flutter/issues/43935)。我不知道我在想什么。

我正在为Web构建,而不是iOS或Android。

main.dart:

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {

  @override
  Widget build(BuildContext context) =>Scaffold(
    body: Center(
      child: Center(
        child:TextFormField(
          textInputAction: TextInputAction.newline,
          keyboardType: TextInputType.multiline,
          maxLines: 10,
        ),
      ),
    ),
  );
}

pubspec.yaml:

name: textformfield_demo
description: A new Flutter project.

version: 1.0.0+1

environment:
  sdk: ">=2.1.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter
  cupertino_icons: ^0.1.2

dev_dependencies:
  flutter_test:
    sdk: flutter

flutter:
  uses-material-design: true

1 个答案:

答案 0 :(得分:0)

具有颤动的属性以设置最大和最小行。您可以设置maxLine:(int)或maxLine:null,这里maxLine:(int)将用户限制为(int)行数,而maxLine:null将提供没有限制的新行文本。
As-

class MultiLineEt extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return _MyHomePageState();
  }
}

class _MyHomePageState extends State<MultiLineEt> {

  @override
  Widget build(BuildContext context) =>Scaffold(
    body: ListView(children: <Widget>[
       new TextField(
          keyboardType: TextInputType.multiline,
          maxLines: null,
        ),
  ],
    ) );
}

使用ListView防止像素错误