专注前端,专注网页设计分享 - (网页制作/模板制作/设计)755150799 织梦模板 | 网页特效 | 网站模板 | 建站教程 | Tag标签 | 联系站长
当前位置:首页 > APP开发

Flutter 系统化全天学习排课计划(总周期:42天,网页HTML转行适配版)【一】

时间:2026-06-10 16:35:21来源:学技巧网站制作 作者:新建 阅读:0次 【 点评一下

整体分五大阶段: 阶段1:Dart语言基础(7天)|阶段2:Flutter基础组件+布局(12天)|阶段3:交互、路由、状态管理(10天)|阶段4:网络请求、本地缓存、真机调试(7天)|阶段5:综合实战项目+打包+代码规范(6天) 每日结构统一:今日知识点 + 理论讲解 + 手写练习代码 + 课后作业 + 易错提醒 你有HTML基础,我会频繁对照HTML/CSS做类比,降低理解门槛。

前置统一规则(全程遵守)

  1. 所有项目路径、项目名不能中文、不能空格
  2. 每天学习时长:3~4小时,先看知识点→手抄代码练习→独立完成作业;
  3. 禁止整段复制代码,复杂代码先拆解看懂,再手动敲一遍;
  4. 每天结束前,用 flutter doctor 简单检查环境是否异常。

第一阶段:Dart 编程语言 【共7天,必须学完再进Flutter】

Flutter全部代码基于Dart,语法和JS相近,但为面向对象,HTML只有标签,缺少编程逻辑,这7天决定后续会不会频繁看不懂代码。

Day1:Dart基础环境、变量、数据类型

学习内容

  1. 新建纯Dart项目:Android Studio → New Project → Dart Empty Project
  2. 程序入口 main(){} 固定结构
  3. 变量声明:varfinalconst 三者区别
  4. 基础数据类型:
    • String 字符串(文字)
    • int 整数、double 小数
    • bool 布尔:true / false
  5. 字符串拼接、多行字符串写法

随堂练习代码(手动抄写运行)

    void main() {
      // var自动识别类型
      var name = "小明";
      // final 赋值后不可修改
      final int age = 22;
      // const 编译期常量
      const String appName = "Flutter学习";
    
      String info = "姓名:$name,年龄:$age";
      print(info);
    }


    课后作业

    1. 定义5个不同类型变量,使用 print() 打印输出;
    2. 练习字符串 ${变量} 插值写法,写一段个人信息介绍。

    易错点

    Dart严格区分大小写;字符串单引号、双引号都可以,不能混用。

    Day2:运算符、if判断、三目表达式

    知识点

    1. 算术运算符:+ - * / %
    2. 关系运算符:> < >= <= == !=
    3. 逻辑运算符:&& 并且、|| 或者、! 取反
    4. if / else if / else 条件判断
    5. 三目运算符 条件 ? 成立执行 : 不成立执行(和JS一致)

    练习:成绩判断

    void main() {
      int score = 78;
      if (score >= 90) {
        print("优秀");
      } else if (score >= 60) {
        print("及格");
      } else {
        print("不及格");
      }
    }

    作业

    输入分数,用if判断等级;再改用三目运算符简写一次。

    Day3:循环 for、while、switch

    知识点

    1. for循环(遍历数字,和JS用法接近)
    2. while循环、do while循环
    3. switch 多条件匹配

    练习:for循环打印1~10

    void main() {
      for (int i = 1; i <= 10; i++) {
        print(i);
      }
    }

    作业

    1. 循环输出1~20所有偶数;
    2. switch判断星期数字,输出对应星期几。

    Day4:List数组(对标JS数组)

    知识点

    1. List 数组定义、增删改查:add()remove()、下标取值
    2. 遍历数组:普通for循环、for in 遍历
    3. 固定长度数组、可变数组区别

    练习示例

    void main() {
      List<String> list = ["苹果", "香蕉", "橙子"];
      // 取值
      print(list[0]);
      // 添加元素
      list.add("葡萄");
      // 循环遍历
      for (var item in list) {
        print(item);
      }
    }

    作业

    创建一个商品数组,循环打印所有商品名称。

    Day5:Map字典(对标JS对象)

    知识点

    1. Map键值对结构 {key:value}
    2. 根据key取值、新增键值、遍历Map
    3. List嵌套Map(APP列表最常用数据格式)

    练习代码

    void main() {
      Map user = {"name": "小红", "age": 20, "sex": "女"};
      print(user["name"]);
    }

    作业

    创建3条用户信息,用 List<Map> 组合,循环遍历全部信息。

    Day6:函数、传参、返回值、匿名函数

    知识点

    1. 自定义函数结构
    2. 必传参数、可选参数
    3. 函数return返回数据
    4. 匿名箭头函数 ()=>{}

    练习

    // 求和函数
    int sum(int a, int b) {
      return a + b;
    }
    
    void main() {
      print(sum(10, 20));
    }

    作业

    封装一个函数,传入长宽,计算长方形面积。

    Day7:面向对象class类、async/await异步(Dart重中之重)

    知识点

    1. class 类、构造函数
    2. 属性、方法
    3. 异步 Futureasync await(后续网络请求必备,类比JS Promise)

    当日任务

    1. 手写简单类;
    2. 看懂异步延时执行;
    3. 复盘前6天所有Dart语法,整理笔记; ✅ 阶段验收:随便给一段简单Dart代码,可以独立读懂、仿写,即可进入Flutter学习。

    第二阶段:Flutter基础组件与布局 【共12天,核心衔接HTML布局】

    Day8:Flutter项目结构、入口、Scaffold页面骨架

    1. 新建Flutter项目,认识lib、android、pubspec.yaml作用;
    2. main()MaterialAppScaffold 完整页面结构;
    3. AppBar顶部导航栏配置(标题、图标); 练习:自定义页面顶部导航文字与颜色。 作业:搭建一个空白页面框架,修改导航栏主题色。

    Day9:基础组件 Text、Container(对标div)、样式TextStyle

    1. Text文字:大小、颜色、加粗、居中、行间距;
    2. Container容器:宽高、背景色、圆角、边框、阴影; 类比:Container = HTML <div>,Text = <span>/<p> 作业:写一个带圆角白色卡片,内部放置一段文字。

    Day10:布局核心 Row横向、Column纵向(对标Flex弹性布局)

    1. Column:垂直上下排列;
    2. Row:水平左右排列;
    3. 对齐属性:主轴、交叉轴居中、居左、居右; 练习:一行放两个盒子,上下放三组文字。 作业:仿页面个人信息行,左侧文字、右侧文字并排展示。

    Day11:Padding边距、SizedBox间距、Expanded自适应占宽

    1. Padding:内边距,对应CSS padding;
    2. SizedBox:盒子间距,用来隔开两个组件;
    3. Expanded:均分剩余宽度,Flex:1均分效果; 作业:实现一行两个卡片,宽度各占一半。

    Day12:Stack层叠布局、Positioned绝对定位(对标position:absolute)

    1. Stack堆叠容器,组件可以上下叠加;
    2. Positioned控制上下左右位置; 练习:卡片右上角叠加标签文字。 作业:做一张图片上方叠加文字标题的样式。

    Day13:Image图片加载、Icon系统图标

    1. Image.asset本地图片引入(pubspec.yaml配置图片路径);
    2. Icon内置图标使用、大小颜色修改; 作业:页面顶部放一个图标+文字组合的标题栏。

    Day14:ListView纵向滚动列表(APP最常用长列表)

    1. ListView基础滚动;
    2. ListView.builder高效渲染长列表; 类比:HTML ul滚动列表; 练习:循环渲染5条新闻列表。 作业:手写10条数据列表,实现上下滚动。

    Day15:GridView网格布局(商品九宫格)

    1. GridView.count 固定列数网格;
    2. 行列间距设置; 作业:完成首页九宫格功能菜单(6个图标格子)。

    Day16:SingleChildScrollView整页滚动

    适用场景:页面内容超出手机屏幕高度,整体滚动; 易错:Column内容过长会溢出报错,外层包裹滚动组件; 作业:做一个长表单页面,整体可上下滑动。

    Day17:常用基础按钮:ElevatedButton、TextButton、IconButton

    1. 普通按钮、文字按钮、图标按钮;
    2. onPressed点击事件写法; 练习:点击按钮弹出文字打印内容。 作业:页面放置登录、取消两个并排按钮。

    Day18:TextField输入框(账号、密码表单)

    1. 单行输入框、提示文字hint;
    2. 密码隐藏显示、输入内容获取; 作业:完成简易账号密码输入表单页面。

    Day19:第二阶段复盘整合

    综合练习:完整仿写静态首页(顶部导航+九宫格菜单+新闻列表); 梳理所有布局组件使用场景,整理思维导图; 验收:能独立根据简单效果图,完成页面布局排版。

    第三阶段:交互、路由跳转、状态管理 【共10天】

    Day20:弹窗、SnackBar轻提示、Dialog弹窗

    1. 底部弹出提示;
    2. 确认弹窗、提示弹窗; 练习:点击按钮弹出确认框。

    Day21:页面路由跳转(不同页面互相打开、返回)

    1. Navigator.push打开新页面;
    2. Navigator.pop返回上一页; 作业:首页点击按钮,跳转到登录页。

    Day22:路由跳转传参、接收参数

    页面A携带数据,跳转到页面B并读取数据; 类比:网页URL传参; 作业:列表点击条目,把标题传到详情页展示。

    Day23:底部Tab导航栏(首页、消息、我的切换)

    用Scaffold+BottomNavigationBar搭建底部多页面切换结构; 作业:搭建包含3个tab的底部导航项目框架。

    Day24:StatefulWidget有状态组件、setState局部刷新

    区分:Stateless无状态页面 / Stateful有状态页面; setState修改数据,页面自动刷新(类比JS修改DOM); 练习:点击按钮数字累加刷新页面。

    Day25:实战:登录页完整静态+点击逻辑

    整合输入框、按钮、弹窗、跳转; 需求:账号密码非空判断,空值弹出提示,正确则跳转到首页。

    Day26:数据列表点击切换状态

    列表点击选中变色,练习状态局部变更。

    Day27:简易全局数据共享(新手入门全局状态)

    理解不同页面共用一份数据的场景。

    Day28:第三方库引入方式(pubspec.yaml安装依赖)

    会复制库名称、执行pub get,简单使用第三方插件。

    Day29:第三阶段综合作业

    完成一套带底部导航、登录跳转、列表点击的小结构项目。

    第四阶段:网络请求、本地存储、安卓真机调试 【共7天】

    Day30:Dio库网络请求(GET接口拿数据,对标Axios)

    1. Dio安装配置;
    2. get请求获取网络JSON数据;
    3. JSON数据转List数组渲染到列表。

    Day31:POST提交请求(登录提交账号密码)

    请求头、请求体参数传递。

    Day32:SharedPreferences本地持久化存储

    保存简单数据:记住登录状态、用户名;关闭APP再打开数据不消失,对标浏览器LocalStorage。

    Day33:安卓模拟器完整使用、常用操作

    模拟器截图、安装卸载APP、切换横竖屏、查看打印日志。

    Day34:Windows连接安卓手机真机调试

    开启手机开发者模式、USB调试,真机运行项目,查看手机真实显示效果。

    Day35:安卓状态栏适配、沉浸式状态栏、刘海屏兼容

    修改顶部状态栏颜色、透明沉浸样式,解决手机刘海遮挡内容问题。

    Day36:安卓权限基础配置(相册、存储权限)

    认识 AndroidManifest.xml,学会添加权限声明,避免高安卓版本闪退。

    第五阶段:综合实战、打包APK、代码规范收尾 【共6天】

    Day37:实战项目一:简易资讯APP

    需求:底部导航、首页新闻接口加载、下拉刷新、点击进入详情;完整从头到尾独立开发。

    Day38:实战项目二:带登录的个人中心APP

    登录保存状态、个人信息展示、退出登录清除缓存。

    Day39:APK打包流程

    命令打包测试包:flutter build apk;认识打包后的安装包存放目录。

    Day40:正式签名打包release包,用于发给别人安装。

    Day41:代码规范化学习

    1. 项目目录分层:pages页面、api接口、utils工具;
    2. 重复组件封装抽取;统一代码缩进、命名规范;
    3. 避免所有代码堆在main.dart。

    Day42:整体复盘 + 后续进阶方向梳理

    1. 整理所有报错笔记;
    2. 了解进阶内容:GetX、Bloc状态管理、iOS打包、上架流程; 完成全流程入门,具备独立开发小型APP的能力。

    配套使用建议

    1. 我可以每天早上给你发当日详细知识点+可直接练习的代码模板
    2. 你当天写完练习、作业,遇到报错可以粘贴代码+报错截图,我帮你订正、讲解问题;
    3. 等Dart7天过完,我会给你一份常用Flutter组件速查表,方便写代码时查阅。

    我现在先把 Day1完整详细版(带实操步骤、练习、作业) 发给你,你今天直接照着执行,可以吗?

    <input id="copy-input" style="box-sizing: border-box; margin: 0px; font-size: inherit; font-family: inherit; line-height: inherit; overflow: visible; touch-action: manipulation; white-space: normal; position: absolute; left: -1000px; z-index: -1000;"/>


    • 用微信  “扫一扫”

      将文章分享到朋友圈。

      关注公众号:xue-jiqiao

    本文版权归原作者所有,转载请注明原文来源出处,学技巧网站制作感谢您的支持!