如何在Flutter中将ChangeNotifier与抽象类一起使用?

时间:2020-06-16 16:43:41

标签: flutter dart overriding abstract-class

在我的dart应用程序中,我想对我的身份验证类使用ChangeNotifier。

我有一个抽象类,另一个类实现了这些方法。

abstract class AuthBase {
  Future<void> signIn(String email, String password);
  Future<void> signUp(String email);
  Future<void> signOut();
}

class Auth with ChangeNotifier implements AuthBase {
...
}

如您所见,ChangeNotifier未与基类一起使用。

我想做的是将ChangeNotifier与抽象类一起使用。但不确定如何重写Auth类中的方法;

@override
  void addListener(listener) {
    // TODO: implement addListener
  }

  @override
  void dispose() {
    // TODO: implement dispose
  }

  @override
  // TODO: implement hasListeners
  bool get hasListeners => throw UnimplementedError();

  @override
  void notifyListeners() {
    // TODO: implement notifyListeners
  }

  @override
  void removeListener(listener) {
    // TODO: implement removeListener
  }

有人可以提供一些帮助吗?

1 个答案:

答案 0 :(得分:1)

提供者文档有一个例子:https://github.com/rrousselGit/provider#can-i-consume-an-interface-and-provide-an-implementation

abstract class ProviderInterface with ChangeNotifier {
  ...
}

class ProviderImplementation with ChangeNotifier implements ProviderInterface {
  ...
}

class Foo extends StatelessWidget {
  @override
  build(context) {
    final provider = Provider.of<ProviderInterface>(context);
    return ...
  }
}

ChangeNotifierProvider<ProviderInterface>(
  create: (_) => ProviderImplementation(),
  child: Foo(),
),