我正在尝试制作一个用于身份验证的插件。对于不同平台的不同现有包,它将充当“包装器”(但每个插件都有附加功能)。
我的意思是附加功能
- Web 实现已经有状态管理
- Android实现是AppAuth,所以这里需要添加自己的状态管理
我正在尝试使用这种PlatformInterface
方式,但我找不到任何指南如何使用构造函数参数使其可实例化。
假设我有这个代码:
abstract class KeycloakAuth extends PlatformInterface {
KeycloakAuth()
: super(token: _token);
static final Object _token = Object();
static late KeycloakAuth _instance = KeycloakAuth._setPlatform();
static KeycloakAuth get instance => _instance;
static set platform(KeycloakAuth instance) {
PlatformInterface.verifyToken(instance, _token);
_instance = instance;
}
factory KeycloakAuth._setPlatform() {
if (Platform.isAndroid) {
return KeycloakAuthAppAuth();
} else {
throw UnimplementedError('The current platform ${Platform.operatingSystem} is not supported.');
}
}
}
这可行,但在我的应用程序中,我想这样做:
final _keycloakAuth = KeycloakAuth(keycloakUrl: 'xxx', clientId: 'yyy');
如果我只是尝试添加这样的参数:
abstract class KeycloakAuth extends PlatformInterface {
final String keycloakUrl;
final String clientId;
KeycloakAuth({
required this.keycloakUrl,
required this.clientId,
})
: super(token: _token);
...
_setPlatform()
因为这是静态方法,所以我无法在方法中传递它们。
也KeycloakAuthAppAuth
extends KeycloakAuth
,所以我需要来回传递这些参数,比如 instantiate KeycloakAuth
,这KeycloakAuthAppAuth
需要通过super()
...
对此有什么建议吗?
我知道我可以initialize({String keycloakUrl, String clientId})
使用我的参数创建一个方法,但我仍然想知道是否可以使用构造函数创建它。