flutter_idiomatic-成功项目的入门套件

你好!我叫安德鲁。更好地称为#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());


源代码,并感谢您的关注。




All Articles