Flutter:多行TextField(TextFormField)根本不起作用

时间:2020-02-26 17:50:46

标签: flutter dart

我在Flutter刚起步,所以我可能做错了什么,但是...我无法解决这个问题。 关于如何为TextField / TextFormField允许多行文本,我已经准备好很多帖子。

我尝试将maxLines设置为null或设置一个较大的数字,以强制执行(或不执行)最大行数,但是没有任何效果!

为什么简单的东西行不通?

// in a Scaffold of a StatefulWidget
 body: Padding(
        padding: const EdgeInsets.all(50.0),
        child:      TextField(
          keyboardType: TextInputType.multiline,
          minLines: 1,
          maxLines: 5,
        ),

我已经在两种不同的真实Android设备上尝试过,按ENTER键无济于事。不幸的是,由于没有Mac,因此无法在iOS上测试行为。


编辑1

以下由 copsonroad 提供的解决方案,

@override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
          title: Text(
              widget.event.shortName == null || widget.event.shortName.isEmpty
                  ? AppLocalizations.of(context).eventEditorTitleNewEvent
                  : AppLocalizations.of(context)
                      .eventEditorTitleEditEvent(widget.event.shortName)),
          actions: <Widget>[
            if (_canSave == true) ...[
              IconButton(
                icon: Icon(Icons.done),
                onPressed: () => _saveEventAndPop(),
              )
            ],
          ]),
      body: Center(
        child: Padding(
          padding: const EdgeInsets.all(50),
          child: SizedBox(
            height: 5 * 50.0,
            child: TextField(
              decoration: InputDecoration(hintText: "Enter a message"),
              keyboardType: TextInputType.multiline,
              maxLines: 5,
            ),
          ),
        ),
      ),
    );
  }

产生以下结果:

image description

1 个答案:

答案 0 :(得分:1)

截屏:

enter image description here


@override
Widget build(BuildContext context) {
  var maxLines = 5;
  return Scaffold(
    appBar: AppBar(),
    body: Center(
      child: Padding(
        padding: const EdgeInsets.all(50),
        child: SizedBox(
          height: maxLines * 50.0,
          child: TextField(
            decoration: InputDecoration(hintText: "Enter a message"),
            keyboardType: TextInputType.multiline,
            maxLines: maxLines,
          ),
        ),
      ),
    ),
  );
}

编辑:

在Android上对其进行测试:

enter image description here