如何使Flutter应用程序的导航抽屉透明?

Leb*_*osi 4 dart android-studio flutter

我已经构建了一个具有透明导航抽屉的本地Android应用程序。我被要求使用Flutter构建相同的应用程序,而现在我想要实现一个透明的导航抽屉。因为一直为此而努力,如何使Flutter应用程序的导航抽屉透明?我已经尝试过

drawer: Drawer(
          child: Container(
            color: Colors.transparent,)),
Run Code Online (Sandbox Code Playgroud)

导航抽屉仅保持白色。我一直在寻找解决方案,但找不到。任何帮助,将不胜感激。我已将本机应用程序的图像与透明抽屉相连,将Flutter版本的图像与白色导航抽屉相连。

本机

扑

小智 7

我认为有一种更好的方法,可以不弄乱应用程序中的所有画布。由于您要专门用于抽屉,因此请尝试这种方法。

Scaffold(
   drawer: Theme(
      data: Theme.of(context).copyWith(
       // Set the transparency here
       canvasColor: Colors.transparent, //or any other color you want. e.g Colors.blue.withOpacity(0.5)
      ),
      child: Drawer(
          // All other codes goes here. 
       )
    )
 );
Run Code Online (Sandbox Code Playgroud)


San*_*and 5

像你现在一样使用透明颜色,但也在抽屉小部件中使用一个堆栈,并在其中使第一个小部件成为背景过滤器,你需要导入 dart:ui。这是一个例子

//import this library to use the gaussian blur background
import 'dart:ui';


Scaffold(
    appBar: AppBar(
        title: Text('Title'),
    ),
    drawer: Theme(
        data: Theme.of(context).copyWith(canvasColor: Colors.transparent),
        child: sideNav()),
        body: Text('Hello Body'),
),


Drawer sideNav(){
    return Drawer(
        child: Stack(
            children: <Widget> [
                //first child be the blur background
                BackdropFilter(
                    filter: ImageFilter.blur(sigmaX: 5.0, sigmaY: 5.0), //this is dependent on the import statment above
                    child: Container(
                        decoration: BoxDecoration(color: Color.grey.withOpacity(0.5))
                    )
                ),
                ListView(
                    padding: EdgeInsets.zero,
                    children: <Widget>[
                        DrawerHeader(
                            child: Text('Hello Drawer Title')
                        ),
                        ListTitle(
                            leading: Icon(Icons.dashboard, color: Colors.white)
                            title: "Dashboard"
                            onTap: (){

                            }
                        )
                    ]
                )
            ]
        )
    );
}
Run Code Online (Sandbox Code Playgroud)