flutter_boost icon indicating copy to clipboard operation
flutter_boost copied to clipboard

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

Open xujiangithub opened this issue 3 years ago • 6 comments

之前有个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

xujiangithub avatar Nov 03 '21 03:11 xujiangithub

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

ColdPaleLight avatar Nov 13 '21 12:11 ColdPaleLight

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

xtuck avatar Nov 22 '21 10:11 xtuck

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

xujiangithub avatar Nov 23 '21 03:11 xujiangithub

https://github.com/alibaba/flutter_boost/blob/master/docs/routeAPI.md

xujinping avatar Nov 24 '21 03:11 xujinping

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

xujiangithub avatar Apr 01 '22 10:04 xujiangithub

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

求代码

lyx0224 avatar Aug 09 '22 09:08 lyx0224

大兄弟,之前有事忙了给忘记了,这是我现在在用的,包在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: @.***>

xujiangithub avatar Oct 11 '22 09:10 xujiangithub