Generics 如何存储模型的收集路径?
我正在为我的应用程序在Dart/Flatter中构建模型。以下是模型的外观:Generics 如何存储模型的收集路径?,generics,design-patterns,data-structures,types,dart,Generics,Design Patterns,Data Structures,Types,Dart,我正在为我的应用程序在Dart/Flatter中构建模型。以下是模型的外观: 抽象类模型{ ///模型的唯一标识符。 ///由Firestore生成。 最终字符串id; 模型(this.id); } 类MyModel扩展了模型{ 最后的字符串名; 最终字符串描述; 最终整数顺序; MyModel(stringid,this.name,this.items,this.order):super(id); } 这些模型将存储在Google Firestore的mymodels集合中: mymodel
抽象类模型{
///模型的唯一标识符。
///由Firestore生成。
最终字符串id;
模型(this.id);
}
类MyModel扩展了模型{
最后的字符串名;
最终字符串描述;
最终整数顺序;
MyModel(stringid,this.name,this.items,this.order):super(id);
}
这些模型将存储在Google Firestore的mymodels
集合中:
mymodels/abc
mymodels/def
...
要从Firestore获取这些模型的列表,我需要存储mymodels
的收集路径(mymodels
),以便在某处键入。因此,我可以在以后获取模型时使用它:
Future fetchList(){
//如何通过了解T来了解“路径”?
_firestore.collection('path').getDocuments()
}
在哪里存储该收集路径?我想在模型接口中声明一个静态属性,但Dart似乎不允许重写静态属性
Dart注释是否适合这种情况?如果您希望保存硬编码的变量,这些变量可以在任何地方使用,也可以用作字符串,那么您可以使用由静态变量组成的类。
假设你在firebase有一些收藏
mymodels/modelA
mymodels/modelB
mymodels/示例c
mymodels/示例
您可以将这些内容保存在类中,如下所示:
class Path {
static String modelA = "mymodels/modelA";
static String modelB = "mymodels/modelB";
static String exampleC = "mymodels/exampleC";
static String exampleD = "mymodels/exampleD";
}
然后在代码中访问它们,它将解析为字符串。
例如:Firestore.instance.collection(Path.modelA)
可以通过编程和动态方式访问。只要导入创建该类的文件,您就可以在任何地方访问它。不幸的是,我想到的最佳选择是将collectionPath
设为类成员。下面是一个用于省道/颤振的存储库模式示例:
class FirebaseRepository扩展了存储库{
最终消防仓库(Firestore);;
最终字符串_collectionPath;
FirebaseRepository(此.\u firestore,此.\u collectionPath)
:assert(_firestore!=null),
断言(_collectionPath!=null);
@凌驾
Future fetchList()异步{
最终快照=
wait _firestore.collection(_collectionPath).getDocuments();
//TODO:将快照文档映射到[T]并返回。
}
用法:
final Repository Repository=FirebaseRepository(_firestore,'mymodels');
如果我理解正确,您希望在路径中硬编码,对吧,并且需要一个存储路径的地方,几乎像一个枚举?@ThinkDigital,没错。添加应答谢谢,但据我所知,这不是一个选项。请参阅Future fetchList()
函数在我的示例中。如何在该函数中动态查找正确的收集路径?@AndreyGordeev您可以键入检查它。我将更新我的答案。首先,您想使用什么信息来确定正确的路径?只需键入。T扩展模型
。我的意思是您想使用什么数据来计算它?您想使用什么变量你想用它来确定T?