我正在编写一个应用程序/游戏,用户可以在 SQFLite数据库中存储的文本字段上输入自己的规则。
规则与朋友相关,所以它在Friend类中,具有ID,名称,rule0,rule1,rule2 ... rule9。 REALLY 令人讨厌的原因很多,但我认为我需要将它放在Friend类中,以便将其存储在正确的friend.id中。
当我尝试时,出现了明显的错误“只能在初始化程序上访问静态成员”
List<Strings> rules = [rule0, rule1];
要么
List<dynamic> rules = [...];
有人知道我该如何解决吗? 创建一个新的规则类,每个规则都有与正确朋友相关的ID? 或者,我是否可以在Friend中创建一个动态列表?
真的输了。欢迎任何帮助。
class Friend {
int id;
String name;
String pic;
bool play;
String rule0;
String rule1;
String rule2;
String rule3;
String rule4;
String rule5;
String rule6;
String rule7;
String rule8;
String rule9;
Friend();
// i have then a fromMap() and a toMap() for the database
}
答案 0 :(得分:0)
我不确定,但是似乎您在SQL方面以及数据的类表示方面都遇到了麻烦。
如果您确定只有一定数量的规则,则可以按照当前的方式进行处理。我要做的另一件事是为规则列表创建一个“ getter”函数,即
List<String> get rules => [rule1, rule2, rule2, ...].where((item) => item != null).toList()
请注意,如果您使用的是构造函数,则可以按照以下步骤在构造函数中构建列表:
class Friend {
int id;
String name;
String pic;
bool play;
String rule0;
String rule1;
String rule2;
String rule3;
String rule4;
String rule5;
String rule6;
String rule7;
String rule8;
String rule9;
List<String> rules;
Friend(
{this.id,
this.name,
this.pic,
this.play,
this.rule0,
this.rule1,
this.rule2,
this.rule3,
this.rule4,
this.rule5,
this.rule6,
this.rule7,
this.rule8,
this.rule9})
: rules = [
rule0,
rule1,
rule2,
rule3,
rule4,
rule5,
rule6,
rule7,
rule8,
rule9,
].where((item) => item != null).toList(growable: false);
}
我不建议这样做(或者,如果这样做,您可能应该将rule *或规则设为私有或以某种方式维护状态)。字符串列表不存储对rule0,rule1,...字符串的引用,而是存储字符串本身。您可以通过制作Rule类并将rule0-9最终化来解决此问题,但这有点复杂。
最有可能的是,将其动态地列出项目。 SQL无法处理该问题,因此您将不得不为规则创建一个单独的表。
您将有两个类似这样的表,其中id
既是主键,friendId
是外键:
Friend(id, name, pic, play)
和Rule(id, friendId, text)
保存和更新现在将变得更加复杂。您必须更加小心地维护数据库中的规则列表,但这并不那么困难。如果您知道只从一个位置(即一个类)写入列表,则可以保持类的当前状态和初始状态之间的差异,但实际上,除非您要处理十万分之一规则,这可能并不重要。