如何在Flutter中添加body和app bar相同渐变

lqfhib0f  于 2023-03-31  发布在  Flutter
关注(0)|答案(2)|浏览(205)

我试着给appbar和body添加同样的LinearGradient。但是有两个渐变色。
我想渐变没有任何不同。

return Container(
  decoration: BoxDecoration(
    gradient: CustomGradient.appBarGradient //body gradient
  ),
  child:Scaffold(
  resizeToAvoidBottomPadding: false,
  backgroundColor: Palette.transparent,
  appBar: AppBar(
    elevation: 0.0,
    centerTitle: true,
    title: //text,
    flexibleSpace: Container( //appBar gradient
           decoration: BoxDecoration(
             gradient: CustomGradient.appBarGradient
      ),
    ),
  ),
  body:
nxagd54h

nxagd54h1#

只需将appBar设置为透明即可。
示例:

return Container(
  decoration: BoxDecoration(
    gradient: CustomGradient.appBarGradient,
  ),
  child: Scaffold(
    resizeToAvoidBottomPadding: false,
    backgroundColor: Colors.transparent,
    appBar: AppBar(
      elevation: 0.0,
      centerTitle: true,
      title: Text("test"),
      backgroundColor: Colors.transparent,
    ),
    body: SingleChildScrollView(
      child: Column(
        children: <Widget>[
          for (var i = 0; i < 10; i++) Text("Hello world", textScaleFactor: 4),
        ],
      ),
    ),
  ),
);

如果您希望您的正文内容扩展到appBar后面,请在Scaffold中使用extendBodyBehindAppBar: true(并在appBar中保留backgroundColor: Colors.transparent, elevation: 0)。
你有其他的解决方案,比如将你的appBar与你的内容堆叠在正文中,或者为你的appBar和你的body创建两个不同的渐变,第一个的结束颜色与第二个的开始颜色相同。

fjaof16o

fjaof16o2#

我的应用程序也有这个问题。因为我的appbar和body容器具有相同的线性渐变颜色,首先我单独添加渐变颜色,但它没有正确显示,然后我删除appbar颜色并使其透明。从这种方式我解决了我的问题。

return SafeArea(
      child: Scaffold(
        extendBodyBehindAppBar:
            true, // Set this to true to extend the body behind the app bar
        appBar: AppBar(
          backgroundColor: Colors.transparent,
          elevation: 0,
          flexibleSpace: Container(
            decoration: const BoxDecoration(),
          ),
          leading: Image.asset('assets/logo.png'),
        ),
        body: Container(
          decoration: const BoxDecoration(
            gradient: LinearGradient(
              begin: Alignment.topLeft,
              end: Alignment.bottomRight,
              colors: [
                Color(0xFFFAFEFF),
                Color(0xFFABFFDC),
              ],
            ),
          ),

相关问题