喜迎Flutter 1.0.0,天气预报Demo

Google 又搞事情了,Flutter 1.0.0 来了。

喜迎Flutter 1.0.0,天气预报Demo

头条的代码格式化真是醉了,截图处理吧。

尝鲜,官方 Demo

这个请看官方教程,注意科学上网,否则你可能会挂在路上。

  1. Xcode(iOS 必须)
  2. Android Studio(Android 了)

开发工具,本人前端,固选择了 VS Code,有很好用的插件。

Mac 相关可能遇到的问题:

  • HomeBrew 源处理
  • Xcode 账号处理

源(终端):

# 替换现有上游
cd "$(brew --repo)"
git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git
cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git
brew update
# 使用homebrew-science或者homebrew-python
cd "$(brew --repo)/Library/Taps/homebrew/homebrew-science"
git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-science.git
cd "$(brew --repo)/Library/Taps/homebrew/homebrew-python"
git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-python.git
brew update

Xcode 如果是第一次用,记得打开示例 Demo 的 ios 文件夹,按下面步骤处理:

喜迎Flutter 1.0.0,天气预报Demo

下面按照官方教程一步一步走即可(不适合纯小白,切记),最终的 Demo 就是个列表加收藏夹的玩意儿。

喜迎Flutter 1.0.0,天气预报Demo

缺失

这个 Demo 很好玩,但是实际上来说,功能还是缺失严重,比如异步,请求等(人家就是演示 Demo 嘛)。

所以我又弄了个基本没有 UI 优化的小 Demo,做个简单的天气预报演示。为什么几乎没有 UI 优化,因为我也是 Demo 嘛。

天气预报

起初我也想着,恩,要不要弄点背景图、动画效果、插图等,后来因为懒,算了,就列表到详情,然后回来吧。

主要补充两大块知识点:

  1. 异步 http 请求
  2. 路由传参与回调

异步 http 大家都知道,注意下写法即可:

喜迎Flutter 1.0.0,天气预报Demo

简单说明一下,async 与 await,如果是前端小伙伴,应该是比较熟悉的,没见过的同学,你就知道 async 声明了一个异步函数,在这个异步函数里面才可以使用 await 标记,await 就是字面意思,等后面的事情走完了,继续执行。

上面 url 请自行替换天气或其他的相关 get url。

这里有个 widget.title,稍后会说到,这个是有上个页面路由过来时候传参。

setState,React 很像的感觉,不过里面是个匿名函数,不是 React 那种对象。

_data 就是私有变量了,在 setState 里面操作私有变量会映射到视图上,这里就是把请求的天气预报数据放到相关字段上面展示了。

然后说说传参与回调:

静态路由不玩传参,我们用的动态路由。

喜迎Flutter 1.0.0,天气预报Demo

首先,这个 Widget 得是 stateful 的,stateless 的貌似不能获取 context,如有错误请纠正。

然后,push 就是常规的压栈操作,压如新的视图(Widget)到栈顶,注意,Dart 2.0 开始可以省略实例化的 new 关键词。这里的 return Detail(title: _city) 就是 return new Detail(title: _city)。

那很明白了,那个 title: _city 就是传参了。获取方式上面代码已经有了。

再然后就是回调,额,简单理解就是在栈顶(或相对的子级页面)页面返回或显式调用 Navigator.pop() 时候触发的事件,就是下面的 then 了。有前端 Promise 基础的一看就懂,不了解的,当做标准使用就行(自己补课去)。

实例与核心代码:

喜迎Flutter 1.0.0,天气预报Demo

注意,中间返回时带参数的回调,上面默认是不带参数的。代码针对有参数做得处理。

main.dart

喜迎Flutter 1.0.0,天气预报Demo

home.dart

喜迎Flutter 1.0.0,天气预报Demo

喜迎Flutter 1.0.0,天气预报Demo

detail.dart

喜迎Flutter 1.0.0,天气预报Demo

喜迎Flutter 1.0.0,天气预报Demo


结合官网 Demo 和这里补充的东西,基本可以实现很多 APP 常见的需求了,当然还有组件通信等等,等我用到再补充,当下这个 Demo 还算够用。

整理一下:

  1. main 入口函数
  2. import 包
  3. stateless 与 stateful 的 Widget
  4. 路由传参回调
  5. 异步 http

如果你都学会了,那么真的可以做个小 APP 玩玩了,百看不如上手,相信自己吧。


项目源码地址:GitHub 搜 ZweiZhao/flutter_weather 即可。


分享到:


相關文章: