Ответ
MaterialApp — это корневой виджет, который настраивает инфраструктуру приложения под дизайн-систему Material. Я использую его для:
- Навигации: Объявления именованных маршрутов (
routes) или генерации их на лету (onGenerateRoute). - Темы: Задания единой светлой или темной темы (
theme,darkTheme) для всех дочерних виджетов. - Локализации: Подключения поддержки нескольких языков через
localizationsDelegates. - Глобальных настроек: Указания заголовка приложения (
title), который виден в меню переключения задач, и управления отладочной баннерной меткой.
Пример минимальной структуры:
void main() => runApp(
MaterialApp(
theme: ThemeData(primarySwatch: Colors.blue),
home: MyHomePage(),
),
);
Для приложений под iOS с нативным look & feel можно использовать CupertinoApp.
Ответ 18+ 🔞
А, ну вот, MaterialApp, говоришь? Ёперный театр, это же как базовая станция для всего твоего приложения, чувак. Без него — нихуя не взлетит, как самолёт без крыльев. Представь себе главный распределительный щит, от которого по всему дому идут провода. Вот это он и есть.
Короче, этот виджет — главный затейник. Он настраивает всю подноготную под Material Design, эту гугловскую дизайн-систему. Ты его в корень ставишь, и он начинает свою магию. А магия у него какая?
- Навигация: Это он решает, куда тебя перекинет, когда ты ткнёшь на кнопку. Можно маршруты по именам прописать (
routes), а можно, если чувствуешь подвох и хочешь полный контроль, генерить их на ходу (onGenerateRoute). Удобно, ёпта. - Темы: Овердохуища важная штука! Не будешь же ты каждому кнопочке вручную цвет назначать? Вот тут задаёшь одну тему (
theme) на всё приложение, и все виджеты-детки её подхватывают. Хочешь тёмную — пожалуйста, естьdarkTheme. Красота. - Локализация: Если твоё приложение должно говорить не только по-русски матерному, а ещё на каких-нибудь языках — вот тут подключаешь делегатов (
localizationsDelegates), и они всё переводят. - Всякая глобальная хрень: Заголовок приложения (
title), который в меню переключения задач светится. Или эта противная жёлтая полоска «DEBUG» в углу — её тоже тут можно прибить, если терпения ноль ебать.
Вот смотри, как это выглядит в самом простом, голом виде. Код не трогаю, он святой.
void main() => runApp(
MaterialApp(
theme: ThemeData(primarySwatch: Colors.blue),
home: MyHomePage(),
),
);
Всё, приложение готово к запуску. Тема синяя, стартовая страница — MyHomePage(). Проще некуда.
А, да, чуть не забыл! Если ты делаешь приложение под айфоны и хочешь, чтобы оно выглядело как родное, а не как гугловский эмигрант — есть CupertinoApp. Он то же самое делает, только в стиле iOS. Выбирай, что тебе ближе по душе.