Flutter—Cloud Firestore of FireBase

2022-04-08 00:00:00 数据 指定 获取 内容 添加

FireBase是一个用于构建移动应用、提供实时数据存储和同步、用户身份验证等功能的平台。方便用户快速高效的构建前后端结合的完整应用。
FireBase有多种功能方向:
以下为官方平台截图


其中开发下提供了以下功能:


本文主要为获取DataBase中的数据和上传数据到FireBase的数据库;
要说明的是FireBase的数据存储格式是以键值对的方式存储。
1 将FireBase添加到项目中:
1)官网添加项目:


2)创建项目名称并同意相关协议:


构建项目中:


3)添加对应的IOS或者android 应用包名:


4)根据提示将对应的json文件放到指定路径下:



5)设置服务classpath:


在build.gradle中添加apply:


6)添加必要的plugin:


以上操作之后runApp,能够启动app的话表示以成功添加服务;
2 将指定url中的信息写入到firebase中:
1)import必要包文件:

2)上传文件到firebase的database中:
核心代码:

//获取url中的数据
http.Response res = await http.get(url);
// 将response的内容decode成为一个list
List j = jsonDecode(res.body);
//将list中的数据全部通过firestore存储
j.forEach((e) {
//创建users文档并将list中的item以键值对的方式存储
Firestore.instance.collection('/users').document().setData(e);
});

3)获取到database中的数据:
核心代码:

StreamBuilder(
stream: Firestore.instance.collection('users')?.snapshots(),
builder: (context, snap) {
//没有数据的话显示空内容
if (!snap.hasData) {
return Container();
}
//有数据的话将数据存储到list中
List<DocumentSnapshot> docs = snap.data.documents;
return ListView.builder(
itemCount: docs.length,
itemBuilder: (context, index) {
//获取到index位置的snapshot
DocumentSnapshot doc = docs[index];
return InkWell(
onTap: () {
//点击删除指定位置的内容
Firestore.instance.collection('/users').document(doc.documentID).delete();
},
child: ListTile(
//将获取到的内容通过listtile展示出来
title: Text(doc['title']),
subtitle: Text(doc['body']),
));
});
},
),

完整代码如下:

import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'package:cloud_firestore/cloud_firestore.dart';
import 'dart:convert';

class FirebaseTest extends StatefulWidget {
@override
_FirebaseTestState createState() => _FirebaseTestState();
}

class _FirebaseTestState extends State<FirebaseTest> {
//指定url
String url = "http://jsonplaceholder.typicode.com/posts";

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("FireBase Firestore"),
),
floatingActionButton: FloatingActionButton(
onPressed: () async {
//获取url中的数据
http.Response res = await http.get(url);
// 将response的内容decode成为一个list
List j = jsonDecode(res.body);
//将list中的数据全部通过firestore存储
j.forEach((e) {
//创建users文档并将list中的item以键值对的方式存储
Firestore.instance.collection('/users').document().setData(e);
});
},
child: Text("获取数据"),
),
body: StreamBuilder(
stream: Firestore.instance.collection('users')?.snapshots(),
builder: (context, snap) {
//没有数据的话显示空内容
if (!snap.hasData) {
return Container();
}
//有数据的话将数据存储到list中
List<DocumentSnapshot> docs = snap.data.documents;
return ListView.builder(
itemCount: docs.length,
itemBuilder: (context, index) {
//获取到index位置的snapshot
DocumentSnapshot doc = docs[index];
return InkWell(
onTap: () {
//点击删除指定位置的内容
Firestore.instance.collection('/users').document(doc.documentID).delete();
},
child: ListTile(
//将获取到的内容通过listtile展示出来
title: Text(doc['title']),
subtitle: Text(doc['body']),
));
});
},
),
);
}
}

相关文章