Flutter 如何在颤振中实现内联搜索过滤器?

Flutter 如何在颤振中实现内联搜索过滤器?,flutter,dart,Flutter,Dart,答:我的主屏幕上显示了这个分类小部件。我使用提供者在点击时创建了一个导航,将类别id和名称传递到新屏幕。我想要的是,新屏幕应该只显示与传递的类别id或名称相对应的过滤列表 class CategoryWidget extends StatelessWidget { @override Widget build(BuildContext context) { final Categories _data = Provider.of<Categories>(context

答:我的主屏幕上显示了这个分类小部件。我使用提供者在点击时创建了一个导航,将类别id和名称传递到新屏幕。我想要的是,新屏幕应该只显示与传递的类别id或名称相对应的过滤列表

class CategoryWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final Categories _data = Provider.of<Categories>(context);

    return Container(
      height: 100,
      child: ListView.builder(
        scrollDirection: Axis.horizontal,
        itemBuilder: (context, index) {
          return GestureDetector(
            child: CategoryCard(
              icon: Icon(Icons.ac_unit_outlined),
              name: _data.categories[index].categoryName,
              image: _data.categories[index].categoryImage,
            ),
            onTap: () {
              Navigator.pushNamed(context, FilteredCategoryView.routeName,
                  arguments: _data.categories[index].categoryId);
            },
          );
        },
        itemCount: _data.categories.length,
      ),      
    );
  }
}
class CategoryWidget扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
最终类别_data=Provider.of(上下文);
返回容器(
身高:100,
子项:ListView.builder(
滚动方向:轴水平,
itemBuilder:(上下文,索引){
返回手势检测器(
儿童:分类卡(
图标:图标(图标。ac_单位概述),
名称:_data.categories[index].categoryName,
图像:_data.categories[index].categoryImage,
),
onTap:(){
Navigator.pushNamed(上下文,FilteredCategoryView.routeName,
参数:_data.categories[index].categoryId);
},
);
},
itemCount:_data.categories.length,
),      
);
}
}

我的分类模型课

class Category with ChangeNotifier {
  String categoryId;
  String categoryName;
  Image categoryImage;

  Category(
      {@required this.categoryId,
      @required this.categoryName,
      @required this.categoryImage});
}

class Categories with ChangeNotifier {
  List<Category> _categories = [
    Category(
      categoryId: '01',
      categoryName: 'Veggies',
      categoryImage: Image.asset('assets/images/apples.png'),
    ),
    Category(
      categoryId: '02',
      categoryName: 'Fruits',
      categoryImage: Image.asset('assets/images/leo.png'),
    ),
    Category(
      categoryId: '03',
      categoryName: 'Grains',
      categoryImage: Image.asset('assets/images/leo.png'),
    ),
    Category(
      categoryId: '04',
      categoryName: 'Meat',
      categoryImage: Image.asset('assets/images/leo.png'),
    ),
    Category(
      categoryId: '05',
      categoryName: 'Lentils',
      categoryImage: Image.asset('assets/images/leo.png'),
    ),
    Category(
      categoryId: '06',
      categoryName: 'Veggies',
      categoryImage: Image.asset('assets/images/leo.png'),
    ),
    Category(
      categoryId: '07',
      categoryName: 'Others',
      categoryImage: Image.asset('assets/images/leo.png'),
    ),
  ];

  // Since _category List is private we need a getter method to access this list
  List<Category> get categories {
    return [..._categories];

  }

  //
  Category findById(String id) {
    return _categories.firstWhere((product) => product.categoryId == id);
  }
}
带有ChangeNotifier的类类别{
字符串类别;
字符串类别名称;
图像类别图像;
类别(
{@required this.categoryId,
@需要此.categoryName,
@需要此.categoryImage});
}
使用ChangeNotifier类类别{
列表_类别=[
类别(
类别ID:'01',
类别名称:“蔬菜”,
categoryImage:Image.asset('assets/images/apples.png'),
),
类别(
类别ID:'02',
类别名称:“水果”,
categoryImage:Image.asset('assets/images/leo.png'),
),
类别(
类别ID:'03',
类别名称:“谷物”,
categoryImage:Image.asset('assets/images/leo.png'),
),
类别(
类别ID:'04',
类别名称:“肉”,
categoryImage:Image.asset('assets/images/leo.png'),
),
类别(
类别ID:'05',
类别名称:“扁豆”,
categoryImage:Image.asset('assets/images/leo.png'),
),
类别(
类别ID:'06',
类别名称:“蔬菜”,
categoryImage:Image.asset('assets/images/leo.png'),
),
类别(
类别:“07”,
类别名称:“其他”,
categoryImage:Image.asset('assets/images/leo.png'),
),
];
//因为_categorylist是私有的,所以我们需要一个getter方法来访问这个列表
列出获取类别{
返回[…_类别];
}
//
类别findById(字符串id){
返回_categories.firstWhere((product)=>product.categoryId==id);
}
}