[英]How to make drop down reusable in flutter
I want to make this dropdown reusable.我想让这个下拉列表可重复使用。 when I want to use it.
当我想使用它时。 I need to simply just called that dropdown and pass the value.
我需要简单地调用该下拉列表并传递值。 Hope you understand the question:)
希望你理解这个问题:)
Here is some code I've tried.这是我尝试过的一些代码。
FormBuilder(
key: _fbKey,
autovalidate: true,
initialValue: {
'country': 5,
},
child: FormBuilderCustomField(
attribute: "name",
validators: [
FormBuilderValidators.required(),
],
formField: FormField(
// key: _fieldKey,
enabled: true,
builder: (FormFieldState<dynamic> field) {
return InputDecorator(
decoration: InputDecoration(
labelText: "Select Country",
contentPadding: EdgeInsets.only(top: 10.0, bottom: 0.0),
border: InputBorder.none,
errorText: field.errorText,
),
child: DropdownButton(
isExpanded: true,
items: ["One", "Two"].map((option) {
return DropdownMenuItem(
child: Text("$option"),
value: option,
);
}).toList(),
value: field.value,
onChanged: (value) {
field.didChange(value);
},
),
);
},
),
),
);
Create a custom class like below创建一个自定义 class 如下所示
import 'package:flutter/material.dart';
import 'package:flutter_form_builder/flutter_form_builder.dart';
class DropDown extends StatelessWidget {
final GlobalKey fbKey;
final String attribute, labelText;
final List<String> itemsList;
DropDown({
Key key,
@required this.fbKey,
this.attribute,
this.labelText,
this.itemsList,
}) : super(key: key);
@override
Widget build(BuildContext context) {
// TODO: implement build
return FormBuilder(
key: fbKey,
autovalidate: true,
initialValue: {
'country': 5,
},
child: FormBuilderCustomField(
attribute: attribute,
validators: [
FormBuilderValidators.required(),
],
formField: FormField(
// key: _fieldKey,
enabled: true,
builder: (FormFieldState<dynamic> field) {
return InputDecorator(
decoration: InputDecoration(
labelText: labelText,
contentPadding: EdgeInsets.only(top: 10.0, bottom: 0.0),
border: InputBorder.none,
errorText: field.errorText,
),
child: DropdownButton(
isExpanded: true,
items: itemsList.map((option) {
return DropdownMenuItem(
child: Text("$option"),
value: option,
);
}).toList(),
value: field.value,
onChanged: (value) {
field.didChange(value);
},
),
);
},
),
),
);
}
}
Use it as below如下使用它
DropDown(
fbKey: _bfKey,
attribute: 'Name',
labelText: 'Select Country',
itemsList: ['One', 'Two'],
),
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.