Flutter Riverpod跳转页面报错:Bad State No ProviderScope found
解决Riverpod跳转页面时"Bad state: No ProviderScope found"错误
问题原因
你当前把ProviderScope仅包裹在MaterialApp的home子组件上,但MaterialApp内部会创建独立的导航上下文。通过Navigator.of(context)跳转页面时,新页面的上下文属于MaterialApp的导航树,不在ProviderScope的覆盖范围内,因此找不到Riverpod的状态作用域。
修复方案
将ProviderScope提升到MaterialApp外层,确保整个应用(包括所有导航页面)都处于Riverpod的状态作用域中。
修改后的代码
@override Widget build(BuildContext context) { return ProviderScope( // 将ProviderScope移到MaterialApp外层 child: MaterialApp( title: 'Flutter', theme: ThemeData( brightness: Brightness.light, /* light theme settings */ ), darkTheme: ThemeData( brightness: Brightness.dark, /* dark theme settings */ ), themeMode: ThemeMode.dark, home: const SafeArea(child: AuthHandlerScreen()), ), ); }
原代码问题说明
原代码里ProviderScope只覆盖了home的内容,MaterialApp本身不在作用域内,导致它创建的Navigator上下文无法访问Riverpod provider,跳转后的自然也找不到状态作用域。
内容的提问来源于stack exchange,提问作者Shadell
相关产品推荐
相关产品推荐

