【问题标题】:How to take advantages of interfaces while using Providers in flutter?在 Flutter 中使用 Provider 时如何利用接口?
【发布时间】:2021-08-09 10:05:24
【问题描述】:

假设我有 3 个 ChangeNotifierProviders“Auth1”、“Auth2”、“Auth3”。我希望它们都实现 login()、signup()、isAuthenticated()。

这样我就可以随时将一个提供者替换为另一个提供者。

//Interface
class IAuth {
 Future<void> signUp(String email, String password)=>throw UnimplementedError();
 Future<void> login(String email, String password) => throw UnimplementedError();
 Future<bool> isAuthenticted() => throw UnimplementedError();
 void logout() => throw UnimplementedError();
}

我可以定义

类 Auth1 扩展 ChangeNotifier 实现 IAuth { ... }

类 Auth2 扩展 ChangeNotifier 实现 IAuth { ... }

类 Auth3 扩展 ChangeNotifier 实现 IAuth { ... }

但是我怎样才能提供这些提供程序,以便我将来可以毫无问题地替换它们呢?

ChangeNotifierProvider.value(value: Auth1())

一段时间后,我可能想用 Auth2 替换 Auth1,并且我想知道这是否是一个小问题

【问题讨论】:

  • 为什么要更换提供者?
  • 假设我有各种身份验证提供程序,一个使用 JWT,另一个使用其他身份验证机制。无论我使用什么身份验证提供程序,我都希望我的提供程序能够正常工作。

标签: flutter dart interface flutter-change-notifier


【解决方案1】:

在 RiverPod 中使用 ProviderScope 可能会更容易。 (RiverPod 是 Provider 的作者为了解决一系列新问题而写的。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-30
    • 2020-03-13
    • 2020-10-03
    • 2020-06-03
    • 2020-10-16
    • 2020-05-26
    • 2021-05-06
    • 1970-01-01
    相关资源
    最近更新 更多