flutter_idiomatic - kit de démarrage d'un projet réussi

salut! Mon nom est Andrew. Mieux connu sous le nom de #coderotboga (c'est de l'auto-ironie, si c'est le cas). Je maîtrise Flutter en mode live-code, déjà 567 diffusions . Uncut - "de zéro à héros", en commençant par un didacticiel Dart et jusqu'à un projet "open-source" à part entière en production. De plus, je termine bientôt mon propre cours en ligne de 100 heures - le professeur apprend de ses élèves. Grâce à une pratique intensive et à une riche expérience avec ReactJS, j'ai formé un ensemble d'accords que je voudrais présenter afin de recevoir des commentaires: "Votre appel est très important pour nous, restez en ligne."





Limitations de base



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





A titre d'exemple, CRUD est implémenté dans BLoC & GraphQL. Si vous avez des doutes sur le modèle architectural à utiliser pour la gestion de l'état, étudiez le code source du projet. BLoC a été introduit par Google en 2018, mais il est très difficile de le faire simplement. Felix Angelov a pu , je suis tombé amoureux de la coudée et j'ai appris à la cuisiner.



Et enfin, cerise sur le gâteau - une navigation sans contexte avec des arguments typés:



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


Codes sources , et merci pour votre attention.




All Articles