Flutter:如何分离网络和本地数据操作?

Flutter: How can i separate network and local data operations?

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

  1. 创建一个parentChangeNotifier并标记为摘要。

  2. 在里面包含所有的公共成员变量和声明方法 没有实施它们。

  3. 现在创建两个 ChangeNotifier 来扩展 parent

  4. 在每个方法中实现缺失的代码 parentChangeNotifier

  5. 根据 online/offline 使用正确的 child ChangeNotifier 状态

这是一个例子:

abstract class DataManagerNotifier extends ChangeNotifier {

  List currentData;
  String uID;

  void getData();

  void changeData();
}

而2 child人会是这样的:

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 设置为 <DataManagerNotifier>