我们有一个虚拟数据,我们使用该数据来创建一个使用该类别的颜色、id 或标题的网格视图。 。我无法确切理解此代码片段的目的是什么。你能解释一下吗? :子项:DUMMY_CATEGORIES.map((catData) => CategoryItem(catData.id, catData.title, catData.color)).toList(),
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Meals App',
debugShowCheckedModeBanner: false,
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: CategoryScreen(),
);
}
}
class CategoryScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Meals App'),
),
body: GridView(
children: DUMMY_CATEGORIES.map((catData) => CategoryItem(catData.id, catData.title, catData.color)).toList(),
gridDelegate: const SliverGridDelegateWithMaxCrossAxisExtent(
maxCrossAxisExtent: 200,
childAspectRatio: 3 / 2,
crossAxisSpacing: 20,
mainAxisSpacing: 20,
),
),
);
}
}
class Category {
final String id;
final String title;
final Color color;
Category({required this.id, required this.title, this.color = Colors.orange});
}
class CategoryItem extends StatelessWidget {
final String id;
final String title;
final Color color;
CategoryItem(this.id, this.title, this.color);
@override
Widget build(BuildContext context) {
return InkWell(
onTap: () {
Navigator.of(context).push(
MaterialPageRoute(
builder: (_) => CategoryMealsScreen(id, title),
),
);
},
child: Container(
padding: const EdgeInsets.all(10),
child: Text(title),
decoration: BoxDecoration(
gradient: LinearGradient(
colors: [
color.withOpacity(0.7),
color,
],
begin: Alignment.topLeft,
end: Alignment.bottomRight,
),
borderRadius: BorderRadius.circular(15),
),
),
);
}
}
class CategoryMealsScreen extends StatelessWidget {
final String categoryId;
final String categoryTitle;
CategoryMealsScreen(this.categoryId, this.categoryTitle);
@override
Widget build(BuildContext context) {
final categoryMeals = DUMMY_MEALS.where((meal) {
return meal.categories.contains(categoryId);
}).toList();
return Scaffold(
appBar: AppBar(
title: Text('Meals - $categoryTitle'),
),
body: ListView.builder(
itemCount: categoryMeals.length,
itemBuilder: (ctx, index) {
return InkWell(
onTap: () {
Navigator.of(context).push(
MaterialPageRoute(
builder: (_) => MealDetailScreen(categoryMeals[index]),
),
);
},
child: Card(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text(categoryMeals[index].title),
),
),
);
},
),
);
}
}
这段代码的目的是什么
DUMMY_CATEGORIES.map((catData) => CategoryItem(catData.id, catData.title, catData.color)).toList()
它返回一个 CategoryItem 小部件列表,一个对应于 DUMMY_CATEGORIES 中的每个条目。
我真的不明白你如何拥有这段代码而不了解它的作用。