Flutter 如何在flatter中创建公共参数类型小部件函数
我正在页面类函数中创建公共参数类型小部件函数。但需要创建用于多个类/页的公共参数类型小部件函数Flutter 如何在flatter中创建公共参数类型小部件函数,flutter,widget,flutter-dependencies,Flutter,Widget,Flutter Dependencies,我正在页面类函数中创建公共参数类型小部件函数。但需要创建用于多个类/页的公共参数类型小部件函数 DropdownSearch<ProductModel>( searchBoxController: TextEditingController(text: ''), mode: Mode.BOTTOM_SHEET, isFiltere
DropdownSearch<ProductModel>(
searchBoxController: TextEditingController(text: ''),
mode: Mode.BOTTOM_SHEET,
isFilteredOnline: true,
showClearButton: true,
showSearchBox: true,
//label: 'Product Name *',
searchBoxDecoration: InputDecoration(
hintText:'Search Product',
contentPadding: EdgeInsets.fromLTRB(12, 12, 0, 0),
border: OutlineInputBorder()
),
dropdownSearchDecoration: InputDecoration(
hintText:'Select Product',
contentPadding: EdgeInsets.fromLTRB(5, 0, 0, 0),
hintStyle: TextStyle(fontSize: 12.0),
),
emptyBuilder:_customEmptyBuilderProduct,
selectedItem:jobLineList[index].productModel,
onFind: (String filter) => getProductData(filter),
dropdownBuilder: _customDropDownProduct,
popupItemBuilder: _customPopupItemBuilderProduct,
onChanged: (ProductModel value) {
print('onchanged');
print(value);
if(value == null) {
}
else {
}
},
),
如何在颤振中使_customDropDownProduct成为常用功能
像这样得到错误
参数类型“Widget”无法分配给参数类型“Widget Function(BuildContext,Model,String)”。
我猜您在dropdownBuilder参数中使用了\u customDropDownProduct()
。相反,您应该使用\u customDropDownProduct
因此,您不会传递函数(Widget
)的结果,而是传递函数本身Widget函数(BuildContext、Model、String)
要使其在任何地方都可用,您有两种选择:
\u customDropDownProduct
方法并使其成为全局函数CustomDropDownProduct
小部件,并在不同的屏幕中使用它class CustomDropDownProduct extends StatelessWidget {
final ProductModel item;
final String itemDesignation;
CustomDropDownProduct({Key key, @required this.item, @required this.itemDesignation}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
//height: 20.0,
child: (item?.masterProductName == null)
? ListTile(
contentPadding: EdgeInsets.all(0),
//leading: CircleAvatar(),
title: Text("No product selected", style: TextStyle(fontSize: 12.0)),
)
: ListTile(
contentPadding: EdgeInsets.all(0),
title: Text(item.masterProductName, style: TextStyle(fontSize: 12.0)),
),
);
}
}
如何从dropdownBuilder调用它:
dropdownBuilder: (BuildContext context, ProductModel item, String itemDesignation) =>
CustomDropDownProduct(
item: item,
itemDesignation: itemDesignation,
),
如果我这样调用:dropdownBuilder:\u customDropDownProducttest(小部件),错误:位置参数太少:需要3个,给定1个。dropdownBuilder:_customDropDownProducttest(小部件),上下文:找到了此候选项,但参数不匹配_customDropDownProducttest(BuildContext上下文,ProductModel项,String项指定){很抱歉,我的回答可能有误导性。我重写了它,现在更清楚了吗?是的,我称它为类内的类似_customDropDownProduct,它在工作。但我想在类外实现公共化,以便使用多个屏幕
dropdownBuilder: (BuildContext context, ProductModel item, String itemDesignation) =>
CustomDropDownProduct(
item: item,
itemDesignation: itemDesignation,
),