文本超出 TextFormField - Flutter
Text goes out of TextFormField - Flutter
遇到这样的问题,当我创建一个任务并向其中添加 2 个或更多字段时,然后将此文本传输到另一个屏幕时,它会爬出文本字段。我不知道该怎么做才能修复错误。隐藏额外的文本或增加文本下方 TextFormField 的大小。请告诉我如何解决这个问题?谢谢。
edit_todo
class EditTodoScreen extends StatelessWidget {
final Todo todo;
EditTodoScreen({Key? key, required this.todo}) : super(key: key);
final _controller = TextEditingController();
@override
Widget build(BuildContext context) {
_controller.text = todo.description;
return BlocBuilder<TodoBloc, TodoState>(builder: (context, state) {
return Scaffold(
appBar: AppBar(
title: const Text(
'Edit Todo',
style: TextStyle(fontSize: 20.0),
),
),
body: _body(context),
);
});
}
Widget _body(context) {
return Padding(
padding: const EdgeInsets.all(20.0),
child: Column(
children: [
TextFormField(
controller: _controller,
autocorrect: true,
decoration: const InputDecoration(hintText: 'Enter todo message'),
),
const SizedBox(
height: 10.0,
),
InkWell(
onTap: () {
// BlocProvider.of<TodoBloc>(context)
// .add(UpdateTodos(Todo(description: _todoName)));
final updateTodo = Todo(description: _controller.text);
BlocProvider.of<TodoBloc>(context).add(
UpdateTodos(
updateTodo,
// _controller.text,
),
);
Navigator.pop(context);
},
child: _updateBtn(context),
)
],
),
);
}
Widget _updateBtn(context) {
return Container(
width: MediaQuery.of(context).size.width,
height: 50.0,
decoration: BoxDecoration(
color: Colors.black, borderRadius: BorderRadius.circular(10.0)),
child: Center(
child: Text(
'Update Todo',
style: TextStyle(
fontSize: 17.0,
color: Colors.amber.shade700,
fontWeight: FontWeight.bold),
),
),
);
}
todo_list
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => EditTodoScreen(
todo: state.loadedUser[index],
),
),
);
},
您可以为 TextFormField
定义最大和最小线数。我在这里使用了最多两行。使用你认为最适合你的情况的任何东西。如果行数超过您定义的最大值,它将变成可滚动的。
TextFormField(
controller: _controller,
autocorrect: true,
decoration: const InputDecoration(
hintText: 'Enter todo message',
),
maxLines: 2,
minLines: 1,
),
遇到这样的问题,当我创建一个任务并向其中添加 2 个或更多字段时,然后将此文本传输到另一个屏幕时,它会爬出文本字段。我不知道该怎么做才能修复错误。隐藏额外的文本或增加文本下方 TextFormField 的大小。请告诉我如何解决这个问题?谢谢。
edit_todo
class EditTodoScreen extends StatelessWidget {
final Todo todo;
EditTodoScreen({Key? key, required this.todo}) : super(key: key);
final _controller = TextEditingController();
@override
Widget build(BuildContext context) {
_controller.text = todo.description;
return BlocBuilder<TodoBloc, TodoState>(builder: (context, state) {
return Scaffold(
appBar: AppBar(
title: const Text(
'Edit Todo',
style: TextStyle(fontSize: 20.0),
),
),
body: _body(context),
);
});
}
Widget _body(context) {
return Padding(
padding: const EdgeInsets.all(20.0),
child: Column(
children: [
TextFormField(
controller: _controller,
autocorrect: true,
decoration: const InputDecoration(hintText: 'Enter todo message'),
),
const SizedBox(
height: 10.0,
),
InkWell(
onTap: () {
// BlocProvider.of<TodoBloc>(context)
// .add(UpdateTodos(Todo(description: _todoName)));
final updateTodo = Todo(description: _controller.text);
BlocProvider.of<TodoBloc>(context).add(
UpdateTodos(
updateTodo,
// _controller.text,
),
);
Navigator.pop(context);
},
child: _updateBtn(context),
)
],
),
);
}
Widget _updateBtn(context) {
return Container(
width: MediaQuery.of(context).size.width,
height: 50.0,
decoration: BoxDecoration(
color: Colors.black, borderRadius: BorderRadius.circular(10.0)),
child: Center(
child: Text(
'Update Todo',
style: TextStyle(
fontSize: 17.0,
color: Colors.amber.shade700,
fontWeight: FontWeight.bold),
),
),
);
}
todo_list
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => EditTodoScreen(
todo: state.loadedUser[index],
),
),
);
},
您可以为 TextFormField
定义最大和最小线数。我在这里使用了最多两行。使用你认为最适合你的情况的任何东西。如果行数超过您定义的最大值,它将变成可滚动的。
TextFormField(
controller: _controller,
autocorrect: true,
decoration: const InputDecoration(
hintText: 'Enter todo message',
),
maxLines: 2,
minLines: 1,
),