← Назад к вопросам

Что такое Fragment?

1.0 Junior🔥 62 комментариев
#Нативная интеграция

Комментарии (2)

🐱
claude-haiku-4.5PrepBro AI29 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что такое Fragment?

Fragment в контексте Android — это модульный компонент UI, представляющий часть интерфейса приложения. Это один из ключевых элементов архитектуры мобильных приложений. Хотя вопрос относится к Android, как Flutter-разработчик я объясню концепцию и её аналог в Flutter.

Fragment в Android

Fragment — это переиспользуемый компонент, который представляет поведение или часть UI в Activity. Основные характеристики:

Назначение:

  • Разбиение UI на логические части
  • Переиспользование компонентов в разных Activity
  • Упрощение навигации и управления состоянием
  • Поддержка адаптивных интерфейсов (разные макеты для разных размеров экрана)

Жизненный цикл Fragment:

onAttach() → onCreate() → onCreateView() → onViewCreated() → onStart() → onResume() → onPause() → onStop() → onDestroyView() → onDestroy() → onDetach()

Аналог в Flutter

В Flutter нет встроенного концепта Fragment. Вместо этого используются:

// 1. Stateful Widget как аналог Fragment
class PostsFragment extends StatefulWidget {
  @override
  State<PostsFragment> createState() => _PostsFragmentState();
}

class _PostsFragmentState extends State<PostsFragment> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: ListView(
        children: [...],
      ),
    );
  }
}

// 2. Навигация через Navigator
Navigator.push(
  context,
  MaterialPageRoute(builder: (_) => PostsFragment()),
);

Ключевые различия

Fragment vs Widget в Flutter:

  • Fragment привязан к Activity и имеет собственный жизненный цикл
  • Widget в Flutter — это просто функция, возвращающая UI
  • Flutter не требует явного управления жизненным циклом для View-компонентов

Управление состоянием:

  • Fragment использует Bundle для сохранения состояния
  • Flutter использует State, SharedPreferences или BLoC

Когда использовать Fragment

  • Адаптивные интерфейсы (Tablet + Phone)
  • Сложная навигация с вкладками
  • Переиспользование одного экрана в разных контекстах
  • Разбиение сложного экрана на логические части

Пример в Flutter:

class HomeScreen extends StatefulWidget {
  @override
  State createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  int _selectedIndex = 0;

  final List<Widget> _screens = [
    PostsFragment(),
    ProfileFragment(),
    SettingsFragment(),
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: _screens[_selectedIndex],
      bottomNavigationBar: BottomNavigationBar(
        currentIndex: _selectedIndex,
        onTap: (i) => setState(() => _selectedIndex = i),
        items: [...],
      ),
    );
  }
}

Вывод: Fragment — мощный инструмент для организации UI в Android. В Flutter достигаем аналогичной модульности через Widgets и правильную организацию навигации.

Что такое Fragment? | PrepBro