【问题标题】:How to call api once in futurebuilder如何在futurebuilder中调用一次api
【发布时间】:2022-01-06 23:28:10
【问题描述】:

我的应用程序有不同的路线,我想知道当用户第一次出现在屏幕上时如何用 cubit 调用我的 api,并且每次返回屏幕时不要重新调用 api已经初始化了。

我的结构使用 bloC

这是我的个人资料页面初始化类

@override
Widget build(BuildContext context) {
final theme = Theme.of(context);
final user = context.read<AuthCubit>().state;
final bloc = context.read<ProfileCubit>();

return Scaffold(
  body: FutureBuilder(
    future: bloc.updateProfilePicture(user!.id),
    builder: (BuildContext context, AsyncSnapshot snapshot) {
      if (snapshot.connectionState == ConnectionState.done) {
        return BlocBuilder<ProfileCubit, ProfilePicture?>(
          buildWhen: (prev, curr) => prev != curr,
          builder: (context, picture) {
            return picture != null
                ? Profil(profilePicture: picture, updateIndex: updateIndex)
                : Profil(updateIndex: updateIndex);
          },
        );
      }
      return Center(
        child: CircularProgressIndicator(
          color: Colors.orange,
        ),
      );
    },
  ),
);
}

【问题讨论】:

  • 你可以有一些想法here

标签: flutter bloc


【解决方案1】:

有很多方法可以解决这个问题 1-简单(但不是干净的代码)是使用布尔全局变量 像 isApiReqursted 默认值 (false) 并且在调用 api 时将其设置为 true 2-您可以将响应缓存在repository或bloc中,并让api方法首先检查是否有数据,如果不需要发出http请求

【讨论】:

    猜你喜欢
    • 2020-12-08
    • 2020-06-04
    • 2018-12-25
    • 1970-01-01
    • 1970-01-01
    • 2019-10-31
    • 2020-05-08
    • 1970-01-01
    • 2021-10-01
    相关资源
    最近更新 更多