مرحبا! أسمي أندرو. يُعرف باسم #coderotboga (هذه سخرية ذاتية ، إذا كانت كذلك). أنا أتقن Flutter في وضع الكود المباشر ، بالفعل 567 بثًا . بدون تخفيضات - "من الصفر إلى البطل" ، بدءًا من برنامج Dart التعليمي وحتى مشروع "مفتوح المصدر" كامل في الإنتاج. أيضًا ، سأنتهي قريبًا من الدورة التدريبية التي تبلغ مدتها 100 ساعة عبر الإنترنت - حيث يتعلم المعلم من طلابه. بفضل الممارسة المكثفة والخبرة الغنية السابقة مع ReactJS ، قمت بتشكيل مجموعة من الاتفاقيات التي أود تقديمها لتلقي التعليقات: "مكالمتك مهمة جدًا بالنسبة لنا ، ابق على الخط."
القيود الأساسية
لا تسحب إلى المشروع كل ما يلمع مثل العقعق. على سبيل المثال: dartz - حول Haskell، kt_dart - حول Kotlin. تعلم لغة Zen of the 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. إذا كنت تشك في النمط المعماري الذي يجب استخدامه لإدارة الدولة ، فقم بدراسة الكود المصدري للمشروع. تم تقديم BLoC بواسطة Google مرة أخرى في عام 2018 ، ولكن من الصعب جدًا القيام بذلك ببساطة. استطاع فيليكس أنجيلوف ، لقد وقعت في حب الذراع وتعلمت كيفية طهيها.
وأخيرًا ، تتويج الكعكة - التنقل بدون سياق باستخدام الوسائط المكتوبة:
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());
أكواد المصدر ، وشكرا لاهتمامكم.
