美文网首页flutter
flutter 全局获取 context

flutter 全局获取 context

作者: space77 | 来源:发表于2020-01-13 15:33 被阅读0次

一、新建 nav_key.dart 文件

// nav_key.dart
import 'package:flutter/widgets.dart';

class NavKey{
  static final navKey = new GlobalKey<NavigatorState>();
}

二、在注入 NavKey 到 MaterialApp

// main.dart
class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      // ...
      navigatorKey: NavKey.navKey,
      // ...
    );
  }
}

三、 全局无 context 操作

全局跳转页面

NavKey.navKey.currentState.pushNamed('routeName');

全局获取 provider

import 'package:flutter/material.dart';
import 'package:provider/provider.dart';

class Store {
  // 无 context 获取值
  static T getValue<T> ({bool listen = false}) {
    return Provider.of(NavKey.navKey.currentContext, listen: listen);
  }



  /*---------------------其它获取 provider 方法--------------------------*/

  //  通过Provider.value<T>(context)获取状态数据
  static T value<T>(BuildContext context, {bool listen = false}) {
    return Provider.of<T>(context, listen: listen);
  }

  //  通过Consumer获取状态数据
  static Consumer connect<T>({Function(BuildContext, T, Widget) builder, Widget child}) {
    return Consumer<T>(builder: builder, child: child);
  }
}

相关文章

网友评论

    本文标题:flutter 全局获取 context

    本文链接:https://www.haomeiwen.com/subject/eftnactx.html