flutter_boost 3.0版本仍旧无法 通过 GlobalKey 去获取 context

vohkndzv  于 2022-10-25  发布在  Flutter
关注(0)|答案(7)|浏览(407)

之前有个issue 1367

版本:v1.22.4-hotfixes
child: MaterialApp(
navigatorKey: navigatorKey,
theme: provider.getTheme(),
darkTheme: provider.getTheme(isDarkMode: true),
themeMode: provider.getThemeMode(),
home: AccountUtils.isLogin() ? HomePage() : LoginPage(),
onGenerateRoute: Application.router.generator,
builder: FlutterBoost.init(postPush: _onRoutePushed),
),
无法通过navigatorKey.currentState.overlay.context 获取context,注解掉FlutterBoost.init()正常

本以为高版本已经解决,但是发现3.0版本还是无法通过navigatorKey.currentState.overlay.context 获取context

b1uwtaje

b1uwtaje1#

你这边想拿这个context主要是做什么,我们可以看看能不能有代替方案

nwlls2ji

nwlls2ji2#

某些逻辑中不传context,不使用name路由,怎么打开一个flutter页面?

dnph8jn4

dnph8jn43#

某些逻辑中不传context,不使用name路由,怎么打开一个flutter页面?

q0qdq0h2

q0qdq0h25#

已经使用遍历树方式拿到了context,用于弹dialog

whlutmcx

whlutmcx6#

已经使用遍历树方式拿到了context,用于弹dialog

求代码

uz75evzq

uz75evzq7#

大兄弟,之前有事忙了给忘记了,这是我现在在用的,包在APP外就可以了 import 'package:flutter/material.dart'; import 'package:tdf_base_utils/tdf_base_utils.dart'; class ContextUtils { ContextUtils._(); static BuildContext? getContext() { return _overlayState?.context; } } /// 全局Finderkey final GlobalKey<_AppContainerFinderState> _keyFinder = GlobalKey(debugLabel: 'overlay_support'); /// 全局overlayState OverlayState? get _overlayState { final context = _keyFinder.currentContext; if (context == null) return null; NavigatorState? navigator; void visitor(Element element) { if (navigator != null) { return; } /// 如果是一个页面路由 if (element.widget is Navigator) { /// navigator返回他的state navigator = (element as StatefulElement).state as NavigatorState?; } else { /// 否则递归 element.visitChildElements(visitor); } } /// 就是总能找到最后一页的overlay context.visitChildElements(visitor); return navigator?.overlay; } /// 静态app容器 class AppContainer extends StatelessWidget { final Widget child; AppContainer({required this.child}); @OverRide Widget build(BuildContext context) { return AppContainerFinder(child: child, key: _keyFinder); } } /// 动态app容器内容 class AppContainerFinder extends StatefulWidget { final Widget child; AppContainerFinder({required Key key, required this.child}) : super(key: key); @OverRide _AppContainerFinderState createState() => _AppContainerFinderState(); } class _AppContainerFinderState extends State<AppContainerFinder> { @OverRide Widget build(BuildContext context) { return widget.child; } }…

------------------ 原始邮件 ------------------ 发件人:***@***.***>; 发送时间: 2022年8月9日(星期二) 下午5:22 收件人:***@***.***>; 抄送:***@***.***>;***@***.***>; 主题: Re: [alibaba/flutter_boost] 3.0版本仍旧无法 通过 GlobalKey 去获取 context (Issue #1459) 已经使用遍历树方式拿到了context,用于弹dialog 求代码 — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID:***@***.***>

相关问题