SafeArea小部件中不安全区域的抖动背景。

时间:2018-12-20 17:15:11

标签: dart flutter

当我向小部件提供SafeArea时,它将从槽口和主页按钮(iPhone X +中的水平线)获得一定的利润。如何更改不安全区域的背景? (保证金部分)?

3 个答案:

答案 0 :(得分:7)

将您的SafeArea包装到添加背景的小部件中:

Container(
  color: Colors.red,
  child: SafeArea(...),
),

答案 1 :(得分:2)

另一种方法。

import 'package:flutter/services.dart';

Scaffold(
  body: AnnotatedRegion<SystemUiOverlayStyle>(
    value: SystemUiOverlayStyle.light.copyWith(
      statusBarColor: Theme.of(context).primaryColor
    ),
    child: SafeArea(
      child: Container(...),
    ),
  ),
)

答案 2 :(得分:0)

我结合以上两个答案来实现

  1. 系统主题集(暗/亮)
  2. 不安全区域的颜色/渐变

我使用的代码是

var brightness = SchedulerBinding.instance.window.platformBrightness;
bool isDarkModeOn = brightness == Brightness.dark;

Widget build(BuildContext context) {
    return Scaffold(
      body: AnnotatedRegion<SystemUiOverlayStyle>(
        value: isDarkModeOn
            ? SystemUiOverlayStyle.dark.copyWith(
                statusBarColor: Theme.of(context).primaryColor,
              )
            : SystemUiOverlayStyle.light.copyWith(
                statusBarColor: Theme.of(context).primaryColor,
              ),
        child: Container(
          decoration: getScreenGradient(),
          child: SafeArea(
            child: Container(
              child: Center(
                child: Stack(
                  children: [
                    getBackgroundImage(),
                    getBody(),
                  ],
                ),
              ),
            ),
          ),
        ),
      ),
    );
  }