Cod*_*ter 10 flutter dart-2 flutter-layout
在列中添加行时出现错误。我收到以下错误:
I/flutter ( 6449): ??? EXCEPTION CAUGHT BY RENDERING LIBRARY ??????????????????????????????????????????????????????????
I/flutter ( 6449): The following assertion was thrown during performLayout():
I/flutter ( 6449): BoxConstraints forces an infinite width.
I/flutter ( 6449): These invalid constraints were provided to RenderAnimatedOpacity's layout() function
Run Code Online (Sandbox Code Playgroud)
我的代码也可供参考:
return new Scaffold(
backgroundColor: whiteColor,
body: new Column(
children: <Widget>[
imgHeader,
lblSignUp,
txtEmail,
Row(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
txtFirstName,
txtLastName
],
),
],
),
);
Run Code Online (Sandbox Code Playgroud)
Cop*_*oad 34
错误原因:
TextField在水平方向上扩展, 也是Row,所以我们需要限制 的宽度TextField,有很多方法可以做到。
用 Expanded
Row(
children: <Widget>[
Expanded(child: TextField()),
// more widgets
],
)
Run Code Online (Sandbox Code Playgroud)用 Flexible
Row(
children: <Widget>[
Flexible(child: TextField()),
// more widgets
],
)
Run Code Online (Sandbox Code Playgroud)将其包裹在Container或 中SizedBox并提供width
Row(
children: <Widget>[
SizedBox(width: 100, child: TextField()),
// more widgets
],
)
Run Code Online (Sandbox Code Playgroud)这种情况只有当你试图定义一个无限的width和height一个Row,Column或者Container说是的父母TextField想要使用的所有空间。
要解决这个问题,你应该TextField用Flexible或包裹你的Expanded。
这样做可以解决以上问题。
Expanded(
child: txtFirstName,
),
Flexible(
child: txtLastName,
),
Run Code Online (Sandbox Code Playgroud)
完整示例
Column(
children: <Widget>[
imgHeader,
lblSignUp,
txtEmail,
Row(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
Expanded(
child: txtFirstName,
),
Flexible(
child: txtLastName,
),
],
),
],
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10066 次 |
| 最近记录: |