Generics 如何存储模型的收集路径?

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

我正在为我的应用程序在Dart/Flatter中构建模型。以下是模型的外观:

抽象类模型{
///模型的唯一标识符。
///由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?