ToB企服应用市场:ToB评测及商务社交产业平台

标题: 每天一个Flutter开辟小项目 (5) : 专业Flutter导航与路由 - 构建精美菜谱应 [打印本页]

作者: 立聪堂德州十三局店    时间: 昨天 21:40
标题: 每天一个Flutter开辟小项目 (5) : 专业Flutter导航与路由 - 构建精美菜谱应
弁言
欢迎再次回到 每天一个Flutter开辟小项目 系列博客!在前四篇博客中,我们渐渐深入 Flutter 的世界,从基础的计数器、实用的待办事项列表,到联网的天气应用和状态管理的地点收藏应用,相信您已经对 Flutter 开辟有了扎实的基础。
随着应用功能的不停扩展,页面间的跳转与数据通报变得至关重要。一个精良的 Flutter 应用,不仅要有精美的 UI 和强大的功能,更要有流畅自然的导航体验。 今天,我们将聚焦 Flutter 应用的“骨骼”——导航与路由,并构建一个美食爱好者必备的 菜谱应用,让您掌握专业级的 Flutter 页面跳转技巧。
通过本篇博客,您将深入学习:

项目简介: 精美菜谱应用
我们的精美菜谱应用将具备以下核心功能:

通过构建菜谱应用,我们将重点实践:

Flutter 导航与路由核心概念详解
在开始构建菜谱应用之前,我们先来深入理解 Flutter 导航与路由的核心概念,打牢理论基础。

命名路由 (Named Routes) 的优势
在 Flutter 应用中,除了使用 MaterialPageRoute 直接创建路由并 push 到导航器之外,我们还可以使用 命名路由 (Named Routes) 来管理路由。 命名路由的优势在于:

在大型 Flutter 应用中,推荐使用命名路由来管理页面跳转。
实战步骤: 构建精美菜谱应用
接下来,我们将一步步使用命名路由构建我们的精美菜谱应用。
步骤 1: 创建新的 Flutter 项目
首先,创建一个新的 Flutter 项目,命名为 recipe_app.
步骤 2: 定义菜谱数据模型 (Recipe)
我们需要定义一个 Recipe 类来表现菜谱数据,包含菜名、图片、食材、步骤等信息。
创建 lib/models/recipe.dart 文件,定义 Recipe 类:
  1. class Recipe {
  2.    
  3.   final String id; // 菜谱唯一ID
  4.   final String title; // 菜名
  5.   final String imageUrl; // 菜谱图片URL
  6.   final List<String> ingredients; // 食材列表
  7.   final List<String> steps; // 步骤列表
  8.   const Recipe({
  9.     // 使用 const 构造函数,提高性能
  10.     required this.id,
  11.     required this.title,
  12.     required this.imageUrl,
  13.     required this.ingredients,
  14.     required this.steps,
  15.   });
  16. }
复制代码
代码表明:

步骤 3: 准备菜谱数据 (Dummy Data)
为了演示,我们先创建一些虚拟的菜谱数据 (Dummy Data),模仿真实菜谱数据。 在实际项目中,菜谱数据大概来自网络 API 或当地数据库。
在 lib/data/dummy_data.dart 文件中创建虚拟菜谱数据:
  1. import '../models/recipe.dart';
  2. const dummyRecipes = [ //  使用 const 定义常量列表
  3.   Recipe(
  4.     id: 'r1',
  5.     title: '意式番茄 Bruschetta',
  6.     imageUrl: 'https://upload.wikimedia.org/wikipedia/commons/thumb/d/d7/Bruschetta_2.jpg/800px-Bruschetta_2.jpg',
  7.     ingredients: [
  8.       '8 片法棍面包',
  9.       '2 个成熟番茄',
  10.       '2 瓣大蒜',
  11.       '新鲜罗勒叶',
  12.       '橄榄油',
  13.       '盐和黑胡椒'
  14.     ],
  15.     steps: [
  16.       '烤箱预热至 180°C。',
  17.       '法棍面包切片,刷上橄榄油,烤箱烤 5-7 分钟至金黄酥脆。',
  18.       '番茄切丁,大蒜切末,罗勒叶切碎。',
  19.       '将番茄丁、蒜末、罗勒碎混合,加入橄榄油、盐和黑胡椒调味。',
  20.       '将番茄混合物铺在烤好的法棍片上,即可享用。'
  21.     ],
  22.   ),
  23.   Recipe(
  24.     id: 'r2',
  25.     title: '经典美式汉堡',
  26.     imageUrl: 'https://upload.wikimedia.org/wikipedia/commons/thumb/6/65/Homemade_hamburger.jpg/800px-Homemade_hamburger.jpg',
  27.     ingredients: [
  28.       '2 个汉堡面包',
  29.       '2 块牛肉饼',
  30.       '2 片芝士',
  31.       '生菜',
  32.       '番茄片',
  33.       '洋葱圈',
  34.       '酸黄瓜',
  35.       '汉堡酱',
  36.       '黄油'
  37.     ],
  38.     steps: [
  39.       '牛肉饼用盐和黑胡椒调味,煎至两面金黄,放上芝士片融化。',
  40.       '汉堡面包对半切开,内部涂抹黄油,烤箱或平底锅加热至微黄。',
  41.       '在汉堡面包底部依次放上汉堡酱、生菜、番茄片、洋葱圈、酸黄瓜、牛肉饼。',
  42.       '盖上汉堡面包顶部,即可享用。'
  43.     ],
  44.   ),
  45.   // ... 可以添加更多菜谱数据
  46. ];
复制代码
代码表明:

步骤 4: 创建菜谱列表页面 (RecipeListScreen)
创建 lib/screens/recipe_list_screen.dart 文件,定义 RecipeListScreen Widget,用于展示菜谱列表。
创建 lib/screens/recipe_list_screen.dart 文件:
  1. import 'package:flutter/material.dart';
  2. import '../data/dummy_data.dart'; // 导入虚拟菜谱数据
  3. import '../widgets/recipe_item.dart'; // 导入菜谱列表项 Widget (待创建)
  4. class RecipeListScreen</
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4