前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2020 Flutter开源资源索引

2020 Flutter开源资源索引

原创
作者头像
jerrypxiao
修改2023-09-21 14:33:05
1.6K0
修改2023-09-21 14:33:05
举报
文章被收录于专栏:音视频专栏

2020 Flutter开源资源索引

一张图为开发体验Flutter需要考察到的知识点

1. 教程

(1)Flutter官方文档

(2)Flutter中文网

(3)Flutter中国

(4)《Flutter实战》推荐

(5)Dart Flutter教程(B站教程之一)

2. 开源搜集

(1)app参考实例学习flutterawesome

(2)GITHUB客户端

gitTouch (比较完整Flutter编写) https://github.com/CarGuo/gsy_github_app_flutter (Flutter的多项目,文档多) https://github.com/conghaonet/GitHao (star 139)

(3)Flutter Create 是我们发起的一次开发竞赛 https://github.com/pinkeshdarji/FlutterCreateSubmissions2019

(4)Panda看书

(5)超完整的Flutter版wanAndroid客户端

(6)使用flutter开发俄罗斯方块

(7)A multiplatform Dart movie app 

(8)This is a podcast app made for strawberry 

(9)使用provider完成的全面而又精美的Flutter Todo-List app文章

(10)yubo725/flutter-osc开源中国

(11)Flutter Launch Timeline Demo

(12)高仿知乎

(13)TodoMVC for Flutterhttp://fluttersamples.com/

(14)Flutter Architecture Samples(star 4.7k)


3. 博客资源深入文章

(1)一个很棒的Flutter学习资源列表

(2)http://gityuan.com/  Flutte深入原理分析等文章

(3)跨平台技术演进及Flutter未来


4. 学习网站链接

Flutter 官网Flutter 中文网Flutter 实战闲鱼技术博文美团


5.素材库

https://www.uplabs.com


6. 知识点

(1)Flutter | 深入浅出 Key

(2)Flutter 精美卡片 界面 UI (快速开发)

(3)PageView,Transform的使用


7. 演讲及最新进展

(1)Flutter 的最新进展和未来展望 - Google Flutter 团队董韬 GMTC 演讲

(2)GDD2019视频-Flutter1.9版本正式发布

(3)Flutter 跨平台框架应用实战-2019极光开发者大会

(4) Flutter开发实战与前景展望——大前端开发的未来

(5)基于JS的高性能Flutter动态化框架MXFlutter

(6)Flutter实时音视频技术实践


8. 研究方向脑暴

(1) 原生工程混编 Flutter方案

原生工程混编 Flutter 的方式有两种。一种是,将 Flutter 工程内嵌 Android 和 iOS 工程,由 Flutter 统一管理的集中模式;另一种是,将 Flutter 工程作为原生工程共用的子模块,由原生工程各自管理的三端工程分离模式。目前,业界采用的基本都是第二种方式。而对于三端工程分离模式最主要的则是抽离 Flutter 工程,将不同平台的构建产物依照标准组件化的形式进行管理,即:针对 Android 平台打包构建生成 aar,通过 build.gradle 进行依赖管理;针对 iOS 平台打包构建生成 framework,将其封装成独立的 pod,并通过 podfile 进行依赖管理。这样,我们就可以在 Android 工程中通过 FlutterView,iOS 工程中通过 FlutterViewController,为 Flutter 搭建应用入口,实现 Flutter 与原生的混合开发方式。

(2)如何统一管理原生页面和 Flutter 页面跳转交互的混合导航栈

对于混合开发的应用而言,通常我们只会将应用的部分模块修改成 Flutter 开发,其他模块继续保留原生开发,因此应用内除了 Flutter 的页面之外,还会有原生 Android、iOS 的页面。在这种情况下,Flutter 页面有可能会需要跳转到原生页面,而原生页面也可能会需要跳转到 Flutter 页面。这就涉及到了一个新的问题:如何统一管理原生页面和 Flutter 页面跳转交互的混合导航栈。

(3)混编过程中的多实例问题

需要注意的是,与纯 Flutter 应用不同,原生应用混编 Flutter 由于涉及到原生页面与 Flutter 页面之间切换,因此导航栈内可能会出现多个 Flutter 容器的情况,即多个 Flutter 实例。Flutter 实例的初始化成本非常高昂,每启动一个 Flutter 实例,就会创建一套新的渲染机制,即 Flutter Engine,以及底层的 Isolate。而这些实例之间的内存是不互相共享的,会带来较大的系统资源消耗。因此我们在实际业务开发中,应该尽量用 Flutter 去开发闭环的业务模块,原生只需要能够跳转到 Flutter 模块,剩下的业务都应该在 Flutter 内部完成,而尽量避免 Flutter 页面又跳回到原生页面,原生页面又启动新的 Flutter 实例的情况。

为了解决混编工程中 Flutter 多实例的问题,业界有两种解决方案:以今日头条为代表的修改 Flutter Engine 源码,使多 FlutterView 实例对应的多 Flutter Engine 能够在底层共享 Isolate;以闲鱼为代表的共享 FlutterView,即由原生层驱动 Flutter 层渲染内容的方案。

(4)数据状态管理框架

InheritedWidget、Notification 和 EventBus 这 3 种数据传递机制,通过它们可以实现组件间的单向数据传递。

随着产品需求迭代节奏加快,项目逐渐变得庞大时,我们往往就需要管理不同组件、不同页面之间共享的数据关系。当需要共享的数据关系达到几十上百个的时候,我们就很难保持清晰的数据流动方向和顺序了,导致应用内各种数据传递嵌套和回调满天飞。在这个时候,我们迫切需要一个解决方案,来帮助我们理清楚这些共享数据的关系,于是状态管理框架便应运而生。

Provider从名字就可以看出,Provider 是一个用来提供数据的框架。它是 InheritedWidget 的语法糖,提供了依赖注入的功能,允许在 Widget 树中更加灵活地处理和传递数据。那么,什么是依赖注入呢?通俗地说,依赖注入是一种可以让我们在需要时提取到所需资源的机制,即:预先将某种“资源”放到程序中某个我们都可以访问的位置,当需要使用这种“资源”时,直接去这个位置拿即可,而无需关心“资源”是谁放进去的。所以,为了使用 Provider,我们需要解决以下 3 个问题:

资源(即数据状态)如何封装?

资源放在哪儿,才都能访问得到?

具体使用时,如何取出资源

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2020 Flutter开源资源索引
  • 1. 教程
  • 2. 开源搜集
  • 3. 博客资源深入文章
  • 4. 学习网站链接
  • 5.素材库
  • 6. 知识点
  • 7. 演讲及最新进展
  • 8. 研究方向脑暴
相关产品与服务
实时音视频
实时音视频(Tencent RTC)基于腾讯21年来在网络与音视频技术上的深度积累,以多人音视频通话和低延时互动直播两大场景化方案,通过腾讯云服务向开发者开放,致力于帮助开发者快速搭建低成本、低延时、高品质的音视频互动解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档