如何在颤动中删除TextField底部的空间?

Det*_*per 17 android dart flutter

对话

我不明白为什么TextField文本和蓝线之间的底部有空间。

这是我的代码:

Future<Null> _selectNoteType (BuildContext context) async {

  switch (await showDialog<Null>(

      context: context,
      builder: (BuildContext context) {

        return new SimpleDialog(

          title: const Text('Select Note Type'),
          children: <Widget>[

            Padding(
              padding: const EdgeInsets.only(left: 8.0, right: 8.0),
              child: new TextField(
                keyboardType: TextInputType.text,
                maxLines: 1,
                style: new TextStyle(
                  color: Colors.black,
                  fontSize: 20.0
                ),
              ),
            ),

            new SimpleDialogOption(
                onPressed: () {},
                child: const Text('Text')
              ),

            new SimpleDialogOption(
              onPressed: () {},
              child: const Text('Checklist')
            ),
          ],
        );
      }
  )) {}
}
Run Code Online (Sandbox Code Playgroud)

vov*_*ost 31

在我的情况下,TextField即使使用InputDecoration.collapsed().

我的版本根本没有任何填充并采用最小尺寸:

TextField(
  decoration: InputDecoration(
    contentPadding: EdgeInsets.all(0.0),
    isDense: true,
    border: InputBorder.none,
  ),
  minLines: 1,
  maxLines: 1,
);
Run Code Online (Sandbox Code Playgroud)

示例预览

实时预览:https : //dartpad.dev/3f9149a1c8f5eec352c796e7585e233c

  • 如果您有后缀或前缀图标,在这种情况下这将不起作用 (2认同)

che*_*ins 7

您可以InputDecoration对 的decoration:属性使用折叠TextField

  Future<Null> _selectNoteType(BuildContext context) async {

    InputDecoration decoration = const InputDecoration.collapsed()
      ..applyDefaults(Theme.of(context).inputDecorationTheme);

    switch (await showDialog<Null>(
        context: context,
        builder: (BuildContext context) {
          return new SimpleDialog(
            title: const Text('Select Note Type'),
            children: <Widget>[
              Padding(
                padding: const EdgeInsets.only(left: 8.0, right: 8.0),
                child: new TextField(
                  decoration: decoration,
                  keyboardType: TextInputType.text,
                  maxLines: 1,
                  style: new TextStyle(color: Colors.black, fontSize: 20.0),
                ),
              ),
              new SimpleDialogOption(
                  onPressed: () {}, child: const Text('Text')),
              new SimpleDialogOption(
                  onPressed: () {}, child: const Text('Checklist')),
            ],
          );
        })) {
    }
  }
Run Code Online (Sandbox Code Playgroud)

但是你必须知道使用折叠的后果InputDecoration。从文档:

  /// Whether the decoration is the same size as the input field.
  ///
  /// A collapsed decoration cannot have [labelText], [errorText], an [icon].
  ///
  /// To create a collapsed input decoration, use [InputDecoration..collapsed].
  final bool isCollapsed;
Run Code Online (Sandbox Code Playgroud)

对于InputDecoration.collapse()构造函数:

  /// Defines an [InputDecorator] that is the same size as the input field.
  ///
  /// This type of input decoration does not include a border by default.
  ///
  /// Sets the [isCollapsed] property to true.
  const InputDecoration.collapsed({
Run Code Online (Sandbox Code Playgroud)


小智 5

isDense就可以了。使用更少的垂直空间

TextField(
  decoration: InputDecoration(
    isDense: true,
  ),
);
Run Code Online (Sandbox Code Playgroud)