相关疑难解决方法(0)

查找提供程序上下文的颤振问题

我对 Flutter Provider 模式有疑问。用户重定向到新屏幕后,找不到提供程序。

按照我之前的问题(在此小部件上方找不到正确的提供者),我编写了以下代码:

class NewRoute extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final title = 'Tap to select';
    return MaterialApp(
        title: title,
        home: Scaffold(
          appBar: AppBar(
            title: Text(title),
          ),
          body: NewRouteBody()
        ));
  }
}

class NewRouteBody extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    var user = Provider.of<UserRepository>(context);
    return ListView(...)
Run Code Online (Sandbox Code Playgroud)

我做了同样的事情,但我再次收到错误消息,指出它无法在此小部件 ( NewRouteBody)上方找到正确的提供程序。

试图以某种方式修复它,在谷歌上搜索了几个小时的答案但没有成功......

任何帮助表示赞赏。

编辑

这是UserRepository其中包含模式:

class UserRepository with ChangeNotifier {
  User user;
  Status _status = Status.Uninitialized;

  Status get status => …
Run Code Online (Sandbox Code Playgroud)

dart flutter flutter-provider

10
推荐指数
1
解决办法
2万
查看次数

Flutter 在 BlocConsumer Widget 上方找不到正确的 Provider

我正在Flutter Bloc一个项目中使用。

这是结构:

      MultiBlocProvider(
          providers: [
            BlocProvider<BlocA>(
              create: (context) {
                return BlocA()
                  ..add(FetchEvent());
              },
            ),
            BlocProvider<BlocC>(
              create: (context) {
                return BlocC()..add(FetchEvent());
              },
            ),
          ],
          child: IndexedStack(
            index: _pageNum,
            children: [
              ChildA(),
              ChildB(),
            ],
          ),
        )
Run Code Online (Sandbox Code Playgroud)

里面ChildB我有 aNavigator.push()到 a ChildCBlocC正在使用 ( BlocConsumer),但我收到错误,

Flutter could not find the correct Provider above BlocConsumer<BlocC> Widget
Run Code Online (Sandbox Code Playgroud)

编辑 有一个按钮可以在按下时ChildB导航到。ChildC喜欢,

TextButton( // this code exists inside a scaffold widget
   child: Text("Page C"),
   onPressed: …
Run Code Online (Sandbox Code Playgroud)

flutter bloc flutter-bloc

3
推荐指数
1
解决办法
2068
查看次数

无法在新页面路由小部件中访问提供者

我无法访问推送到当前导航器的小部件中的提供程序:

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


void main() => runApp(MyApp());

class MyModel with ChangeNotifier {
  String a = 'Test1';
  String b = 'Test2';
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {    

    return MaterialApp(
        title: 'Flutter Demo',
        home: ChangeNotifierProvider(
            create: (context) => MyModel(),
            child: MyHomePage()
        )
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key}) : super(key: key);

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {

  @override
  Widget build(BuildContext context) {    

    return Consumer<MyModel>( …
Run Code Online (Sandbox Code Playgroud)

state dart flutter flutter-navigation

1
推荐指数
1
解决办法
2333
查看次数

使用 Provider 从第二个屏幕更新 Scaffold

我想要一个“设置”屏幕,我可以在其中选择要返回到第一个屏幕的颜色。

当“设置”屏幕关闭时,我无法更新第一个屏幕。

我使用提供程序作为更改通知程序。但我看不到如何触发第一个屏幕的更新。第三个按钮创建一个更新屏幕的事件,但这可以自动完成吗?

我错过了什么...?

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

void main() => runApp(MyApp());
Color bgColor = Colors.yellow[100];

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(home: MyHomeScreen());
  }
}

class MyHomeScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MultiProvider(
      providers: [
        ChangeNotifierProvider(create: (context) => ColorModel()),
      ],
      child: Consumer<ColorModel>(builder: (context, colorModel, child) {
        return Scaffold(
          appBar: AppBar(title: Text('Thanks for your help :)')),
          body: Container(
            constraints: BoxConstraints.expand(),
            color: bgColor,
            child: Column(
              mainAxisAlignment: MainAxisAlignment.spaceEvenly,
              children: [
                Text('Change background color …
Run Code Online (Sandbox Code Playgroud)

android flutter flutter-provider

0
推荐指数
1
解决办法
2823
查看次数