首页 > 解决方案 > 自定义颤振文本字段中的最大行数

问题描述

我在颤振应用中有一个 AppTextField 如下:

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:intl/intl.dart' as intl;

class AppTextField extends StatefulWidget {
  final int maxLines;
  final String? title;
  final TextInputType? keyboardType;
  final bool autoFocus;
  final TextInputAction inputAction;
  final bool isSuffixIcon;

  AppTextField(
      {this.title,
      this.maxLines: 1,
      this.keyboardType,
      this.autoFocus: false,
      this.inputAction: TextInputAction.next,
      this.isSuffixIcon: false});

  @override
  State<StatefulWidget> createState() => AppTextFieldSate();
}

class AppTextFieldSate extends State<AppTextField> {
  String? text = '';

  bool isRTL(String text) {
    return intl.Bidi.detectRtlDirectionality(text);
  }

  @override
  Widget build(BuildContext context) => Container(
      child: TextField(
          textDirection: isRTL(text!) ? TextDirection.rtl : TextDirection.ltr,
          textInputAction: widget.inputAction,
          keyboardType: widget.keyboardType,
          autofocus: widget.autoFocus,
          style: Theme.of(context).textTheme.bodyText1,
          maxLines: widget.maxLines,
          decoration: InputDecoration(
            labelText: widget.title,
            suffixIcon: widget.isSuffixIcon
                ? Icon(Icons.check_circle, color: Theme.of(context).hintColor)
                : Container(),
          ),
          onChanged: (value) {
            setState(() {
              text = value;
            });
          }));
}

当我在 AppTextField 中使用maxLines时,出现了问题!

AppTextField(maxLines: 5, keyboardType: TextInputType.multiline)

一行中只输入一个字符,如下图:

在此处输入图像描述

我的问题是:

为什么会出现这个问题,我该如何解决?

标签: fluttertextfield

解决方案


我解决了 :) 我必须在 suffixIcon 小部件中使用 null 而不是 Container 。容器小部件造成问题。

 suffixIcon: widget.isSuffixIcon
                ? Icon(Icons.check_circle, color: Theme.of(context).hintColor)
                : null,

推荐阅读