自定义 flutter 文本字段中的最大行数
Max lines in custom flutter text field
我在 flutter 应用程序中有一个 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)
一行只能输入一个字符,如下图:
我的问题是:
为什么会出现这个问题,我该如何解决?
我解决了:)
我必须在 suffixIcon 小部件中使用 null 而不是 Container。
容器小部件造成问题。
suffixIcon: widget.isSuffixIcon
? Icon(Icons.check_circle, color: Theme.of(context).hintColor)
: null,
我在 flutter 应用程序中有一个 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)
一行只能输入一个字符,如下图:
我的问题是:
为什么会出现这个问题,我该如何解决?
我解决了:) 我必须在 suffixIcon 小部件中使用 null 而不是 Container。 容器小部件造成问题。
suffixIcon: widget.isSuffixIcon
? Icon(Icons.check_circle, color: Theme.of(context).hintColor)
: null,