[英]Creating a shop/ item system in flutter with SQL, how to structure in-game/app items properly?
SQL 和数据库的新功能,创建一个包含不同项目的应用程序内商店。
void _createTableItems(Batch batch) {
batch.execute('DROP TABLE IF EXISTS Items');
batch.execute('''CREATE TABLE boughtItems (
id INTEGER PRIMARY KEY,
price INTEGER
)''');
}
class Item {
Item({required this.id, required this.price, required this.title});
String title;
int id;
int price;
}
List<Item> availableProducts = [WeaponItem(id: 0, strength: 5), WeaponItem(id: 1, strength: 7), StableItem(id: 2, speed: 4), FoodItem(id: 3, rev: 7)]
我现在几乎拥有最基本的结构。 当我需要获取产品时,我所做的就是在数据库查询中搜索可用产品列表中的 ID。
Future<List<Item>> getBought() async {
await database;
List products = await _database!.query("Items");
List<Item> result = [];
for (var element in products) {
result.add(availableProducts.where((e) => e.id == element["id"]).first);
}
return result;
}
这是一种可以接受的方法吗?
我担心的是项目类型的混合。
我有点迷路,因为我可以做很多事情。 我应该创建一个不同的表来保存每个单独项目的所有属性吗? 我应该在表中添加一个类型字符串来区分不同的项目吗?
我会为示例产品创建一个表。 此表包含有关所有产品共有的产品的一般信息(id、名称、product_number、info)。 如果您想要每种产品类型的附加和不同信息,我会添加一个 fk_type,它引用存储不同产品类型的 product_type(id, name) 表。 然后我会为每种产品类型创建一个附加表。 例如:product_weapon(id, size, ammunition, reload_time ), product_chair(id, high, depth, weight)。 但您也可以只使用简单的产品表并添加可以存储 jsons、xmls、css 文件的一般描述字段。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.