Flutter 如何在提供程序中实现可重新调用的未来?

Flutter 如何在提供程序中实现可重新调用的未来?,flutter,flutter-provider,Flutter,Flutter Provider,在我的应用程序中,在某个屏幕上,有3个切换按钮,表示3种类型的产品,以及该类别的产品列表,这些产品将通过API调用提供给提供者类。列表可以通过两种方式查看,每种方式都是一个单独的小部件。注意,这是一种简化,因为屏幕小部件和togglebuttons小部件或listitem小部件文件之间至少有2个小部件文件 我想要实现的是在第一次加载时,调用API(未来),以提供默认显示的第一类产品列表,以及当用户单击第二类或第三类的切换按钮时,进行新的API调用,并使用新数据重建列表在这种情况下,正确的提供者是

在我的应用程序中,在某个屏幕上,有3个
切换按钮
,表示3种类型的产品,以及该类别的产品列表,这些产品将通过API调用提供给提供者类。列表可以通过两种方式查看,每种方式都是一个单独的小部件。注意,这是一种简化,因为屏幕小部件和togglebuttons小部件或listitem小部件文件之间至少有2个小部件文件

我想要实现的是在第一次加载时调用API(未来),以提供默认显示的第一类产品列表,以及当用户单击第二类或第三类的切换按钮时,进行新的API调用,并使用新数据重建列表在这种情况下,正确的提供者是什么?


我尝试过使用
FutureProvider
,但它不起作用,因为它要么根本不构建列表,要么不断地重建列表
StreamProvider
似乎也不起作用,因为它的生成器只运行一次。

NotifyListeners是使用提供程序的最简单方法,我们只需调用NotifyListeners()方法,告诉“侦听器”重新生成并获取新值

单击切换按钮时,只需调用notifyListeners()

注意,您只能在扩展ChangeNotifer的类中使用notifyListener()。 因此,在该类中创建一个函数,该函数将执行第二类API并在其中编写changeNotifier

class CreditCardViewModel extends ChangeNotifier {
   
   changeCategory(String category) {
    //API Call for the new category
     response = ApiData;
    notifyListeners();
   }
   
   getAPIData(){
   
   return response;
    }

最后最好的提供者是changeNotifierProvider。 我首先将项目列表初始化为空列表,然后在提供者的构造函数中调用未来,但我不等待它。Future调用api并将列表设置为传入数据,然后调用notifyListeners()。现在已更改的列表显示新数据