flutter - 如何在 Flutter 中实现搜索过滤器内联?
问题描述
答:我的主屏幕上调用了这个类别小部件。我使用 Provider 在点击时创建了一个导航,它将类别 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,
),
);
}
}
B. My Category 模型类
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);
}
}
解决方案
推荐阅读
- javascript - 未捕获的 SyntaxError:无效或意外的令牌。报价问题?
- javascript - React 中的付费墙部分内容
- reactjs - 动态导入组件时“不发出错误”
- racket - 传递函数体
- python - 在 Python 中使用高斯过程/克里金法插值向量的值
- ios - 如何使 SCNNode 面向 ARAnchor
- c# - 从 json 获取数据到 SQL Server 数据表中
- forms - 根据 Google 表单提交发送日历邀请
- python - 从函数中获取 Kruskal-Wallis 等级
- django - 无法使用 UserCreationForm 提交表单