簡體   English   中英

Dart/Flutter 如何實現一個有兩個版本(PRO 和 LITE)的顫振項目

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM