flutter - 如何在 flutter 中在整个应用程序顶部显示叠加层?

标签 flutter overlay

我想在整个应用程序上显示覆盖,因此我尝试在 MaterialApp(根小部件)的上下文中插入覆盖条目,但问题是我在调用以下方法时得到空值:

Overlay.of(context);
GetMaterialApp.router(
          debugShowCheckedModeBanner: false,
          theme: AppTheme.lightTheme,
          scaffoldMessengerKey: Keys.scaffold,
          scrollBehavior: MyCustomScrollBehavior(),
          routeInformationParser: WebRoutes.goRouter.routeInformationParser,
          routerDelegate: WebRoutes.goRouter.routerDelegate,
          routeInformationProvider: WebRoutes.goRouter.routeInformationProvider,
          builder: (context, child) {

          WidgetsBinding.instance.addPostFrameCallback((_){
              addOverlay(context);
            });
           
            return child;

}

void addOverlay(BuildContext context) {
  print(Overlay.of(context));

  return Overlay.of(context)?.insert(OverlayEntry(
    builder: (context) {
      return SomeWidget();
    },
  ));
}

有什么方法可以使用此根小部件的上下文来获取叠加层的状态,因为我想全局显示叠加层。

非常感谢,如果有人帮助我,我真的很感激。

最佳答案

MaterialApp(
        navigatorKey: getIt.get<NavigatorService>().navigatorKey,
        theme: AppTheme.defaultTheme,
        initialRoute: AppRoutes.splashScreen,
        builder: (context, child) {
          return Scaffold(
            body: Stack(
              children: [
                child!,
                Positioned(
                  top: 15,
                  child: Container(
                    color: Colors.red,
                    height: 50,
                    width: MediaQuery.of(context).size.width,
                    child: const Center(child: Text("HI I AM AN OVERLAY")),
                  ),
                ),
              ],
            ),
          );
        },
        onGenerateRoute: AppRoutes.onGenerateRoute,
      ),

enter image description here

关于flutter - 如何在 flutter 中在整个应用程序顶部显示叠加层?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75257867/

相关文章:

flutter - 基于用户输入的动态 TextField 宽度

flutter 网络 : File Picker throws 'Invalid argument(s) (path): Must not be null' error

CSS - 弹出层(带有覆盖和关闭按钮)

jquery - 如何在加载数据时创建页面叠加 - asp.net/jquery/blockui

c# - 如何在 WPF 中将图像叠加在图像上?

iOS - 当我将方法移动到另一个类时,MKMapView 覆盖不会呈现

java - 将鼠标悬停在缩略图上时显示完整图像作为弹出/叠加

android - 使用 flutter 嵌入式部件测试 Android 和 iOS

android - Flutter插件开发未解决引用: io

forms - 什么是 copyWith 以及如何在 Flutter 中使用它以及它的用例是什么?