dart - 如何从 FireStore 排序列表
问题描述
在我在 FireStore 上的文档中,每个文档都有一个字符串列表。当我在应用程序中显示文档时,我想按字母顺序对它们进行排序。我正在尝试的方法不起作用。
var words = document['list'].cast<String>();
words.sort(); // Outputs 'null'
在调试器中检查时,当我投射列表时,对象是 type CastList
,但我找不到任何关于此的信息,并且尝试创建具有该声明类型的对象告诉我它是一个未定义的类。因此,我尝试指定我想要的类:
List<String> words = document['list'].cast<String>();
但它仍然输出null
当我尝试排序时它仍然输出。
我正在获取所有文档lists
并在列表视图中显示它们中的每一个。
StreamBuilder(
stream: Firestore.instance.collection('lists').orderBy('releases').snapshots,
builder: (context, snapshot) {
if (!snapshot.hasData)
return const Center(child: Text('Loading...'));
return ListView.builder(
itemCount: snapshot.data.documents.length,
itemBuilder: (context, index) =>
_buildRow(context, snapshot.data.documents[index], index),
);
},
)
Widget _buildRow(BuildContext context, DocumentSnapshot document, int index) {
var words = document['list'].cast<String>();
var wordsString = words.toString();
wordsString = wordsString.substring(1, wordsString.length - 1);
return CheckboxListTile(
title: Text(
document['name'],
style: _largerTextStyle,
),
subtitle: Text(
wordsString,
style: _textStyle,
),
value: _selectedIndices.contains(index),
onChanged: (bool value) {
setState(() {
if (value) _selectedIndices.add(index);
else _selectedIndices.remove(index);
});
},
);
}
解决方案
它应该工作,不需要调用cast
。
编辑: 我想你忘了提取数据。
List words = document.data['list'];
words.sort();
推荐阅读
- api - 是否可以将 Azure Functions 项目添加到 .Net Core Api 解决方案并使用公共存储库?
- opengl - 在 glsl 顶点着色器中使用额外的统一 mat4 转换灯光?
- python-3.x - 如果第 5 个元素是“名称”,则按每第 4 个元素拆分列表;如果第 5 个元素是地址,则按第 5 个元素拆分
- ionic-framework - Ionic v3 搜索栏过滤对象
- jquery - 我可以在加载 Kendo Grid 时有条件地将行显示为可编辑吗?
- ruby-on-rails - 这个版本的 Ruby 在 Heroku-18 上不可用
- swift - 自定义 MKAnnotationView 想要再次被点击
- omnet++ - 模块 ipv4NetworkConfigurator 中的错误,找不到配置器模块“ipv4NetworkConfigurator”
- laravel - 我尝试在组件 vue 中安装组件
- java - Android 应用程序具有外部 SD 卡写入权限,但我仍然无法修改文件