标签: flutter-provider

未处理的异常:Follows 在被释放后被使用。一旦你对 Follows 调用了 dispose(),它就不能再被使用

我是使用提供程序包进行颤振状态管理的新手。有多少不同的原因生成这些类型的异常以及如何修复它,此异常是在didChangeDependency中调用getFollowing() 方法时生成的。

跟随.dart

class Follows with ChangeNotifier{
 
  List<Follow> _following =[];
  String userid;
  String token;
 
  List<Follow> get followingUser{
    return [..._following];
  }

  void updates(String token,String userid){
    this.userid = userid;
    this.token =  token;

  }

 Future<void> getFollowing(String  id) async {

      final response = await http.get("${Domain.ADDRESS}/user/following/$id",headers: {"auth-token" : this.token});
      final data =json.decode(response.body)["following"] as List;
      List<Follow> followingData =[];
      data.forEach((user){    
        followingData.add(Follow(
          id: user["_id"],
          username: user["username"],
          fullname: user["fullname"],
          imageUrl: user["imageUrl"],
          followerCount : (user["followers"] as List).length 
        ));

      });
      _following = [...followingData];
  notifyListeners();
      
}

 .........

} …
Run Code Online (Sandbox Code Playgroud)

flutter flutter-provider

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

Flutter:Hero 小部件、Navigation 2.0 和 Provider 无法正常工作

我尝试将Hero小部件与ChangeNotifierProvider新的导航 2.0 系统一起使用。但我在那里面临着问题。相同的代码在不使用时有效。changeNotifier

我面临的问题是,弹出第二页 W2 后,第一页中的文本(即英雄的孩子)消失了。

下面是完整的代码。runApp(HeroTestApp2())正常工作。但我很想让第一种方法发挥作用。请帮忙。

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

main(List<String> args) {
  runApp(HeroTestApp());
}

class MyModel extends ChangeNotifier {
  bool _go = false;
  bool get go => _go;
  set go(bool go) {
    _go = go;
    notifyListeners();
  }
}

class HeroTestApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return ChangeNotifierProvider<MyModel>(
      create: (context) => MyModel(),
      builder: (context, _) {
        final state = context.watch<MyModel>();
        return MaterialApp(
          home: Navigator(
            pages: [
              MaterialPage(child: W1(onTapped: …
Run Code Online (Sandbox Code Playgroud)

dart flutter flutter-navigation flutter-provider flutter-widget

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

Flutter ExpansionPanelList - 扩展回调不起作用

我正在ExpansionPanelList通过使用Provider包来实现 the ,而不是制作Widgetbe statefulWidget。然而,它expansionCallback永远不会起作用。如果我单击屏幕上的第一个折叠列表,它永远不会展开。具体来说,data[0].isExpanded总是falseSummitView.dart. 控制台中没有报告错误。

这是我的SummitView.dart

import 'package:delta_y/modules/summits/model/Item.dart';
import 'package:delta_y/modules/summits/model/ItemsList.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';

class SummitView extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text("Summit/Milestone"),
        ),
        body: ChangeNotifierProvider(
          create: (context) => ItemsList(),
          child: Summit(),
        ));
  }
}

class Summit extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final itemModel = Provider.of<ItemsList>(context);
    // List<Item> _data = generateItems(8); …
Run Code Online (Sandbox Code Playgroud)

mobile dart flutter flutter-provider

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

尝试调用 Provider.of&lt;dynamic&gt;。这可能是一个错误,因此不受支持

尝试获取当前用户的 uid 并发送短信,但遇到 Provider 实现错误。

尝试致电 Provider.of。这可能是一个错误,因此不受支持。如果您想公开一个可以是任何内容的变量,请考虑更改dynamicObject。'package:provider/src/provider.dart': 断言失败: 第 307 行 pos 7: 'T !=dynamic'

这是使用提供程序的代码

 return SingleChildScrollView(
      child: Column(
        children: [
          FutureBuilder(
              future: Provider.of(context, listen: false).auth.getCurrentUid(),
              builder: (context, snapshot) {
                if (snapshot.connectionState == ConnectionState.done) {
                  return Text("${snapshot.data}");
                } else {
                  return CircularProgressIndicator();
                }
              })
        ],
      ),
    );
Run Code Online (Sandbox Code Playgroud)

获取当前uid的函数

//GET UID
  Future<String> getCurrentUid() async {
    return _auth.currentUser.uid;
  }
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?非常感谢任何帮助!先感谢您。

firebase flutter flutter-provider

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

FutureProvider vs StreamProvider vs ChangeNotifierProvider

简而言之,我是 flutter 的新手,我想知道 FutureProvider 和 StreamProvider 和 ChangeNotifierProvider 之间的区别以及何时使用每一个。提前致谢。

flutter flutter-provider

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

需要用 Provider 更新 TextController

目前,我正在学习 flutter,当提供者中的值发生变化时,无法更新一个 textController。这是我已经尝试过的代码:

TextEditingController textController;

  @override
  void initState() {
    TranslateTextProvider myProvider = Provider.of<TranslateTextProvider>(
      context,
      listen: false,
    );

    super.initState();
    textController = TextEditingController(text: myProvider.translated);
  }

  @override
  void dispose() {
    textController.dispose();
    super.dispose();
  }
Run Code Online (Sandbox Code Playgroud)

提供程序正在正确更新,但文本字段没有更新,是的,我已在文本字段上设置了控制器。我会很感激每一个提示。

textfield flutter flutter-provider

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

Riverpod:如何使用 StateNotifier 管理加载和错误状态?

如何像inStateNotifier一样使用加载/错误状态?FutureProviderRiverpod

我们可以使用 setState、带三元运算符的 var isLoading 和 didChangeDependency 对 Provider 执行相同的操作。

flutter flutter-provider riverpod flutter-riverpod

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

如何在小部件树/小部件类之外调用 Riverpod 提供程序?

我刚开始使用 RiverPod。之前我使用 Provider 进行状态管理。

如果是提供程序,我可以使用小部件树之外的提供程序来使用语法获取值

Provider.of<MyModel>(context,listen:true).someFunction();
Run Code Online (Sandbox Code Playgroud)

我如何在 RiverPod 中做同样的事情?现在我正在使用 Consumer Builder 和 Consumer Widget。我想知道是否有一种方法可以在不使用 Consumer 的情况下调用 Riverpod 提供商。

flutter flutter-provider riverpod flutter-riverpod

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

为什么将块提供程序放在单独的文件/类中会引发错误?

我有这个代码:

MultiBlocProvider(
  providers: [
    BlocProvider(
      create: (context) => CubitExample(),
    ),
  ],
  child: MaterialApp(
    home: Home(),
  ),
);
Run Code Online (Sandbox Code Playgroud)

它工作正常,我有很多肘节/块,所以我决定将提供者列表移动到一个单独的类:

MultiBlocProvider(
  providers: BlocProviders.blocs(),
  child: MaterialApp(
    home: Home(),
  ),
);
Run Code Online (Sandbox Code Playgroud)
// The class 
class BlocProviders {
  static List<BlocProvider> blocs() {
    return <BlocProvider>[
      BlocProvider(
        create: (context) => CubitExample(()),
      ),
    ];
  }
}
Run Code Online (Sandbox Code Playgroud)

现在抛出通常的块错误:

ProviderNotFoundException (Error: Could not find the correct Provider<ExampleCubit> above this BlocBuilder<ExampleCubit, ExampleState> Widget
Run Code Online (Sandbox Code Playgroud)

我不知道为什么当我尝试第二个代码时会抛出错误,为什么会抛出错误?

dart flutter bloc flutter-provider flutter-bloc

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

提供程序与InheritedWidget

我错了吗Widget,或者如果我们只想将值传递给树,那ProviderInheritedWidget带有dispose方法的吗?

flutter flutter-provider

2
推荐指数
2
解决办法
273
查看次数