在我们的部分应用程序中,我希望在bottomsheet
中有一个简单的表单,就像下面的代码一样。不幸的是,当我把它放进去的时候,我得到了一个错误
在performLayout()期间抛出了以下断言:通常由TextField创建的InputDecorator不能具有无界宽度。当父小部件没有提供有限宽度约束时,就会发生这种情况。例如,如果InputDecorator包含在行中,则必须约束其宽度。可以使用扩展的小部件或SizedBox来约束InputDecorator或包含它的TextField的宽度。“package:flutter/src/material/input_decorator.dart”:断言失败:第881行位置7:“layoutconstraints.maxwidth 我的已实现代码: void _settingModalBottomSheet(context){
showModalBottomSheet(
context: context,
elevation: 8.0,
builder: (BuildContext bc){
return Directionality(
textDirection: TextDirection.rtl,
child: ConstrainedBox(
constraints: BoxConstraints(
minHeight: 250.0
),
child: Container(
padding: EdgeInsets.fromLTRB(0.0,10.0,0.0,10.0),
child: new Wrap(
children: <Widget>[
Padding(
padding: const EdgeInsets.all(8.0),
child: Center(
child: Text(
'please fill this form',
style: TextStyle(
fontSize: 13.0,
),
),
),
),
Divider(),
Row(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Column(
children: <Widget>[
Text('item 1'),
Container(
child: TextField(),
)
],
),
Column(
children: <Widget>[
Text('item 2'),
Container(
child: TextField(),
)
],
),
],
),
],
),
),
),
);
}
);
}
您必须为文本字段
提供特定的宽度,只需在容器
中提供宽度
或在展开
中包装列
。
解决方案1
Container(
width: 100, // do it in both Container
child: TextField(),
),
解决方案2
Row(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Expanded( // wrap your Column in Expanded
child: Column(
children: <Widget>[
Text('item 1'),
Container(child: TextField()),
],
),
),
Expanded( // wrap your Column in Expanded
child: Column(
children: <Widget>[
Text('item 2'),
Container(child: TextField()),
],
),
),
],
),