...

πŸ”₯ bloc_lint

Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π² Telegram

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ Π·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Π°ΠΌΠΈ ΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°ΠΌΠΈ для bloc ΠΈ flutter_bloc.

Π’ этом постС Ρ€Π΅Ρ‡ΡŒ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ ΠΎ bloc_lint. Π­Ρ‚ΠΎ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΏΡ€Π°Π²ΠΈΠ» Π»ΠΈΠ½Ρ‚Π΅Ρ€Π° ΠΎΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π±Π»ΠΎΠΊΠ°.

Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ написано Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. Π‘ΠΊΠ°ΠΆΡƒ лишь, Ρ‡Ρ‚ΠΎ для этого потрСбуСтся bloc_tools, ΠΌΡ‹ Π΅Π³ΠΎ ΡƒΠΆΠ΅ Ρ€Π°Π·Π±ΠΈΡ€Π°Π»ΠΈ.

ΠŸΡ€Π°Π²ΠΈΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ (Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π½Ρ‹Π΅ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Ρ‹ плюсиком):

β€” avoid_build_context_extensions

Π˜Π·Π±Π΅Π³Π°Ρ‚ΡŒ использования BuildContext для обращСния ΠΊΠ°ΠΊ ΠΊ самому Π±Π»ΠΎΠΊΡƒ, Ρ‚Π°ΠΊ ΠΈ ΠΊ Π΅Π³ΠΎ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ. ВмСсто ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² read, watch ΠΈ select контСкста Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ BlocProvider.of ΠΈ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ ΠΏΠ°ΠΊΠ΅Ρ‚Π° flutter_bloc.

Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

β€” avoid_flutter_imports βž•

Π˜Π·Π±Π΅Π³Π°Ρ‚ΡŒ использованиС зависимостСй Π€Π»Π°Ρ‚Ρ‚Π΅Ρ€Π° Π² Π±Π»ΠΎΠΊΠ°Ρ… ΠΈ ΠΊΡƒΠ±ΠΈΡ‚Π°Ρ…. ПолСзно для сохранСния Π² бизнСс-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ… Ρ‚ΠΎΠ»ΡŒΠΊΠΎ бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ - Π±Π΅Π· зависимостСй Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈ подробности Ρ‚ΡƒΡ‚.

β€” avoid_public_bloc_methods βž•

Π˜Π·Π±Π΅Ρ€Π°Ρ‚ΡŒ использования ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² Π±Π»ΠΎΠΊΠ°Ρ…. Волько Π±Π»ΠΎΠΊΠ°Ρ…, ΠΊ ΠΊΡƒΠ±ΠΈΡ‚Π°ΠΌ Π½Π΅ относится. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π±Π»ΠΎΠΊΠΎΠ² ΠΌΡ‹ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ событиями ΠΈ состояниями, Ρ‚ΠΎΡ€Ρ‡Π°Ρ‰ΠΈΠ΅ Π½Π°Ρ€ΡƒΠΆΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹.

ΠžΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ ссылкС.

β€” avoid_public_fields βž•

Π˜Π·Π±Π΅Π³Π°Ρ‚ΡŒ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ Π² Π±Π»ΠΎΠΊΠ°Ρ… ΠΈ ΠΊΡƒΠ±ΠΈΡ‚Π°Ρ…. Аналогично ΠΏΡ€Π°Π²ΠΈΠ»Ρƒ Π²Ρ‹ΡˆΠ΅ - Π² ΠΈΠ΄Π΅Π°Π»Π΅ ΠΌΡ‹ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ состояниСм, ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

ДокумСнтация с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ Ρ‚ΡƒΡ‚.

β€” prefer_bloc

Π˜Π·Π±Π΅Π³Π°Ρ‚ΡŒ использования ΠΊΡƒΠ±ΠΈΡ‚ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±Π»ΠΎΠΊΠΈ. Моя ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚ΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ ΠΊΡƒΠ±ΠΈΡ‚ΠΎΠ² Π½Π΅ стоит, ΠΎΠ½ΠΈ ΠΏΠΎΡ€ΠΎΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹. Однако Ссли Π²Ρ‹ сторонник использования Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±Π»ΠΎΠΊΠΎΠ², Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π· сдСлано для большСго контроля Ρ‚Π°ΠΊΠΈΡ… ситуаций.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΏΡ€ΠΎ само ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΈ Π±Π΅Π½Π΅Ρ„ΠΈΡ‚Ρ‹ Π±Π»ΠΎΠΊΠ° написано Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

β€” prefer_build_context_extensions

Π˜Π·Π±Π΅Π³Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±Π»ΠΎΠΊΠΎΠΌ всСми способами, ΠΊΡ€ΠΎΠΌΠ΅ ΠΊΠ°ΠΊ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΊ Π½Π΅ΠΌΡƒ Ρ‡Π΅Ρ€Π΅Π· Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ BuildContext. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ context.read, context.watch, ΠΈ context.select. BlocProvider.of, RepositoryProvider.of, BlocBuilder ΠΈΠ»ΠΈ BlocSelector нСльзя. Никогда Π½Π΅ Π²ΠΈΠ΄Π΅Π» ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Π³Π΄Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с Π±Π»ΠΎΠΊΠΎΠΌ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Ссли Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ.

Π‘ΠΎΠ»ΡŒΡˆΠ΅ Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ ΠΈ объяснСний Ρ‚ΡƒΡ‚.

β€” prefer_cubit

Π˜Π·Π±Π΅Π³Π°Ρ‚ΡŒ использования Π±Π»ΠΎΠΊΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΡƒΠ±ΠΈΡ‚Ρ‹. Π’ΠΈΠ΄Π΅Π» нСсколько ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ построСны Π½Π° ΠΊΡƒΠ±ΠΈΡ‚Π°Ρ…, ΠΈ Π±Π»ΠΎΠΊΠΎΠ² Ρ‚Π°ΠΌ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅Ρ‚. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ мСсто Π±Ρ‹Ρ‚ΡŒ, ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ для Π½Π΅Π³ΠΎ имССтся.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΏΡ€ΠΎ само ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΈ Π±Π΅Π½Π΅Ρ„ΠΈΡ‚Ρ‹ ΠΊΡƒΠ±ΠΈΡ‚Π° написано Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

β€” prefer_file_naming_conventions βž•

Π Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π±Π»ΠΎΠΊΠΈ ΠΈ ΠΊΡƒΠ±ΠΈΡ‚Ρ‹ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ… с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Π½Π΅ΠΉΠΌΠΈΠ½Π³ΠΎΠΌ. НСльзя Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ CounterBloc Π² Ρ„Π°ΠΉΠ»Π΅ main.dart, ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² counter_bloc.dart.

Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π΅ Ρ‚ΡƒΡ‚.

β€” prefer_void_public_cubit_methods βž•

Π˜Π·Π±Π΅Π³Π°Ρ‚ΡŒ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… Π½Π΅ void-ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² ΠΊΡƒΠ±ΠΈΡ‚Π°Ρ…. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈΠ· ΠΊΡƒΠ±ΠΈΡ‚Π° ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ‡Π΅Ρ€Π΅Π· состояниС, Π»ΡŽΠ±Ρ‹Π΅ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»ΡΡ‚ΡŒ ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ дСйствия, Π° Π½Π΅ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΎΠ±Ρ…ΠΎΠ΄ стСйта.

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π΅ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π΅ΡΡ‚ΡŒ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

β–Ά bloc_lint Π½Π° pub.dev