你好!我叫安德鲁。更好地称为#coderotboga(这是自嘲的,如果那样的话)。我正在现场编码模式下掌握Flutter,已经播出567个广播。未删减-“从零到英雄”,从Dart教程开始,直到正式生产的完整“开源”项目。另外,我即将完成自己的100小时在线课程-老师正在向他的学生学习。得益于深入的实践和对ReactJS的丰富经验,我已经提出了一套协议,希望能收到反馈:“您的电话对我们非常重要,请保持在线状态。”
基本限制
不要将所有像喜glitter一样闪闪发光的东西拖入项目中。例如:dartz-关于Haskell,kt_dart-关于Kotlin。学习Dart语言的禅宗。它如此简单和富有表现力不是巧合-它改善了开发和维护过程。使用KISS。
放弃您以前使用状态管理体系结构的经验。从项目的源代码中,您可以猜测谁在哪里:Android开发人员-MVP,如果是ReactJS-Redux / MobX。
避免“巨石”。一些软件包承诺立即执行所有操作。请记住,设备以最后落后的速度运行。我不会指责,以免冒犯您的感情。正确的选择是“ unix-way”。包装必须做一件事,并尽可能做到最好,否则它将无法生存。
, : . 1) . , : , , .. 2) ( , ). 3) lint – , pedantic. -.
--, . , , . - . , , . ( – , ). – . JavaScript, lerna Dart – melos. , – - , .
. , . VSCode, "workbench.editor.labelFormat": "short". . : todos_screen.dart – screens/todos.dart, todos_cubits.dart – cubits/todos.dart. . , , . ( ), . TodosBody .
, «protected», .. ()? – , . , . – . .
widgets , ( ) , : screens/todos.dart – TodosScreen, cubits/todos.dart – TodosCubit.
, . , lib:
common – ,
cubits – - BLoC
import.dart –
main.dart –
models –
repositories – ( )
screens –
widgets –
Firebase Authentication, . - -, BDD (Behavior Driven Development).
例如,CRUD是在BLoC和GraphQL中实现的。如果您不确定用于状态管理的体系结构模式,请研究该项目的源代码。Google早在2018年就推出了BLoC,但要做到这一点非常困难。菲利克斯·安杰洛夫(Felix Angelov)可以,我爱上了肘子,并学会了如何烹饪。
最后,锦上添花-不带类型参数的上下文导航:
class ZoomScreen extends StatelessWidget {
Route<T> getRoute<T>({bool isInitialRoute}) {
return buildRoute<T>(
'/zoom?unit_id=${unit.id}', //
builder: (_) => this,
fullscreenDialog: true,
isInitialRoute: isInitialRoute,
);
}
ZoomScreen(this.unit);
final UnitModel unit;
...
navigator.push<void>(ZoomScreen(unit).getRoute());
源代码,并感谢您的关注。