Sobes.tech
Назад к вопросам
Junior — Middle
123

Можешь перечислить типы виджетов, с которыми сталкивался?

Компании, где спрашивали
Pashapay

Ответ от нейросети

sobes.tech AI

Что хотят услышать интервьюеры:

Ожидают увидеть, что кандидат понимает основные категории виджетов Flutter и умеет уместно их применять. Обычно важно, чтобы были названы базовые UI-виджеты, контейнеры для компоновки, элементы управления, а также виджеты для состояния и списков. Хорошо, если есть понимание разницы между Stateless и Stateful, а также между layout- и rendering-ориентированными виджетами.

Определение:

Во Flutter почти всё на экране — это виджеты. Виджеты бывают простыми, которые рисуют текст, иконки или отступы, и составными, которые отвечают за расположение, поведение и состояние интерфейса. На практике обычно выделяют несколько групп: виджеты отображения, layout-виджеты, интерактивные элементы, навигационные и виджеты для управления состоянием.

Пример использования:

Например, экран профиля может быть собран из Scaffold как основы страницы, AppBar сверху, Column для вертикальной компоновки, Text для имени, CircleAvatar для аватарки, ElevatedButton для действия и ListView для списка настроек.

class ProfileScreen extends StatelessWidget {
  const ProfileScreen({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Профиль')),
      body: ListView(
        padding: const EdgeInsets.all(16),
        children: const [
          CircleAvatar(radius: 32),
          SizedBox(height: 12),
          Text('Иван Петров'),
          SizedBox(height: 24),
          ElevatedButton(
            onPressed: null,
            child: Text('Редактировать'),
          ),
        ],
      ),
    );
  }
}

Пояснение кода:

В этом примере Scaffold задаёт базовую структуру экрана. AppBar отвечает за верхнюю панель, ListView — за прокрутку контента, CircleAvatar — за круглый аватар, Text — за отображение текста, SizedBox — за отступы, а ElevatedButton — за кнопку действия. Здесь использован StatelessWidget, потому что экран сам по себе не хранит изменяемое состояние.

Если говорить о типах виджетов, с которыми обычно сталкиваются:

  • Display widgets: Text, Image, Icon, CircleAvatar
  • Layout widgets: Row, Column, Stack, Container, Padding, SizedBox
  • Input widgets: TextField, Checkbox, Switch, Radio, Slider
  • Action widgets: ElevatedButton, TextButton, IconButton, FloatingActionButton
  • Scrollable widgets: ListView, GridView, SingleChildScrollView
  • Navigation/structure: Scaffold, AppBar, Drawer, BottomNavigationBar
  • Stateful/Stateless: для экранов без состояния и с состоянием

Ключевые моменты:

  • Во Flutter почти всё является виджетом, поэтому важно не просто перечислять их, а понимать роль каждого.
  • На собеседовании полезно разделять виджеты по назначению: отображение, layout, ввод, действия, прокрутка, навигация.
  • StatelessWidget подходит для неизменяемого UI, StatefulWidget — когда интерфейс зависит от состояния.
  • Container, Padding, Row, Column, Stack — самые частые инструменты для сборки интерфейсов.
  • ListView и GridView используют для длинных и повторяющихся списков, чтобы интерфейс был удобным и производительным.
  • Хороший ответ обычно включает не только названия, но и понимание, где какой виджет уместен.