Gianfranco Papa 是 Somnio Software 的 CTO 兼联合创始人,该公司总部位于乌拉圭,专门从事 Flutter 开发。他还是 Flutter 和 Dart 的 Google 开发者专家 (GDE),并且是 Flutter Montevideo Meetup 的共同组织者,这是一个由 Flutter 爱好者和专业人士组成的团体,致力于帮助发展乌拉圭乃至全球的这项技术社区!
https://medium.com/@gianfrancopapa/how-i-became-a-google-developer-expert-for-flutter-dart-87d2e31aeb38
https://pub.dev/packages/mason
https://flutterconflatam.dev
https://somniosoftware.com
<raw_text>0 您好,感谢您的收听。这是 It's So Widgets Flutter 播客。我的名字是 Solo Korn,每一期节目,您都有机会与 Flutter 社区的另一位杰出成员交谈。在本期节目中,我们非常幸运地能够与 Gianfranco 交流。欢迎。您好,你好吗?很高兴来到这里。感谢您参加。首先,您能分享一下您的背景吗?当然可以。好的,那么……
我是 Gianfranco。我是一名软件工程师。我开始学习计算机科学专业。这就像在乌拉圭的等价物。这相当于计算机科学专业加上一年的专业学习。
所以,是的,现在我是名为 Somnio Software 的公司 的 CTO 和联合创始人,该公司基本上是一家专门从事 Flutter 开发的开发公司。因此,我们有很多使用 Flutter 为不同客户开发的不同项目。是的,那时我在大学的时候,
我对软件设计和架构非常感兴趣。此外,我的专业是数据科学。当时这是一件非常有趣的事情,比如机器学习和人工智能。我认为这些东西现在非常普遍,对吧?但是,是的,我的意思是,我对任何类型的编程都感兴趣。我想
当时真正让我感兴趣的是算法和竞技编程。这与编程的思维方式有所不同,因为您不仅需要考虑,例如,如果您在考虑软件设计,则必须考虑可维护性。但在这种类型的比赛中,最重要的事情是让事情快速完成,对吧?
因此,不一定需要应用您将在项目中包含的最佳实践。但另一件当时真正吸引我眼球的事情
是移动开发。我开始使用原生技术在 Android 和 iOS 上开发应用程序。我记得使用 Java 开发 Android 应用程序,也使用 Objective-C 开发 iOS 应用程序。我经历了从 Objective-C 到 Swift 的转变。而且……
是的,我还开始寻找跨平台的替代方案。我还拥有 React Native 和 Flutter 的经验。今天我们将讨论很多关于 Flutter 的内容。但是,是的,我认为接触不同的应用程序框架方法,对您的职业发展非常有益。所以,是的。
是的,这就是我的背景。正如我所说,我与两位同事、两位合作伙伴一起创办了一家公司,最初是为了在不同客户的不同项目中使用不同的技术。我们各自以自由职业者的身份工作。但后来我们走到一起,开始从事……
共同项目。那时我们开始为一个真实的项目和一个真实的客户使用 Flutter。我们决定开始专门从事这项技术,因为它非常有前景。我们可以为不同的平台创建不同的应用程序。是的,这就是一切开始的方式
在我的公司,我们现在非常兴奋,因为这项技术发展迅速,我们有机会参与许多 Flutter 项目,我们拥有 50 多人的团队。是的,这就是我的背景以及我如何走到今天这一步。我还
我是一名 Dart 和 Flutter 的 Google 开发者专家。我们可能稍后会谈到这一点。但是,是的,我决定在 Flutter 上投入大量精力。这就是我追求成为 GDE 的原因。非常酷。这是一个令人惊叹的故事。您最初是如何听说 Flutter 的?
好吧,这实际上是一个有趣的故事,因为正如我所说,我正在使用原生技术开发移动应用程序。我记得我正在做的这个特定项目,我不是为某个特定客户工作,而是在 iOS 上进行一个副项目。我当时主要使用 Xcode 和 Swift。
因为,是的,我从一个平台开始,对吧?如果您正在进行原生开发,则必须从某个地方开始。不知何故,我偶然发现了这个 Flutter 框架工具。当时我不知道它是什么,但我实际上是在浏览互联网以解决与我的 Swift 应用程序(在 iOS 上)相关的某些问题。但不知何故,我最终下载了 Flutter。我不知道怎么回事,但说实话,
我甚至没有注意这个工具的名称或背后的公司(谷歌),对吧?但我只记得我开始运行……
计数器应用程序,就像这个应用程序一样,Flutter 的初始应用程序,就像运行 Flutter create 命令时一样,您有计数器应用程序,对吧?这真是令人难以置信,因为,是的,我感觉,我开始体验热重启和热重载功能
我可以理解我开发移动应用程序的速度有多快,你知道,因为我认为我当时也在为网络开发。我认为我当时使用的是 React Native,或者多多少少我在 Web 开发方面有很多经验。我觉得与移动开发相比,至少在当时,Web 开发在某种程度上非常不同,因为
对我来说,Web 开发感觉更像是尝试,例如编写一些 html、一些 css 或 javascript,并在 Web 上快速验证这些内容,并且这些循环会像您开发流程中的其他事情一样重复,对吧?但在移动方面并非如此
因为因为您在原生端有热重启或热重载,您必须进行很多更改才能进行构建,对吧?否则,您就会损失很多秒,一天下来就会变成几分钟,效率不高,对吧?所以
当我下载 Flutter 时,这是首先吸引我眼球的事情。
我认为,我的意思是,当时我知道有其他工具,例如 React Native,也支持这种行为。但是,正如我在 Swift 和 Java 中解释的那样,由于我在原生开发方面有很多经验,所以我更习惯于这种方式。因此,当我下载 Flutter 时,这真是令人难以置信。但不仅如此,我认为
此外,当时吸引我眼球的一些事情是,我确实有一个用于构建的小部件
常见的 UI,对吧?这对我来说非常有用。不仅是小部件,还有导航模式。我的意思是,一切似乎都非常流畅,我不必花费太多时间来查找库或 Flutter 中如何解决这两件事。就像我下载了这个东西,它就可以工作了。
然后不知何故,我开始寻找或研究这是什么东西,因为我没有提到,但当时它就像第一个测试版。所以当我开始尝试时,这真的是非常开始。这个故事的悲惨部分是……
当时,我必须在我的一个项目上投入精力,该项目需要使用 React Native。所以我没有机会继续玩 Flutter,因为那个项目大约持续了三到四个月。
但我认为这也让我明白,Flutter 确实更好,可能比当时 React Native 好得多,因为我也有机会玩弄 React Native,对吧?当时我很难过,但是……
是的,当那个项目结束后,我记得我们又回到了 Flutter,并说,好吧,也许这就是我们需要使用的工具。我们开始更认真地对待 Flutter。我的意思是,正如我所说,当时它是测试版。它甚至还不稳定。所以我们所做的是……
尝试将 Flutter 用于一个真实的项目和一个真实的客户,并且我和我的合作伙伴取得了优异的成果,因此我们了解到这是一个非常酷的框架,可以开始构建应用程序,是的,这就是我最初听到 Flutter 的方式,这显然是一个错误,我会在这里喜欢
像 Flutter 之后,但最初只是浏览互联网并试图解决当时无法解决的不同问题。但是通过下载 Flutter,我发现了如何以不同的方式做事。
很好。我觉得我的经历非常相似。我仍然记得我第一次尝试 Flutter 时,我的思绪被震撼了。我之前是一名 Web 开发人员。无法想象以后会再使用任何其他工具。感觉我的整个开发者世界都改变了。您如何看待 Flutter 的未来发展?或者您认为它在未来几年将走向何方?
好吧,这是一个非常酷、非常棒的问题。我的意思是,我认为一方面,如果我们回顾 Flutter 的创建方式,我认为,在我看来,Flutter 最初的目标是解决我们之前遇到的某些问题。
通过创建移动应用程序,特别是对吧?因为当时,我已经说过我正在使用原生技术,而原生技术的成本非常高,因为您必须构建两次。但不仅如此,我认为即使是创建原生移动应用程序的体验也非常缓慢。
因为您没有热重载之类的功能,或者因为您……我的意思是,当时我记得所有框架,无论是 Java 还是 Swift,都或多或少……好吧,不是或多或少,它们是命令式框架,对吧?我觉得这些东西并没有提高您作为开发人员的生产力。
是的,像原生开发一样非常缓慢。您必须处理不同的方法,例如,不仅是命令式编程范例,还有如何使用 XML 或 iOS UIKit 的猜测来构建 UI,而且您还必须处理约束。我认为您需要花费大量时间来做一些可能更容易的事情,例如,我不知道,例如在不同的屏幕尺寸上布局所有内容,对吧?所以
另一方面,我们有其他跨平台解决方案。Flutter 并不是第一个,对吧?但我感觉在选择其中一个时有很多权衡,因为您知道您不会获得与原生相同的体验,因为,我不知道,也许您是
从单个代码库为 Android 和 iOS 创建应用程序,但性能并不相同,因此跨平台和原生之间存在巨大差距,我认为 Flutter 我认为
以某种方式弥合了这一差距,因为您获得了与原生相同的性能,但您还可以获得声明式框架最佳工具的优势,在我看来,这更容易,因为您不必以编程方式说明您想要编写什么,而是将所有内容隐藏在一个更易于理解的 API 后面,并且
是的,我认为 Flutter 有助于缩小差距,因为它提供了两全其美的优势。但是,话虽如此,我认为我会说,其想法是减少我们作为开发人员在创建具有许多不同平台的产品时所付出的努力。
是的,我的意思是,我知道我只谈论移动设备,但 Flutter 突然转向并尝试覆盖更多平台,对吧?如果我们回顾历史,下一个是 Web,然后是桌面。在桌面上,我们有 macOS、Linux、Windows。我的意思是,有很多不同的平台需要覆盖。是的,我的意思是,我认为该平台
Flutter 的最初目标是需要解决拥有两个不同平台的移动问题。突然间,它开始覆盖更多平台,即 Web 和桌面。在 Web 方面,我觉得有所不同,因为我觉得它并没有试图改变或
是的,或者将其放在与原生传统框架相同的位置,对吧?例如,JavaScript,所有 JavaScript 框架,React、Vue 或 Angular。因为在 Web 中,正如我们所知,Flutter 的行为并不相同,对吧?经典的问题是,好吧,我在 Flutter 中没有 SEO,或者在 Flutter 中设置 SEO 非常困难。
因此,我认为从这个意义上说,Web 中的 Flutter 是不同的,它试图解决不同的问题,而不是与现有的所有框架竞争。是的,现在是时候了,我的意思是,它不一定是需要每个人都理解的框架。
被爬虫理解以拥有良好的 SEO。但我认为在软件中,我们需要为我们想要解决的问题选择最佳工具。如果我们希望构建例如具有出色 SEO 的登录页面,那么 Flutter 不是最佳工具。但如果我们想要在 Web 上构建不同类型的体验,或者渐进式 Web 应用或单页应用程序,它就是一个很棒的工具。
因为我们可以控制屏幕的每个像素,这使您可以构建非常复杂的 UI,而使用其他技术构建它将非常困难。最后,我们必须谈谈桌面,对吧?现在这似乎还很不成熟。在 Flutter 中,它已经发展了很多。
我觉得这非常困难,因为还有三个其他平台,对吧?Mac OS、Linux 和 Windows。掌握每一个都非常困难。我真的很认为 Flutter 的工作方式,因为它必须几乎重新发明每个平台的轮子,因为它不依赖于原生平台。
像,是的,一个组件。因此,很难达到我们今天所处的水平。但事实是,现在使用 Flutter,您可以为任何平台构建。所以我认为
这种趋势将会持续下去,不仅针对主要平台,还针对我们当时没有预料到的东西,对吧?例如,手表,Apple Watch 或不同类型的屏幕。我认为这非常有用,因为您作为开发人员可以真正学习一个框架,一种编程语言,并且可以
为任何您想要的平台编写代码,可能是您最感兴趣的平台。您不必花费太多时间来理解该工具或该编程语言。例如,假设您正在从事 Android 项目,并且想要为 iOS 制作相同的应用程序。您必须花费大量时间来理解不同的语言,Swift,
或涉及 Xcode 的工具,对吧?是的,不知何故,通过使用 Flutter,您可以忘记这一点,只需尝试一个新平台即可。此外,我认为这确实鼓励您尝试您甚至从未想过要尝试的不同平台。例如,电视,对吧?因为您了解 Flutter,所以您想在不同的平台上尝试一下。
但是,是的,另一方面,我觉得如果我们想知道未来几年 Flutter 会发生什么,我觉得作为一个开源项目,它一直以来都是如此,路线图是公开的,对吧?因此,我们可以提前知道 Flutter 团队目前的投资是什么。
我记得今年特别是在非洲举行了 Flutter Forward 活动。我有机会去那里。这是一个非常棒的活动。但它也让我真正了解了今年即将发生的事情。事实上,这非常重要,因为正如我所说,我们在所有项目中都使用 Flutter,这帮助我们预测了即将发生的事情。例如,
在 2 月或 1 月的活动中宣布的一件事是,例如,FFI。存在外部函数调用,这肯定会影响我们今天编写的插件或元素嵌入。我们开始考虑如何利用这一点,也许可能
开始将 Flutter 视为一个工具,我们可以将其集成到我们与不同项目一起工作的当前 Web 项目中,并且在某些情况下,我们的客户在 Web 中使用原生技术,但是,这使我们能够拥有不同的
产品,也许您可以将这两种技术结合起来,无论哪种用例是最好的,也许可以使用 Flutter 来完成某些事情。这并不一定意味着您需要使用 Flutter 重建 Web 上的所有内容。
是的,还有关于 Flutter 背后的编程语言 Dart 如何发展的问题,对吧?所以我想说的是,是的,在某种程度上,如果您想了解未来几年会发生什么,Flutter 的好处在于它是一个真正的开源项目。因此,您可以获得这些信息。这不像您会被惊喜或必须像其他类型的框架那样猜测。
最后,我想我更多的是在谈论 Flutter 团队的投资,对吧?但社区也很重要,因为社区也创建了不同的库,创建了不同的库,您可以知道兴趣是什么,社区对框架的改进感兴趣。
例如,在 Riverpod 等不同项目中即将发生的事情。因此,您还必须记住社区如何使用该框架,以便您可以预期未来许多不同方面的重大改进。在考虑 Flutter 未来如何发展时,这一点也很重要。这些都是很好的观点。是什么激励您成为 Flutter 和 Dart GDE?您能稍微描述一下您的旅程吗?
是的,当然。所以,是的,我之前说过,我成为了 Dart 和 Flutter 的 Google 开发者专家。我认为,是的,主要是因为我非常专注于这项技术,我们基本上使用 Flutter 完成每个项目。我认为社区是一个关键因素,它激励了我。我有机会结识许多使用 Flutter 工作的人和同事。
他们中的一些人也是 GDE,不仅在拉丁美洲,而且在世界其他地区。这确实激励我走上了这条道路。我认为分享我的知识、我的经历和我的观点也是一个非常关键的部分。我开始通过创建博客、Facebook 上的帖子来分享我的所有知识。
在社交媒体上,在 Medium 上,还在 GitHub 上分享开源项目,并参与播客和直播等活动。随着时间的推移,我开始获得一些信任和信心,我相信我正在做的事情对社区和开发人员非常有帮助。
是的,这确实激励我走上了这条道路。此外,事实上,在我的国家乌拉圭,没有 Flutter 的 Google 开发者专家。其他技术有。但我认为,是的,尝试推动该国这项技术的发展对我来说非常重要。
是的,事实上,我成为了第一个,至少在 Flutter 方面,在乌拉圭的第一个 GDE。是的,这有点像我的灵感来源。是的,事实上,在我的公司 Insomnio Software,
由于我们专门从事 Flutter 开发,所以我确实有机会教授我们使用 Flutter 的方法。所以,是的,在某种程度上,我也在与我的队友分享知识并学习有关该框架的知识。所以,是的。
这就是我成为 Flutter GDE 的大致过程。此外,我还有一篇博文,它可能比整个过程更详细地描述了需要考虑的事项,因为这通常是人们问我的一些问题,例如如何到达那里。是的,有一些更官僚的事情需要考虑
在到达那里时要做的。例如,与 Flutter 团队成员之一进行面试。但是,是的,在我的其中一篇博文中对这一点进行了逐点描述,所以我真的建议您也阅读一下。太棒了。我一定会将博文链接添加到剧集节目说明中。Flutter 中的事情发生了变化吗?
是的,我的意思是……我的意思是,我们说过,对吧,当您尝试时,整个框架看起来非常令人难以置信,特别是如果您正在体验其他类型的框架。我认为……
关键因素之一是它是声明式的。我认为这种趋势也是原生框架试图达到的目标。例如,在 Android 和 iOS 中,我们有 Compose 和 SwiftUI。所以我认为这验证了声明式将继续存在的方式。所以
我想说的是,它确实有很多好处,Flutter。因此,很难看出我们如何改变事情或我们想看到改变的事情。但我认为我们必须……
为了推动框架的更多改进,我们必须认识到有一些问题需要解决才能改进。我认为关于状态管理的问题确实可以改进。我的意思是,我们现在有很多库,我认为
将继续存在,例如 Block 或 Riverpod。所以我认为不将某些东西作为标准的做法是正确的,因为社区创建了这些很棒的库。但也许投资,我不知道,例如对框架如何为您提供例如绑定可能会有用的东西进行另一次迭代。我认为这些事情是
其他框架已经投入时间去做的事情。我认为导航在当时非常难以掌握,尤其是在 Navigation 2.0 发布之后。但同样,社区创建了 GoRouter 包,然后它被 Flutter 本身收购,因此现在它位于 Flutter 存储库中。但对于那些不了解 GoRouter 的历史以及所有这些的人来说,它与框架是分开的,对吧?因为它是
它是 Navigation 2.0 的更高层次的抽象。因此,也许拥有一个更无缝的东西,不需要额外的包,可能会很有用,我想。因此,人们不必安装另一个包。我想,在某种程度上,框架必须提供它所做的所有低级 API,对吧?他们在
我非常擅长提供下一个导航 API。我们当时只有 Navigation 1.0。拥有所有声明式内容与我们所说的内容一致,即声明式比……
命令式更容易。但是,是的,这些可能是一些要点。此外,我们必须提到,是的,我的意思是,当我们谈论 Flutter 的变化时,我们还必须谈论 Dart,因为最终,Dart 是我们使用的编程语言。因此,如果我们继续改进 Dart 编程语言,这显然会影响我们在 Flutter 中构建应用程序的方式。
我觉得现在我们可能非常依赖于幕后代码生成的东西,对吧?您可能必须使用 BuildRunner 或,我不知道,像 JSON 序列化器这样的东西,它在幕后为您创建代码。
我认为在 Dart 中拥有元编程的想法将非常有用,因为我们只需在代码中添加注释,我们就可以,是的,不必太依赖于实际为非常标准的事情生成代码,对吧?这确实可以改善开发人员的体验。例如,我设想,
停止为我知道将要处理的类使用 JSON 或 SLO,对吧?这可能会改善开发体验。但是,是的,我认为这些事情可能会到来。当然,我们听说过人们正在努力改进这种 API 和元编程。所以,是的。
所以,是的,我会说这可能是改进的一些方面。但同样,这确实是在努力推动改进,以便我们可以继续获得我们目前通过使用 Flutter 创建这些应用程序所获得的最佳体验。
我完全同意。我发现 SwiftUI 与 Flutter 相比非常有趣。我很想看到 Flutter 朝这个方向发展。我发现 SwiftUI 有趣的一点是,它开箱即用,更具有主见性。对我来说,一个很好的例子是,如果您在 SwiftUI 中向屏幕添加文本,它会自动将其放在屏幕的中央,这可能是用户想要的。
而对于 Flutter,它默认为左上角。您可以对其进行配置,将其包装在一个中心小部件中,它就会居中。有很多例子表明,SwiftUI 开箱即用就能做到您期望的或您可能在应用程序中想要的事情。SwiftUI 强烈表达其观点很好,它使开发人员体验更加流畅。因此,我们稍微谈到了 Block 和 Provider,以及 Riverpod。您对状态管理有什么具体的看法?
是的,这是一个非常棒的问题。我认为大多数 Flutter 开发人员都问过这些问题,例如,状态管理怎么样,对吧?这几乎是我们遇到的巨大问题。我想这基本上是因为框架本身为您提供了
处理状态的 API,但它并不一定为您提供一种处理更复杂的事情或处理状态管理问题的方法。所以我认为,作为 Flutter 的早期采用者之一,我想当我第一次尝试 Flutter 时,我
我需要为这个问题找到一些解决方案,因为这是任何前端框架的问题,对吧?最初我使用的是 React。所以我认为,好吧,也许我们必须使用与 React 相同的东西,当时是 Redux。所以我开始……
思考,好吧,也许我必须创建或查看应用程序开发中已经为我提供 Redux 的所有功能或特性的包。但是,是的,我也开始关注 Flutter 的观点,因为它是一项新技术,并且可能具有不同的解决问题的方法。我们不必采用我们从其他技术中学到的所有东西。
这真的很令人困惑,因为第一年,我想在其中一个演示文稿中,Block 模式是一个非常突出的内容。所以,是的,最初,就像,好吧,我必须投入时间来理解 Block 模式,因为我现在正在使用 Flutter。这不像 Flutter 会朝那个方向发展,对吧?这就是我最初开始……
我从 React 中的 Redux 转到了 Flutter 中的 Block,这是一个非常酷的想法,Block 模式,特别是对于所有这些反应式编程,对吧?您在用户的每次交互中都会显示所有内容
但我认为这有点无聊,因为您需要花费大量时间在样板代码上,而且使用流也比较复杂。我的意思是,这并不是一件非常复杂的事情,但是
也许有些地方不够流畅,不够顺滑。你需要一些像 RxStart 这样的东西来做一些基本的事情,比如组合流和流。是的,我认为第二年更令人困惑。我认为我们现在谈论的是2019年,当时下一个演示将 provider 推销为状态管理解决方案,对吧?所以
所以是的,那时我们有 Block、Provider,以及我们提到的其他类型的状态管理解决方案,Redux、MobX。所以当时有很多解决方案,真的让人很困惑应该采用哪个解决方案,对吧?
但是是的,所有这些都有它们的权衡。归根结底,我真的觉得你需要选择你最舒服的。但是是的,继续这个故事,我们开始关注 Block 和 Provider。但是当我们发现 Block 库时,
这个我们可能都用过的著名包是由 Felix 创建的。我认为这真的改变了我们使用 Block 模式创建应用程序的方式,因为它确实包含了使用 RxDart 和流以及所有这些的全部复杂性。
以及创建基本功能所需的所有样板代码,这就像很多,因为你需要在你的博客和所有流以及同步等等上投入大量时间。是的,我认为通过采用该库,我们真的提高了创建应用程序的效率,我们真的再次爱上了 Block,对吧?我们认为这是……
创建应用程序和处理状态管理的正确方法。但在 Provider 方面,我们一直在关注这个库。所以最近,我认为是今年,Riverpod 作为稳定版发布了。Riverpod 将是
Provider 的延续,它确实为你提供了更好的方法来处理你可能在任何项目中,在任何中型或大型项目中遇到的所有状态管理问题,对吧?
但是是的,我认为现在我真的很建议不要在不断解决这个问题上投入太多时间,而是尝试使用 BloC 或 Riverpod,它们运行良好,并且经历了很多迭代,社区也
推动这些库变得更好,它们经历了很多变化,现在使用它们真的很容易,但是是的,也许我想如果你想做一些更可预测、更枯燥、更容易、在我看来更容易的事情,我会选择 BloC,因为
我觉得使用 BloC 库创建模式非常简单直接。而且,如果你认为你仍然需要大量样板代码来创建一个简单的功能,你可以通过使用 Mason 中的 Bricks 来创建所有内容获益。所以如果你不知道这个工具,它基本上是一个为任何编程语言创建
预构建模板的工具。它更专注于 Dart,但很酷的是你可以创建模板,并且你可以创建你自己的模板来创建一个 Block,例如,需要某种类型的样板代码以及你的状态和事件。所以这样,它不会……
不会通过使用 Flutter Block 来提高你的性能,因为你实际上可以使用该库自动化你所做的一切。但是如果你想探索一些可能对你的 UI 代码产生更大影响的东西,我认为 Riverpod 实际上可以
改变你对状态管理的看法。它不像 BloC 那样容易,因为在 BloC 中,它真的,我认为它真的很无聊,因为在某种程度上不可预测,因为如果你认为
状态是一个函数,UI 是状态的函数,所有状态都由事件改变。在使用 BloC 时,这一点非常清楚,因为你最终拥有你的屏幕、你的小部件,
然后是你的 Block,然后是状态和事件。这确实是定义。但在现实世界的 Riverpod 中,情况有所不同,因为你有其他类型的解决不同问题的方法。但是是的,我认为总而言之,这些是我建议投资的东西。不要太担心试图创建一个完美的解决方案,而是尝试花时间
查看 BloC 或 Riverpod,它们都是很棒的解决方案。是的,我的意思是,还要理解 Flutter 的基础知识,我认为,无状态小部件或有状态小部件或 setState、继承的小部件,这些仍然需要
解决,因为它们就像 Flutter 的基础,了解框架的工作原理以及当你编写 setState 时发生了什么以及框架如何重建整个屏幕非常有用。
因为它会让你更深入地了解 Flutter 的工作原理。但是是的,关于状态管理,我真的很建议采用其中一个最著名的库,就像我提到的那样。这些都是很好的建议。你对刚入门的人有什么建议吗?
好吧,这正是我刚才建议的。我认为,是的,与我刚才所说的一致,我想如果你刚开始使用 Flutter,很容易让自己感到困惑,因为一方面,框架并不是那么有主见。因此,当你最初创建应用程序时,你会发现它非常基础。现在,我们有不同的模板和
作为框架的一部分,我们有很多开源项目涵盖了高质量的行业标准,但当你最初下载项目时,它仍然非常基础,你创建一个应用程序,
第一次,你开始考虑在我的项目中应该使用什么正确的结构,文件夹是什么。我们没有像 MVC 或 MVVM 那样定义良好的模式,所以这真的很令人困惑。所以我建议从基本的东西开始,例如理解无状态小部件和有状态小部件是如何工作的。还有继承的小部件,这是框架中非常关键的部分。
以及 setState 如何重建你的整个小部件,小部件的生命周期是如何工作的。因为如果你理解了这一点,你就可以开始投入时间学习更复杂的事情或最终……
让你的生活更轻松的事情,例如我们提到的这些状态管理库,或者我不知道像依赖注入库等等,但是
我认为理解 Flutter 的这些基础知识非常有帮助,因为如果不这样做,你将从更高级别的事情开始,每当你最终遇到问题时,你将无法确切地理解如何解决它。如果你投入时间去理解,例如,build context 是什么,你将有更多的上下文来解决这些问题,并且
这将更容易。以及如何开始?我认为 Flutter 在定义文档方面做得很好。这是一个定义得很好的文档,所以从那里开始就可以了。我知道这可能不是
最有趣的方式开始,比如阅读文档,对吧?但在 Flutter 的情况下,我认为这非常有帮助,因为它结构合理。它确实涵盖了绝对的基础知识和更高级的内容。
也许选择一个你喜欢的应用程序,并尝试使用 Flutter 重新创建它,这可能会鼓励你尝试更多的事情,对吧?不仅仅是拥有基本的普通功能
或者拥有,我不知道,待办事项应用程序,而且还要花时间了解,我不知道,微动画在 Flutter 中是如何工作的,以及最终让你理解更多关于框架概念的那些类型的事情。所以是的,当你已经涵盖了这些并且更有信心时,我建议你
尝试更多库或复杂的事情,这样你就可以了解行业使用的最佳实践。这是很好的建议。Flutter 文档绝对很棒。我想不出我正在使用的另一个项目的文档像 Flutter 那样好。你还有什么想补充或推广的吗?
是的,当然。所以是的,在我看来,我建议查看我们在社区中举办的聚会。正如我所说,我来自乌拉圭。乌拉圭,我们的首都蒙得维的亚。所以我建议看看我们在蒙得维的亚以及布宜诺斯艾利斯举办的聚会,布宜诺斯艾利斯是阿根廷一个非常靠近乌拉圭的城市。
以及拉丁美洲的所有社区,我们都与他们保持联系。事实上,今年 10 月,下个月,好吧,取决于你何时收听这个播客,但在 2023 年 10 月,我们将在拉丁美洲举办一个大型会议,该会议将在哥伦比亚麦德林举行。
我们将看到来自拉丁美洲社区以及世界各地的大量人员。我对这次活动感到非常兴奋。这将是拉丁美洲规模最大的一次活动。Flutter 团队的人员将前来并在活动中发言。所以是的,我强烈建议
记住这个活动。此外,我还想推广我做的一些工作,例如演讲、开源项目、我在 GitHub 上的示例以及我在 Medium 帐户上的博客文章,以及我的公司博客页面。