flutter - Flutter navState 上下文
问题描述
我搜索了一种通过通知导航的方法,我必须找到在小部件范围之外使用上下文的解决方案,所以我创建了全局变量和导航器状态并使用它,它工作正常。现在我在想为什么我必须通过每个路由推送小部件的上下文,为什么不在每个路由推送上使用导航器状态。
import 'package:flutter/material.dart';
/// Global variables
/// * [GlobalKey<NavigatorState>]
class GlobalVariable {
/// This global key is used in material app for navigation through firebase notifications.
/// [navState] usage can be found in [notification_notifier.dart] file.
static final GlobalKey<NavigatorState> navState = GlobalKey<NavigatorState>();
}
添加到 MaterialApp
MaterialApp(
title: 'myapp',
navigatorKey: GlobalVariable.navState,
Navigator.push(GlobalVariable.navState.currentContext, MaterialPageRoute(builder: (BuildContext context) => RoutePage(child: ContactForm())));
代替
(context) => Navigator.push(context, MaterialPageRoute(builder: (BuildContext context) => RoutePage(child: ContactForm())));
解决方案
推荐阅读
- python - Python kv文件如何从另一个类调用函数
- reactjs - 与 REACT (setState()) 斗争
- c++ - (QT) QThread 没有第二次执行
- php - empty() 和 isset() 为对象的属性返回不正确的结果 - PHP 7.3、Laravel 5.6
- jquery - 自动完成不适用于值数组
- r - 使用 r 的块模型
- bash - 意外标记“fi”附近的 Bash shell 语法错误
- python - Python:从函数外部访问函数的成员
- sql - 如何在具有相同 ID 和名称的同一表上选择两个匹配记录
- c++ - 如何优化和加速 C++ 中的矩阵乘法?