[英]How to maintain two versions of an app (pro and lite) in Flutter
[英]Dart/Flutter How can I implement a flutter project who has two versions (PRO and LITE)
在我的顫振項目中,我有一些我只想在我的應用程序的PRO版本上擁有的功能。 如何構建兩個不同的最終項目,一個具有該功能,另一個沒有?
在您的用戶模型中,添加“狀態”之類的字段,然后將其默認設置為 lite,然后在您的 UI 中,用戶登錄后,獲取 currentUserData,並實例化用戶,然后檢查 User.status 是否為 pro 或lite 然后像這樣構建
@override
Widget build(BuildContext context) {
return user.status == lite ? LiteHomeScreen() : ProHomeScreen();
}
長示例
用戶
enum Status {
lite,
pro,
}
class User {
String? name;
int? age;
Status status;
User({this.name, this.age, this.status = Status.lite});
Map<String, dynamic> toJson() {
return {
'name': name,
'age': age,
'status': status,
};
}
factory User.fromJson(Map<String, dynamic> json) {
return User(
name: json['name'],
age: json['age'],
status: json['status'],
);
}
@override
bool operator ==(Object other) =>
identical(this, other) ||
other is User &&
runtimeType == other.runtimeType &&
name == other.name &&
age == other.age &&
status == other.status;
@override
int get hashCode => name.hashCode ^ age.hashCode ^ status.hashCode;
}
用戶界面
class Home extends StatefulWidget {
const Home({Key? key}) : super(key: key);
@override
State<Home> createState() => _HomeState();
}
class _HomeState extends State<Home> {
late User user;
void initializeUser() async {
Response response = await get("https://fakedatabase.myfake.com/users/1");
user = User.fromJson(jsonDecode(response.body));
}
@override
void initState() {
initializeUser();
super.initState();
}
@override
Widget build(BuildContext context) {
return user.status == Status.lite ? LiteHome() : ProHome();
}
}
然后編寫一個方法,當用戶支付 pro 或其他東西時將執行
void upgradeToPro() {
user.status = Status.pro;
/// Save the user to the database.
post(...uri, body: jsonEncode(user.toJson()));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.