Вот как это выглядит:

И вот мой код:
Код: Выделить всё
class MyApp extends StatelessWidget {
const MyApp({super.key});
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Test',
localizationsDelegates: AppLocalizations.localizationsDelegates,
supportedLocales: AppLocalizations.supportedLocales,
theme: lightTheme,
darkTheme: darkTheme,
themeMode: ThemeMode.light,
debugShowCheckedModeBanner: false,
home: Scaffold(
backgroundColor: Colors.white,
appBar: AppBar(
title: const Text('Test'),
),
body: const Center(
child: Text('Test'),
),
),
);
}
}
Мне бы хотелось, чтобы Flutter был достаточно умным, чтобы выходить за пределы безопасной области за пределы фона, но при этом сохранять весь контент в том виде, в каком он есть. Также существует вариант с нижними панелями навигации (панели вкладок в iOS), они должны расширять свой фон за пределы безопасной области, но сохранять все содержимое выше.
Как ни странно, верхняя часть приложения в портретной ориентации правильно выходит за пределы безопасной области камеры, но не нижняя или горизонтальная влево и вправо…
Я видел такие решения, как изменение цвета панели с помощью чего-то вроде SystemChrome.setSystemUIOverlayStyle, но я не думаю, что это хорошее решение (скорее хак, если честно), потому что этот цвет должен меняться в зависимости от содержимого экрана, а установка там статического цвета приводит к гораздо большему количеству работы по его обновлению. Плюс представьте, если бы я захотел сделать градиент в качестве цвета фона, это совсем не помогло бы. Поэтому я действительно ищу окончательное решение на основе макета.
Как мне обновить этот код, чтобы получить правильный вид?
Подробнее здесь: https://stackoverflow.com/questions/785 ... -safe-area
Мобильная версия