首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用不包含Bloc<dynamic类型的Bloc的上下文调用的ERROR Bloc<dynamic()

使用不包含Bloc<dynamic类型的Bloc的上下文调用的ERROR Bloc<dynamic()
EN

Stack Overflow用户
提问于 2020-06-18 04:55:27
回答 1查看 1.2K关注 0票数 0

这是我的主要课程main.dart

代码语言:javascript
复制
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:provider/provider.dart';
import 'package:bwa_flutix/services/services.dart';
import 'bloc/bloc.dart';
import 'ui/pages/pages.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return StreamProvider.value(
        value: AuthServices.userStream,
        child: MultiBlocProvider(
            providers: [BlocProvider(create: (_) => PageBloc())],
            child: MaterialApp(
                debugShowCheckedModeBanner: false, home: Wrapper())));
  }
}
代码语言:javascript
复制
Error ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY╞═══════════════════════════════════════════════════════════
The following assertion was thrown building Wrapper(dependencies:
[_InheritedProviderScope<FirebaseUser>]):
BlocProvider.of() called with a context that does not contain a Bloc of type Bloc<dynamic, dynamic>.
No ancestor could be found starting from the context that was passed to
BlocProvider.of<Bloc<dynamic, dynamic>>().

This can happen if the context you used comes from a widget above the BlocProvider.
I/flutter (12415):
The context used was: BlocBuilder<Bloc<dynamic, dynamic>, dynamic>(dirty, state:
_BlocBuilderBaseState<Bloc<dynamic, dynamic>, dynamic>#840bd(lifecycle state: created))

相关的导致错误的小部件是:包装器。

wrapper.dart

代码语言:javascript
复制
part of 'pages.dart';

class Wrapper extends StatelessWidget {

  @override

Widget build(BuildContext context) {

FirebaseUser firebaseUser = Provider.of<FirebaseUser>(context);
if (firebaseUser == null) {
  if (!(prevPageEvent is GoToSplashPage)) {
    prevPageEvent = GoToSplashPage();
    context.bloc<PageBloc>().add(prevPageEvent);
  }
} else {
  if (!(prevPageEvent is GoToMainPage)) {
    prevPageEvent = GoToMainPage();
    context.bloc<PageBloc>().add(prevPageEvent);
  }
}
return BlocBuilder(
    builder: (_, pageState) => (pageState is OnSplashPage)
        ? SplashPage()
        : (pageState is OnLoginPage) ? SignInPage() : MainPage());}}
EN

回答 1

Stack Overflow用户

发布于 2020-06-18 05:41:41

你会试着测试下面的代码吗?

代码语言:javascript
复制
class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: StreamProvider.value(
        value: AuthServices.userStream,
        child: MultiBlocProvider(
          providers: [BlocProvider(create: (_) => PageBloc())],
          child: Wrapper(),
        ),
      ),
    );
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62442631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档