【发布时间】:2021-10-16 18:09:08
【问题描述】:
问题是我对程序的工作流程感到困惑,然后是我们导航到的页面以及我们从我们创建的不同文件中导入的小部件。如何更好地理解所有这些以及概念?
【问题讨论】:
标签: flutter dart mobile flutter-layout flutter-test
问题是我对程序的工作流程感到困惑,然后是我们导航到的页面以及我们从我们创建的不同文件中导入的小部件。如何更好地理解所有这些以及概念?
【问题讨论】:
标签: flutter dart mobile flutter-layout flutter-test
我能做的最好的帮助就是分享我的路径,这样你就可以从某个地方开始。警告:前面的意见,而不是实际数据或最佳实践(我不像这里的专家)。
如果您想学习 Flutter,首先要做的事情是:使用 Udemy 之类的平台,花费 10 美元即可获得完整的精心制作的课程。我用this course 迈出了第一步,老实说,这对初学者和初学者来说是最好的。
这是我最近从事的一个项目的示例(即,这不是经验法则,而是对我有用的东西):
+/lib [the whole project]
|
+--/models
| |
| +[heres a bunch of .dart files, each representing a data model, i.e. classes]
|
+--/providers
| |
| + [State management. I choose Riverpod, so I use providers.]
| + [Therefore, here you find logic and state management .dart files]
|
+--/widgets
| |
| + [Widgets that are REUSED across the WHOLE APPLICATION]
| + [It doesnt happen very often, so there arent many .dart files here]
| + [Note. It is not WIDGET<=>NEW FILE. It is: ""big"" widget <=> NEW FILE]
| + [Note 2. I rather create private widgets within the same file to keep things organized]
|
+--/screens
| |
| + [In here, there are as much subfolders as screens to be rendered]
| + [In my mind, a screen not necessarly translates in a Scaffold]
| |
| +--/screen1/... [list of .dart files - widgets for this screen]
| +--/screen2/...
| +--/screen_with_multiple_tabs_and_bottom_bar/
| |
| +mainScaffold.dart
| +/tab1/... [list of .dart files - widget for this tab]
| +/tab2/...
同样,这只是一个随机示例。我喜欢以某种可以轻松跟踪路由的方式“组织”我的项目,同时分离小部件、逻辑、模型和实用程序。我相信上述模式是不言自明的。如果没有,请告诉我。
当谈到状态管理时,我对这个框架有很多困惑。目前,谷歌很容易听取社区的意见,为公众带来最好的状态管理解决方案:目前市场上的解决方案之间没有明确的“赢家”。
如果您在选择状态管理包时感到“困惑”,我强烈建议您首先使用 Provider 包,它是由 Flutter 社区中一位忠诚的人努力完成的。这个包是所谓的InheritedWidget 的包装器,所以它非常 Flutterish,我完全建议检查一下。 Even Google dropped their own state management solution and adopted this one (2019),即使他们仍在寻求改进。
如果您使用其他不浮夸的解决方案,例如injection,或hooks,或GetIt(或其他...),没有人会讨厌您,但我(个人!)认为框架是为你工作,而不是反之亦然,所以为什么要逆流而上:)
我个人使用Riverpod,这是对Provider的改进,由同一个人制作。但如果您是 Flutter 新手,请先学习 Provider。
我听说BLOC 是一个强大且可用于生产的解决方案。但这是很难的事情。很容易让人不知所措,只需从基础知识(提供者)开始,然后了解更多并选择。
我希望这能回答一点。
【讨论】: