创建新行时如何保持 TextFormField 边框的高度
How to maintain the height of a TextFormField border when new line is created
Container(
padding: EdgeInsets.only(bottom: 150),
margin: EdgeInsets.all(10),
decoration: BoxDecoration(
border: Border.all(width: 2, color: Colors.black),
borderRadius: BorderRadius.all(Radius.circular(10))),
child: TextFormField(
keyboardType: TextInputType.multiline,
maxLines: null,
style: TextStyle(
fontSize: 20,
fontWeight: FontWeight.w600,
fontFamily: 'Montserrat'),
decoration: InputDecoration(
border: InputBorder.none,
hintText: 'Task Description...',
hintStyle: TextStyle(
fontFamily: 'Montserrat',
fontWeight: FontWeight.w400,
fontStyle: FontStyle.italic,
fontSize: 20)),
),
)
因此,我事先使用 Container 和 Text 小部件制作布局,然后将其更改为 TextFormField,但我真的想坚持使用 Container 的边框。但是我有这个问题,当我输入一个新行时,border/box 自动调整它的高度。我不想这样,有什么办法可以解决这个问题吗?
谢谢。
定义 minLines
和 maxLines
相同:
完整源代码
import 'package:flutter/material.dart';
void main() {
runApp(
MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Flutter Demo',
home: HomePage(),
),
);
}
class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
padding: EdgeInsets.all(10),
margin: EdgeInsets.all(10),
decoration: BoxDecoration(
border: Border.all(width: 2, color: Colors.black),
borderRadius: BorderRadius.all(Radius.circular(10)),
),
child: TextFormField(
keyboardType: TextInputType.multiline,
minLines: 5,
maxLines: 5,
style: TextStyle(
fontSize: 20,
fontWeight: FontWeight.w600,
fontFamily: 'Montserrat',
),
decoration: InputDecoration(
border: InputBorder.none,
hintText: 'Task Description...',
hintStyle: TextStyle(
fontFamily: 'Montserrat',
fontWeight: FontWeight.w400,
fontStyle: FontStyle.italic,
fontSize: 20,
),
),
),
),
);
}
}
尝试maxLines: null,
所以不需要给固定大小它会根据内容自动调整大小
将您的 maxLines 设置为空
Container(
padding: EdgeInsets.only(bottom: 150),
margin: EdgeInsets.all(10),
decoration: BoxDecoration(
border: Border.all(width: 2, color: Colors.black),
borderRadius: BorderRadius.all(Radius.circular(10))),
child: TextFormField(
keyboardType: TextInputType.multiline,
maxLines: null,
style: TextStyle(
fontSize: 20,
fontWeight: FontWeight.w600,
fontFamily: 'Montserrat'),
decoration: InputDecoration(
border: InputBorder.none,
hintText: 'Task Description...',
hintStyle: TextStyle(
fontFamily: 'Montserrat',
fontWeight: FontWeight.w400,
fontStyle: FontStyle.italic,
fontSize: 20)),
),
)
Container(
padding: EdgeInsets.only(bottom: 150),
margin: EdgeInsets.all(10),
decoration: BoxDecoration(
border: Border.all(width: 2, color: Colors.black),
borderRadius: BorderRadius.all(Radius.circular(10))),
child: TextFormField(
keyboardType: TextInputType.multiline,
maxLines: null,
style: TextStyle(
fontSize: 20,
fontWeight: FontWeight.w600,
fontFamily: 'Montserrat'),
decoration: InputDecoration(
border: InputBorder.none,
hintText: 'Task Description...',
hintStyle: TextStyle(
fontFamily: 'Montserrat',
fontWeight: FontWeight.w400,
fontStyle: FontStyle.italic,
fontSize: 20)),
),
)
因此,我事先使用 Container 和 Text 小部件制作布局,然后将其更改为 TextFormField,但我真的想坚持使用 Container 的边框。但是我有这个问题,当我输入一个新行时,border/box 自动调整它的高度。我不想这样,有什么办法可以解决这个问题吗?
谢谢。
定义 minLines
和 maxLines
相同:
完整源代码
import 'package:flutter/material.dart';
void main() {
runApp(
MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Flutter Demo',
home: HomePage(),
),
);
}
class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
padding: EdgeInsets.all(10),
margin: EdgeInsets.all(10),
decoration: BoxDecoration(
border: Border.all(width: 2, color: Colors.black),
borderRadius: BorderRadius.all(Radius.circular(10)),
),
child: TextFormField(
keyboardType: TextInputType.multiline,
minLines: 5,
maxLines: 5,
style: TextStyle(
fontSize: 20,
fontWeight: FontWeight.w600,
fontFamily: 'Montserrat',
),
decoration: InputDecoration(
border: InputBorder.none,
hintText: 'Task Description...',
hintStyle: TextStyle(
fontFamily: 'Montserrat',
fontWeight: FontWeight.w400,
fontStyle: FontStyle.italic,
fontSize: 20,
),
),
),
),
);
}
}
尝试maxLines: null,
所以不需要给固定大小它会根据内容自动调整大小
将您的 maxLines 设置为空
Container(
padding: EdgeInsets.only(bottom: 150),
margin: EdgeInsets.all(10),
decoration: BoxDecoration(
border: Border.all(width: 2, color: Colors.black),
borderRadius: BorderRadius.all(Radius.circular(10))),
child: TextFormField(
keyboardType: TextInputType.multiline,
maxLines: null,
style: TextStyle(
fontSize: 20,
fontWeight: FontWeight.w600,
fontFamily: 'Montserrat'),
decoration: InputDecoration(
border: InputBorder.none,
hintText: 'Task Description...',
hintStyle: TextStyle(
fontFamily: 'Montserrat',
fontWeight: FontWeight.w400,
fontStyle: FontStyle.italic,
fontSize: 20)),
),
)