我写了一个 Flutter 入门工具包来演示如何使用 Flutter 和有用的插件来构建 App Store 应用程序。但是,一些开发人员问我如何开始使用 Flutter。
为什么选择Flutter?
我在 2018 年初完成了自己的 Android 应用程序。发布后,有些用户问我iOS版本什么时候发布。所以,我正在考虑是否应该学习如何编写 iOS 应用程序。但是,我只是一个人的乐队来构建一个产品。维护两个基于代码的项目需要时间。你会问,“为什么不使用 React Native?” 我没有进入 React Native,因为我不喜欢这个架构,因为 javascript 的桥。我认为 React Native 适合一些只需要显示信息的应用程序。有一天,我的朋友给我发了一篇文章——Flutter 的革命性之处。我对 Flutter 很感兴趣,因为它可以为多个平台做一个真正的“一个代码库”。所以,我去了 Flutter。
如何阅读这篇文章?
你可以从 A) 到 L) 一个一个地走,因为我在学习 Flutter 的时候就是走这条路的。对于进阶话题,我开始写 Flutter 应用后,研究了这些话题,觉得很有用。如果您有兴趣,可以阅读它们。
A) 阅读 Flutter 概述
首先,Flutter 与 iOS、Android、React Native 等其他平台有什么区别?由于我来自 Android,我阅读了 Flutter for Android 开发者,其中谈到了 Android 和 Flutter 之间的区别,让您对 Flutter 有一个快速的了解。
如果您来自其他人,您可以阅读其他文件
- 面向 iOS 开发者的 Flutter
- 面向 React Native 开发人员的 Flutter
- 面向 Web 开发人员的 Flutter
- 适用于 Xamarin.Forms 开发人员的 Flutter
B) 什么是声明式 UI 如果你来自 React Native 或 ReactJS,你就会知道。但是,来自其他平台。你可能不知道。然后你应该看一下声明式 UI 简介。
C) 学习 Dart 您可能知道 C#、Java、Koltin、Objective-C、Swift、Javascript 或 Typescript 来编写您的应用程序或 Web。但是,Flutter 使用 Dart。查看 Dart 语言之旅以学习 Dart。我认为 Dart 与 Java 非常相似。
D) 精益 Flutter UI 框架 对于 Flutter,它重新构建了 UI 框架,这意味着原生的 SDK 或 UI 库可能不支持它。那么,我可以使用什么 UI 小部件?查看 Widget 目录。您将更多地了解我可以使用的小部件。因为我是一个视觉学习者,所以我会找到视频来谈论它。Flutter 提供了一个官方的 youtube 频道——Flutter Widget of the Week。您可以更轻松地理解此小部件。
进阶话题: Flutter 为什么在 UI 上有这么高的性能?如果你有时间,请看一下,因为我在 UI 逻辑上总是写错了与 Flutter 小部件树冲突的方式。然后总是抛出错误。多了解它,就可以避免这些错误。
- Flutter Widget 101
- 红木楼梯——Flutter 的分层设计
- Flutter 的渲染管线
E) 启动 Hello World 通过 Flutter 启动。如何安装?如何设置编辑器/IDE?创建第一个 Hello Word 应用程序。官方文档会教你如何做这些。
F) 状态管理方法 — BLoC 以前,我在 Android 应用程序上使用带有 Rx 模式的 MVVM 编写。另外,我在 React.js 上编写了 Redux 结构。对于状态管理,遵循一种模式更好地将知识传递给其他人并轻松维护代码。我喜欢 MVVM 模式,但我发现 Flutter 无法做到与 Android 相同的 MVVM 模式。这是因为 Android 不是使用声明式 UI 构建的。经过研究,我发现一些谷歌的家伙使用 BloC 模式来构建应用程序。然后我阅读了 Architect your Flutter project using BLOC pattern 以了解更多 Bloc 模式。或者,你可以看一下 Flutter 团队无聊秀提供的 Technical Debt and Streams/BLoC。存在不同的状态管理方法。你可以看看别人。
进阶主题:写一个 BLoC 模式。你应该知道基本的反应式编程。请看一下 RxDart。如果您是 Reactive 编程的初学者,您可以使用 RxJS Marbles,它可以可视化 Rx 运算符的工作方式。
G) Page Routing 如何切换不同的页面?对于 Flutter,它提供了 Navigator 功能来切换页面。但是,对于复杂的应用程序,我想找到一种机制来通过页面 ID/名称和元数据切换页面。一个插件 Fluro 可以帮助解决这个问题。
H) 本地化 你可以看看我写的 A new approach of localization in Flutter。之前发现官方文档很难看懂。另外,官方的本地化方式太不方便了。
I) Http Client 为了和Backend通信,我更喜欢在上面写一段干净的代码。所以,Dio 是一个 HTTP 客户端来帮助解决它。目前,我找到了一种新方法——Chopper。我喜欢它,因为它类似于 Android 社区中流行的 HTTP 客户端 Retrofit。
J) Json 序列化 要构建 POJO,我需要处理 JSON 序列化/反序列化的方法。看看 JSON 和序列化。
K) 本地存储 目前,SQLite 是在 Android 和 iOS 上处理 SQLite 的最流行的库。对于键值存储,您可以使用 shared_preferences。但是,我正在寻找一个 ORM 库。moor 仍处于早期阶段,并不受欢迎。Realm 仍在开发 Flutter - Dart / Flutter 支持。
L) 项目风格配置 我想设置三个构建配置,包括开发、暂存和生产。例如,API 端点是不同的。看看为 Flutter 创建风味。
M) 资源
- awesome-flutter
- pub.dev
- Reddit FlutterDev
- Flutter文档
- The Boring Flutter Development Show
- 开源:flutter_starter_kit
网友评论