如何在Flutter中创建通用参数类型的小部件函数

阿卜杜勒·卡达尔

我正在页面类函数内创建通用参数类型的小部件函数。但是需要创建用于多个类/页面的通用参数类型小部件函数。

                  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 _customDropDownProduct( BuildContext context, ProductModel item, String itemDesignation) {

    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)),
      ),
    );
  } 

如何使_customDropDownProduct成为flutter中的常用函数。

出现类似的错误 The argument type 'Widget' can't be assigned to the parameter type 'Widget Function(BuildContext, Model, String)'.

露露波图

我猜您_customDropDownProduct()在dropdownBuilder参数中使用相反,您应该使用_customDropDownProduct

因此,您不会传递函数(Widget的结果,而传递函数本身Widget Function(BuildContext, Model, String)

为了使它在任何地方都可用,您有两种选择:

  1. 提取_customDropDownProduct方法并使其成为全局函数
  2. 制作一个CustomDropDownProduct小部件并在其他屏幕中使用它。

对于选项2,代码如下:

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,
    ),

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Flutter中对齐单个小部件?

如何在flutter中访问在另一个有状态小部件中的一个有状态小部件中创建的对象

如何在Typescript中为箭头函数创建通用类型

如何在Flutter中模糊小部件

如何在Flutter中创建底部注释小部件?

如何在Flutter中的StaggeredGridView中使用堆栈小部件?

Flutter Cards:如何在Flutter中创建自定义卡片小部件

如何在Flutter中将参数传递给小部件

Flutter-如何在继承的小部件中的已定义函数中使用参数

如何在Flutter中的小部件中创建内部循环?

Flutter:如何在抽象构造函数中使用小部件

如何在Flutter中创建概述的卡片小部件

如何在Flutter中渲染小部件之前等待异步函数完成执行

如何在类构造函数参数中动态传递窗口小部件

如何在Flutter中的画布上绘制小部件?

如何在Flutter中裁剪可变大小的小部件?

Flutter:如何在无状态窗口小部件中调用函数?

如何创建对象列表以传递给Flutter中的小部件?

Flutter,如何在BarChart小部件中创建可点击的栏?

如何在 TFS 小部件中创建持久参数

如何在 Flutter 中创建随页面滚动而移动的浮动小部件

如何在 Flutter 中更新 showmodalsheet 中的小部件颜色?

Flutter 如何在 build() 中重新创建有状态的小部件

如何在 Flutter 中的小部件中对齐按钮

如何在 Flutter 中的列小部件中隐藏行小部件

如何在 Flutter 中的 Text 小部件中显示值?

如何在flutter中创建一个隐藏/显示小部件的动画容器

在 Flutter 中以函数为参数调用小部件

在通用有状态小部件中不能具有具有通用参数的函数