使用 DDD 实现更简单的包我没有问题,但是如何使用 DDD 来实现用于颤振的 RevenueCat(管理应用内购买订阅)包。我遇到的问题是它需要通过包函数传递他们自己的自定义类(包)。
到目前为止,我已经对其进行了抽象,以便我的其他包唯一存在的地方是它们的存储库/外观类,并且它不会污染我的代码的任何其他部分,我也想在这里实现这一点。
例如(摘自包 github repo 链接,位于问题的末尾)
class UpsellScreen extends StatelessWidget {
final Offerings offerings;
UpsellScreen({Key key, @required this.offerings}) : super(key: key);
@override
Widget build(BuildContext context) {
if (offerings != null) {
final offering = offerings.current;
if (offering != null) {
final monthly = offering.monthly;
final yearly = offering.annual;
if (monthly != null && yearly != null) {
return Scaffold(
appBar: AppBar(title: Text("Upsell Screen")),
body: Center(
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
PurchaseButton(package: monthly),
PurchaseButton(package: yearly)
],
)));
}
}
}
return Scaffold(
appBar: AppBar(title: Text("Upsell Screen")),
body: Center(
child: Text("Loading..."),
));
}
}
有一个完整实现的示例,它非常易于遵循,它只是一个文件:https ://github.com/RevenueCat/purchases-flutter/blob/master/example/lib/main.dart
由于我是 DDD 新手,我不确定实现这种包的确切方法,并希望坚持使用 DDD 作为我的设计选择,因为我真的很喜欢这个工作流程。