Rob*_*ert 5 layout dart flutter flutter-layout flutter-widget
我正在与此DropDownItem框错误作斗争,似乎一切正常,但在加载时弹出黄色越界。尝试了几件事,但无法解决。我的Widget.
@override
Widget build(BuildContext context) {
var _children = <Widget>[
!_createNew ? _referrerPractice() : _referrerCreate(),
];
return new Scaffold(
appBar: new AppBar(
title: new Text(widget.title),
),
body: new Column(
mainAxisSize: MainAxisSize.max,
children: _children,
));
}
Run Code Online (Sandbox Code Playgroud)
然后我将其用作功能之一。
Widget _referrerPractice() {
assert(!_createNew);
return new Form(
key: _formKey2,
child: new Expanded(
child: new ListView(
padding: const EdgeInsets.symmetric(horizontal: 16.0),
children: <Widget>[
new InputDecorator(
decoration: const InputDecoration(
labelText: 'Referrer Practice',
hintText: 'Choose Referrer Practice or choose new',
),
isEmpty: _referPractice == null,
child: new DropdownButton<String>(
value: _referPractice,
isDense: true,
onChanged: (String newValue) {
setState(() {
_referPractice = newValue;
});
},
items: practicelist.map((Map value) {
return new DropdownMenuItem<String>(
value: value['id'].toString(),
child: new Text(value['name']),
);
}).toList(),
),
),
new RaisedButton(
child: new Text('Start'), onPressed: _startReferrer),
],
),
),
);
Run Code Online (Sandbox Code Playgroud)
}
它似乎在另一个页面上工作,我没有使用函数来填充小部件,只是小部件的常规变量,但似乎它应该与结构相同。
任何想法我缺少什么?这是一个DropDownButton,但它发生在具有DropDownButton其他功能的结果页面上。
编辑************ 这是工作代码
final List<String> _allTypeAppt = <String>['Elective OP', 'Hospital Transfer', 'Phone Consult'];
new Form(
key: _formKey,
autovalidate: _autovalidate,
onWillPop: _warnUserAboutInvalidData,
child: new Expanded(
child: new ListView(
padding: const EdgeInsets.symmetric(horizontal: 16.0),
children: <Widget>[
new TextFormField(
decoration: const InputDecoration(
icon: const Icon(Icons.person),
hintText: 'First Name?',
labelText: 'First Name *',
),
controller: _fnameController,
onSaved: (String value) { referral.fname = value; },
validator: _validateName,
),
new TextFormField(
decoration: const InputDecoration(
icon: const Icon(Icons.person),
hintText: 'Last Name?',
labelText: 'Last Name *',
),
controller: _lnameController,
onSaved: (String value) { referral.lname = value; },
validator: _validateName,
),
new _DateTimePicker(
labelText: 'DOB',
selectedDate: _fromDate,
selectDate: (DateTime date) {
setState(() {
_fromDate = date;
});
},
),
new TextFormField(
decoration: const InputDecoration(
icon: const Icon(Icons.phone),
hintText: 'How to contact?',
labelText: 'Phone Number *',
),
controller: _phoneController,
keyboardType: TextInputType.phone,
onSaved: (String value) { referral.contact = value; },
validator: _validatePhoneNumber,
// TextInputFormatters are applied in sequence.
/*inputFormatters: <TextInputFormatter> [
WhitelistingTextInputFormatter.digitsOnly,
// Fit the validating format.
_phoneNumberFormatter,
],*/
),
new TextFormField(
decoration: const InputDecoration(
icon: const Icon(Icons.phone),
hintText: 'Alt contact?',
labelText: 'Alt Phone Number *',
),
controller: _altPhoneController,
keyboardType: TextInputType.phone,
onSaved: (String value) { referral.altcontact = value; },
validator: _validatePhoneNumber,
// TextInputFormatters are applied in sequence.
/*inputFormatters: <TextInputFormatter> [
WhitelistingTextInputFormatter.digitsOnly,
// Fit the validating format.
_phoneNumberFormatter,
],*/
),
new TextFormField(
decoration: const InputDecoration(
icon: const Icon(Icons.email),
hintText: 'Patien Email?',
labelText: 'Patient Email *',
),
controller: _emailController,
onSaved: (String value) { referral.altcontact = value; },
//validator: _validatePhoneNumber,
// TextInputFormatters are applied in sequence.
/*inputFormatters: <TextInputFormatter> [
WhitelistingTextInputFormatter.digitsOnly,
// Fit the validating format.
_phoneNumberFormatter,
],*/
),
new TextFormField(
decoration: const InputDecoration(
hintText: 'Tell us about patient',
helperText: 'It does not have to be detailed yet',
labelText: 'Referral Details',
),
controller: _detailsController,
maxLines: 5,
),
new InputDecorator(
decoration: const InputDecoration(
labelText: 'Type of Appointment',
hintText: 'Choose an Appointment Type',
),
isEmpty: _typeAppt == null,
child: new DropdownButton<String>(
value: _typeAppt,
isDense: true,
onChanged: (String newValue) {
setState(() {
_typeAppt = newValue;
});
},
items: _allTypeAppt.map((String value) {
return new DropdownMenuItem<String>(
value: value,
child: new Text(value),
);
}).toList(),
),
),
new RaisedButton(
child: new Text('Submit Referral'),
onPressed: _submitData,
),
],
)
)
),
Run Code Online (Sandbox Code Playgroud)
我能够重现您的问题,我不确定您为什么要这样构建布局。你正在喂养你DropDownButton作为 的child财产InputDecorator,这很好。但是,它会抛出此错误,因为DropDownMenuItem溢出了您的InputDecorator. 换句话说,你不仅将自己包含在DopDownButton你的内部InputDecorator,而且你也items试图将其包含在同一个空间中。因此,Flutter 对于如何items在InputDecorator.
我真的很困惑你想要构建什么样的布局,为什么需要 aForm和InputDecoratorfor ?
也许可以为您的设计选择提供一些背景信息,以便我们可以提供更好的帮助。
Row我用和小部件创建了一个更简单的布局TextField,它可能会有所帮助。
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => new _MyAppState();
}
class _MyAppState extends State<MyApp> {
String _mySelection;
String _text = "Choose";
List<Map> _myJson = [
{"id": "ID 1310012", "name": "Newcommer"}, {"id": "ID 0000TEMP", "name": "Temp"}];
Widget _children() {
TextEditingController _controller = new TextEditingController(text: _text);
return new Expanded(child: new ListView(
padding: const EdgeInsets.symmetric(horizontal: 16.0),
children: <Widget>[
new Container (
child: new Row(
children: <Widget>[
new Expanded(
child: new TextField(
controller: _controller,
),
),
new DropdownButton(
isDense: true,
value: _mySelection,
items: _myJson.map((Map map) {
return new DropdownMenuItem<String>(
value: map["id"],
child: new Text(
map["name"],
),
);
}).toList(),
onChanged: (String newValue) {
setState(() {
_mySelection = newValue;
_text = newValue;
});
})
],),),
new RaisedButton(
child: new Text('Start'), onPressed: null),
]
));
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(title: new Text("Test")),
body: new Column(
mainAxisSize: MainAxisSize.max,
children: <Widget>[
_children(),
],
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14022 次 |
| 最近记录: |