TGViewer
Flutter. Много Flutter. Много @flutter_amiga · 2.96K subscribers
Post #396 1.91K
Hola, Amigos! На связи Павел Гершевич, Mobile Team Lead в Amiga. Мы уже поговорили про импорты, но вы подсказали, что есть еще пару лайфхаков, связанных с ними.

Механизм Part Of

Все наши файлы на Dart это небольшие библиотеки, но иногда они становятся настолько большими, что их хочется поделить. В этом случае можно применить ключевые слова part и part of.

Этот механизм часто используется библиотеками для генерации кода. Думаю, вы видели файлы my_class.g.dart, если такими пользуетесь.

Давайте рассмотрим как работать с данным механизмом на примере BLoC. У нас есть файл my_bloc.dart, который будет основным, и файлы my_event.dart и my_state.dart, которые будут его частями.

В my_bloc.dart мы пропишем:

part ‘my_event.dart’;
part ‘my_state.dart;


И уже в файлах-частях вместо импортов будет строчка:

part of ‘my_bloc.dart’;


Таким образом эти 3 файла будут распознаваться как один и тем самым импорты мы можем писать только в my_bloc.dart, и он же будет импортироваться в другие файлы.

Part of имеет смысл применять, только если это неотделимые друг от друга классы. Например, события и состояния для BLoC или обработка JSON для моделей, в остальных случаях лучше использовать export.

Выбор импорта в зависимости от условий

Допустим, вы делаете приложение и на мобильные платформы, и на веб, но некоторые импорты нужно менять в зависимости от платформы. Это бывает при использовании dart:io и dart:web Тут к нам на выход приходит использование if.

Для этого нужно будет подготовить 3 файла — один под МП, второй под веб, третий если ни один из них не подходит. И создать третий файл для экспорта:

export ‘my_none.dart’
if (dart.library.io) ‘my_mobile.dart’
if (dart.library.js_interop) ‘my_web.dart’;


Импортируя уже этот файл, мы точно получим нужный нам инстанс, который будет работать.

Делитесь в чате, пробовали ли вы использовать эти 2 механики на своих проектах? И пишите, что еще хотели бы узнать, а мы соберем информацию об этом❤️
  • 👍 11
  • 🔥 4
  • ❤ 2
More from @flutter_amiga
  1. Sep 9, 2026AI BOOST’26: выручка падает — что делают крупные digital-агентства и при чем здесь AI 22–2…
  2. Aug 18, 2026Hola, Amigos! На связи Павел Гершевич, Mobile Team Lead в Amiga. Сегодня посмотрим на чек-…
  3. Aug 13, 2026Hola, Amigos! Сегодня вышли Flutter 3.47 и Dart 3.13. Давайте вместе разберемся, что в них…
  4. Jul 31, 2026Дайджест июля Hola, Amigos! Собрали в одну подборку все полезные посты июля, которые вы мо…
  5. Jul 28, 2026Hola, Amigos! Сегодня посмотрим на один пакет, который может быть полезен в разработке - p…
  6. Jul 24, 2026Hola, Amigos! Сегодня мы вводим новую рубрику - обзоры правил для статического анализатора…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →