flutter_idiomatic - kit inicial de um projeto de sucesso

Olá! Meu nome é Andrew. Mais conhecido como #coderotboga (isso é auto-ironia, se tanto). Estou masterizando Flutter no modo live-code, já com 567 transmissões . Sem cortes - "do zero ao herói", começando com um tutorial do Dart e até um projeto de "código aberto" completo em produção. Além disso, logo estou terminando meu próprio curso online de 100 horas - o professor aprende com seus alunos. Graças à prática intensiva e à rica experiência anterior com ReactJS, fiz um conjunto de acordos que gostaria de apresentar para receber feedback: "Sua ligação é muito importante para nós, fique on-line."





Limitações básicas



, , . : dartz – Haskell, kt_dart – Kotlin. Dart. – . KISS.



-. , : ndroid – 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).





Como exemplo, CRUD é implementado em BLoC & GraphQL. Se você estiver em dúvida sobre qual padrão de arquitetura usar para gerenciamento de estado, estude o código-fonte do projeto. O BLoC foi introduzido pelo Google em 2018, mas é muito difícil de fazer de forma simples. Félix Angelov sabia , me apaixonei pelo côvado e aprendi a cozinhá-lo.



E, finalmente, a cereja do bolo - navegação sem contexto com argumentos digitados:



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());


Códigos-fonte e obrigado por sua atenção.




All Articles