微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Flutter mobx 上的 ObservableList 始终为空

如何解决Flutter mobx 上的 ObservableList 始终为空

我需要将我的应用程序存储在 ObservableList 上,但尽管内部函数正确,但它们还是以某种方式变空了。

import 'package:mobx/mobx.dart';
import 'package:device_apps/device_apps.dart';
import 'package:shared_preferences/shared_preferences.dart';
part 'crud_apps.g.dart';

class CrudApps = _CrudApps with _$CrudApps;

abstract class _CrudApps with Store {
  @observable
  var allAppName = ObservableList<String>();

  @observable
  var allPackageName = ObservableList<String>();

  @observable
  var pinnedOnTaskBar = ObservableList<String>();

  @observable
  var allApplications = ObservableList<Application>();

  @action
  Future getApps() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    // Returns a list of only those apps that have launch intent
    final allApplicationsAux = await DeviceApps.getInstalledApplications(
      includeSystemApps: true,onlyAppsWithLaunchIntent: true,includeAppIcons: true,);
    // Save all Name and Package Name
    for (var i = 0; i < allApplicationsAux.length - 2; i++) {
      allAppName.add(allApplicationsAux[i].appName);
      allPackageName.add(allApplicationsAux[i].packageName);
      allApplications.add(allApplicationsAux[i]);
    }
    print(allApplications);

    prefs.setString('allApplications',allApplications.toString());
    prefs.setString('allAppName',allAppName.toString());
    prefs.setString('allPackageName',allPackageName.toString());

    return allApplications;
  }

  @action
  Future appDrawerData() async {
    // allApplications = await DeviceApps.getInstalledApplications(
    //   includeSystemApps: true,//   onlyAppsWithLaunchIntent: true,//   includeAppIcons: true,// );
    print(allApplications);
    return allApplications;
  }

  @action
  Future pinApp(app) async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    String pinnedApps = prefs.getString('pinnedOnTaskBar');

    prefs.setString('pinnedOnTaskBar',app.toString());
    print(app);
    String stringValue = prefs.getString('pinnedOnTaskBar');
    print(stringValue);
  }
}

当我打印 getApps() 中的 allApplications 时,它工作正常。在 appDrawerData() 中打印时如何返回空。我已经尝试在每个小部件中使用 iniState 来尝试纠正和更改 ObservableList 实现,但没有任何效果

我做错了什么??麻烦你了

不胜感激任何帮助、建议或指导。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。