我们有一个虚拟数据,我们使用该数据来创建一个使用该类别的颜色、id 或标题的网格视图。我不明白的视频部分如下

问题描述 投票:0回答:1

我们有一个虚拟数据,我们使用该数据来创建一个使用该类别的颜色、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),
              ),
            ),
          );
        },
      ),
    );
  }
}
flutter dart gridview
1个回答
0
投票

这段代码的目的是什么

DUMMY_CATEGORIES.map((catData) => CategoryItem(catData.id, catData.title, catData.color)).toList()

它返回一个 CategoryItem 小部件列表,一个对应于 DUMMY_CATEGORIES 中的每个条目。

我真的不明白你如何拥有这段代码而不了解它的作用。

© www.soinside.com 2019 - 2024. All rights reserved.