【问题标题】:Flutter Make api call when home button(middle android button) is pressed and user comes back on app当按下主页按钮(中间 android 按钮)并且用户返回应用程序时,Flutter 进行 api 调用
【发布时间】:2022-02-06 11:29:01
【问题描述】:

在我的应用程序中,我有从 Api 获取数据的屏幕,有时后端可以更新或更改 api 上的某些内容,因此如果用户正在使用该应用程序,并且用户按下主页按钮(中间的 android 按钮。圆圈)并稍后返回应用程序,我没有看到数据正在更新,因此没有进行 api 调用,但是当我按下后退按钮并返回应用程序时,api 调用的进行与我关闭时相同应用程序并将其从打开的应用程序历史记录中删除并再次打开它,正在进行 api 调用,所以我需要在按下主页按钮时发生同样的情况,用户通过按下主页按钮退出应用程序,来返回,将进行 api 调用。我查看了它,并被告知我需要使用 WidgetsBindingObserver 类。任何帮助将不胜感激,如果您需要发布任何代码,请告诉我。

我试过了,但是不行


class _StopWorkingScreenState extends State<StopWorkingScreen>
    with WidgetsBindingObserver {
  late Future<Response> futureDataForStatus;

  @override
  void initState() {
    super.initState();
    futureDataForStatus = getLocationStatus();
    WidgetsBinding.instance!.addObserver(this);
  }

  @override
  void didChangeAppLifecycleState(AppLifecycleState state) {
    switch (state) {
      case AppLifecycleState.inactive:
        print("Inactive");
        break;
      case AppLifecycleState.paused:
        print("Paused");
        break;
      case AppLifecycleState.resumed:
        futureDataForStatus;
        break;
    }
  }

【问题讨论】:

    标签: flutter dart flutter-layout flutter-dependencies


    【解决方案1】:

    您需要在 switch 运算符中调用该函数,而不仅仅是传递一个变量。

    你可以这样做:

    @override
    void didChangeAppLifecycleState(AppLifecycleState state) {
      switch (state) {
        ...
        case AppLifecycleState.resumed:
          setState(() {
            futureDataForStatus = getLocationStatus();
          });
          break;
        }
    }
    

    这将更新应用打开时的状态并使用新数据重新加载视图(假设您在页面某处使用 futureDataForStatus 作为 FutureBuilder 的未来。

    【讨论】:

    • 是的,干杯
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-23
    相关资源
    最近更新 更多