2025.05.30 (五)

Gemini 2.5 Pro 的摘要  

Flutter 应用开发基础课程 DevStory - Inflearn DevStory 就算没有开发知识也没关系!初学者也能上手的 Flutter 应用开发基础 🏃‍♂️零基础也能学的 Flutter 应用开发基础[照片]学会应用开发后,以前只停留在想象里的个人应用服务也可以发布到全世界。事实上

原文

naver-148-001

Flutter 应用开发基础课程 DevStory - Inflearn
DevStory 就算没有开发知识也没关系!初学者也能上手的 Flutter 应用开发基础 🏃‍♂️零基础也能学的 Flutter 应用开发基础[照片]学会应用开发后,以前只停留在想象里的个人应用服务也可以发布到全世界。事实上,制作应用

www.inflearn.com

  1. Flutter 是什么?
  • 跨平台框架:由 Google 开发,可以用同一套代码库开发 Android、iOS、Web、Desktop 应用。

  • 使用 Dart 语言:用代码编写 UI。

  1. 核心概念:一切都是 Widget
  • UI 组成单位:通过组装 Widget 来构成画面。

  • Widget Tree:Widget 的层级结构,由父子关系组成。

  • Key?key 和 super(key: key):在 Widget 构造函数中,Key 用于在 Widget Tree 重建时保存 Widget 的状态,并高效地进行更新。在当前阶段,知道有这样的概念就足够了。

  • BuildContext context:表示当前 Widget 在 Widget Tree 中的位置,是一个能访问上层 Widget 数据或主题的重要对象。它会在 Navigator.pop(context) 等各种地方使用。

  • 主要 Widget 分类:

  • StatelessWidget:没有状态的静态 Widget。

  • StatefulWidget:会根据状态变化重新绘制的动态 Widget。(代码示例省略)

  • StatefulWidget:会根据状态变化重新绘制的动态 Widget。(代码示例省略)

  1. 基本应用结构与主要 Widget
  • main() 函数 & runApp() & MaterialApp & Scaffold:

  • MaterialApp 的 home:指定应用的第一个画面。(例:home: HomePage())

  • MaterialApp 的 home:指定应用的第一个画面。(例:home: HomePage())

  • AppBar 详细属性:

  • 布局 Widget:

  • Column & Row:

  • Padding:在子 Widget 周围添加留白。

  • Padding:在子 Widget 周围添加留白。

  • Container:可以进行多种样式设置(大小、颜色、留白、边框等)的矩形 Widget。

  • Container:可以进行多种样式设置(大小、颜色、留白、边框等)的矩形 Widget。

  • Expanded:让 Row 或 Column 的子 Widget 扩展并填满剩余空间。

  • Expanded:让 Row 或 Column 的子 Widget 扩展并填满剩余空间。

  • SingleChildScrollView:当子 Widget 的内容超出画面时,使其可以滚动。

  • SingleChildScrollView:当子 Widget 的内容超出画面时,使其可以滚动。

  • ListView.builder:创建能够高效显示大量项目的可滚动列表。只生成画面上可见的项目。

  • ListView.builder:创建能够高效显示大量项目的可滚动列表。只生成画面上可见的项目。

  • Stack:可以将 Widget 重叠摆放(Z 轴)。

  • Stack:可以将 Widget 重叠摆放(Z 轴)。

  • AspectRatio:固定子 Widget 的宽高比例。

  • AspectRatio:固定子 Widget 的宽高比例。

  • double.infinity:用于 Container 等的 width 或 height 属性,使其填满父 Widget 允许的最大尺寸。

  • double.infinity:用于 Container 等的 width 或 height 属性,使其填满父 Widget 允许的最大尺寸。

  • SizedBox:用于创建特定大小的空白空间,或明确指定子 Widget 的大小。

  • SizedBox:用于创建特定大小的空白空间,或明确指定子 Widget 的大小。

  • 基本 UI Widget:

  • Text & TextStyle:显示文本并指定样式。

  • Image.network:从网络 URL 加载并显示图片。

  • Image.network:从网络 URL 加载并显示图片。

  • fit: BoxFit.cover:让图片在保持比例的同时填满指定空间。(如果图片比空间大,可能会被裁切)Icon:显示 Material Design 图标。

  • fit: BoxFit.cover:让图片在保持比例的同时填满指定空间。(如果图片比空间大,可能会被裁切)

  • fit: BoxFit.cover:让图片在保持比例的同时填满指定空间。(如果图片比空间大,可能会被裁切)

  • Icon:显示 Material Design 图标。

  • TextField & InputDecoration 详细:接收用户输入的文本。

  • TextField & InputDecoration 详细:接收用户输入的文本。

  • ElevatedButton, TextButton, IconButton:各种形态的按钮 Widget。

  • ElevatedButton, TextButton, IconButton:各种形态的按钮 Widget。

  • Card:创建 Material Design 卡片形态的 UI。带有一点阴影和圆角。

  • Card:创建 Material Design 卡片形态的 UI。带有一点阴影和圆角。

  • Divider:创建视觉分割线。

  • Divider:创建视觉分割线。

  • CircleAvatar:主要用于显示用户头像等圆形图片。

  • CircleAvatar:主要用于显示用户头像等圆形图片。

  • Colors.black.withOpacity(0.5):为颜色应用透明度。0.0(完全透明)~ 1.0(完全不透明)。

  • Colors.black.withOpacity(0.5):为颜色应用透明度。0.0(完全透明)~ 1.0(完全不透明)。

  • Drawer 及相关 Widget:

  • Drawer:指定在 Scaffold 的 drawer 属性中,是从画面一侧滑出的面板。

  • DrawerHeader:用于装饰 Drawer 顶部区域的 Widget。

  • ListTile:常用于构成 Drawer 内的各个项目。拥有 leading、title、trailing、onTap 等属性。

  • ListTile:常用于构成 Drawer 内的各个项目。拥有 leading、title、trailing、onTap 等属性。

  • PageView:可以左右滚动查看多个页面(画面)的 Widget。(例:活动 Banner)

  1. 导航基础
  • Navigator.pop(context):用于从栈中移除当前画面(Route)并返回上一画面。关闭 Drawer 或对话框时很有用。
  1. 处理数据(简单示例)
  • List<Map<String, dynamic»:在 ListView.builder 等地方使用的数据,通常会用 Dart 的 List 和 Map 来构成。每个 Map 包含一个项目的信息,并通过 String 键访问值。
  1. 项目结构与开发环境
  • lib 文件夹:主要编写 Dart 代码的地方。main.dart 是默认入口文件。

  • pubspec.yaml 文件:用于设置项目元数据、依赖(库/包)管理、SDK 版本等的文件。

naver-148-002

  • VSCode:作为主要开发工具使用。

  • Command Palette (Ctrl+Shift+P / Cmd+Shift+P):执行 Flutter: New Project、Flutter: Launch Emulator 等各种 Flutter 命令。

naver-148-003

  • 有用的快捷键:自动补全(Ctrl+Space/Option+Esc)、重构(Ctrl+Shift+R)、查看参数(Ctrl+Option)等快捷键一定要熟悉!(为了提升生产力)

  • 之后打算围绕 VSCode 快捷键写很多简单的文章。

  • ex) 在 VSCode 中开启 Presentation Mode 的方法

naver-148-004

  • Emulator:虚拟移动设备,用于在没有真实设备的情况下测试应用。

naver-148-005

naver-148-006

  • Hot Reload:在大多保留应用状态的同时,快速把代码变更反映到画面上。(闪电形图标)

  • Hot Restart:初始化应用状态并重新启动应用。(圆形图标)

naver-148-007

  • analysis_options.yaml:设置 Dart 代码分析规则的文件。(例:启用/禁用特定 lint 规则)

  • 例如,如果想使用 print 函数向 Debug Console 输出文本,它会大吵大闹说 production 中不能用。

naver-148-008

  • 那个到 production 时再自行去掉就行,所以试着从 lint 规则中移除 ‘avoid_print’ 吧。解决方法 1. 在相应 dart 文件顶部编写 ignore_for_file 注释。

naver-148-009

  • 那个到 production 时再自行去掉就行,所以试着从 lint 规则中移除 ‘avoid_print’ 吧。

  • 解决方法 1. 在相应 dart 文件顶部编写 ignore_for_file 注释。

  • 解决方法 2. 在项目根目录的 analysis_options.yaml 中进行忽略处理。

naver-148-010

  • 解决方法 2. 在项目根目录的 analysis_options.yaml 中进行忽略处理。

  • 解决方法 2. 在项目根目录的 analysis_options.yaml 中进行忽略处理。

  1. Flutter 学习方法
  • Widget Catalog & Widget of the week:通过 Flutter 官方文档的 Widget Catalog 和 ‘Widget of the week’ 系列学习各种 Widget。

  • 利用社区:在 Flutter 相关社区(在线论坛、开放聊天等)中提问和回答,一起成长。

  • 熟悉 Dart 语法:Flutter 使用 Dart 语言,因此充分理解 Dart 语法很重要。

💭 日记

虽然我已经接触过 C、C++、Java、Javascript、Python、……许多语言,也用过 Spring、Vue.js、Django、FlutterFlow 等各种框架/工具,但还是担心会不会漏掉什么基础概念,所以从 Flutter 基础课程开始听。

我本来以为这些都是已经知道的概念,想快速跳过去,结果这比想象中更说明我离开开发太久了。也许脑肌肉僵住了,脑子里没法利落地构想代码到底该怎么写。

现在已经是可以在 VSCode 里借助 Inline Chat(Gemini 2.5 Pro)、Code Recommendation(GitHub Copilot) 等 AI 帮助,快速提问、找到答案、利用自动补全高效编码的时代了,所以我期待自己能更快恢复编码脑肌肉。

路还很长!冲啊!

留下评论