【问题标题】:Flutter: How can i separate network and local data operations? [closed]Flutter:如何分离网络和本地数据操作? [关闭]
【发布时间】:2021-07-22 19:00:03
【问题描述】:

如果用户想注册或登录应用程序,我想从网络获取数据。但是,如果用户想在本地应用程序中工作,则从本地数据中获取数据。顺便说一下,我使用提供者进行数据管理。有人可以给我一些想法吗?

【问题讨论】:

标签: flutter flutter-provider data-management


【解决方案1】:
  1. 创建父 ChangeNotifier 并将其标记为抽象。

  2. 在其中包含所有常见的成员变量并声明方法 没有实现它们。

  3. 现在创建两个扩展父级的ChangeNotifier

  4. 在每一个中实现其方法中缺少的代码 家长ChangeNotifier

  5. 根据在线/离线使用正确的子ChangeNotifier 状态

这是一个例子:

abstract class DataManagerNotifier extends ChangeNotifier {

  List currentData;
  String uID;

  void getData();

  void changeData();
}

两个孩子会是这样的:

class OfflineDataManagerNotifier extends DataManagerNotifier {
  @override
  void changeData() {
    // TODO: implement changeData locally
  }

  @override
  void getData() {
    // TODO: implement getData locally
  }
  
}

class OnlineDataManagerNotifier extends DataManagerNotifier {
  @override
  void changeData() {
    // TODO: implement changeData from network
  }

  @override
  void getData() {
    // TODO: implement getData from network
  }
  
}

最后,根据用户的状态使用它们

class Screen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {

    if(isOnlineMode){
      return ChangeNotifierProvider<DataManagerNotifier>(
          create: (context) => OnlineDataManagerNotifier(),
          child: _ScreenContent()
      );
    }
    return ChangeNotifierProvider<DataManagerNotifier>(
        create: (context) => OfflineDataManagerNotifier(),
        child: _ScreenContent()
    );
  }
}

别忘了将 ChangeNotifierProvider 设为 &lt;DataManagerNotifier&gt;

【讨论】:

  • 太棒了,谢谢你的回答:)
猜你喜欢
  • 2016-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-19
  • 1970-01-01
  • 2012-10-16
  • 2014-01-19
相关资源
最近更新 更多