Flutter 是一个用于构建跨平台移动应用的 UI 工具包,而 Firestore 是 Google 提供的 NoSQL 数据库,适用于需要实时数据更新的应用。Firestore 允许你存储和同步数据,并且支持复杂的查询。
Firestore 数据库中的数据以文档(Documents)的形式存储,文档可以包含字段(Fields),字段可以是各种数据类型,如字符串、数字、布尔值等。
适用于需要实时数据更新的应用,如聊天应用、社交网络、实时跟踪应用等。
要获取当月的数据,你需要根据日期字段进行查询。以下是一个示例代码,展示如何在 Flutter 中使用 Firestore 获取当月的数据:
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:intl/intl.dart';
class MyWidget extends StatefulWidget {
@override
_MyWidgetState createState() => _MyWidgetState();
}
class _MyWidgetState extends State<MyWidget> {
List<DocumentSnapshot> _documents = [];
StreamSubscription<QuerySnapshot> _subscription;
@override
void initState() {
super.initState();
_getDocuments();
}
void _getDocuments() async {
DateTime now = DateTime.now();
DateTime firstDayOfMonth = DateTime(now.year, now.month, 1);
DateTime lastDayOfMonth = DateTime(now.year, now.month + 1, 0);
QuerySnapshot querySnapshot = await Firestore.instance.collection('your_collection')
.where('date', isGreaterThanOrEqualTo: firstDayOfMonth)
.where('date', isLessThanOrEqualTo: lastDayOfMonth)
.getDocuments();
setState(() {
_documents = querySnapshot.documents;
});
// 订阅实时更新
_subscription = Firestore.instance.collection('your_collection')
.where('date', isGreaterThanOrEqualTo: firstDayOfMonth)
.where('date', isLessThanOrEqualTo: lastDayOfMonth)
.snapshots()
.listen((data) {
setState(() {
_documents = data.documents;
});
});
}
@override
void dispose() {
_subscription?.cancel();
super.dispose();
}
@override
Widget build(BuildContext context) {
return ListView.builder(
itemCount: _documents.length,
itemBuilder: (context, index) {
Map<String, dynamic> document = _documents[index].data;
return ListTile(
title: Text(document['title']),
subtitle: Text(DateFormat('yyyy-MM-dd').format(document['date'])),
);
},
);
}
}
通过以上方法,你可以有效地从 Firestore 中获取当月的数据,并在 Flutter 应用中展示。
领取专属 10元无门槛券
手把手带您无忧上云