热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何在Flutter上使用Firebase

本文介绍了在带有Firebase的Flutter中构建框架应用程序所需的所有步骤。Google的FlutterSDK可用于开发可为Android和iOS平台提供本地UI体验的应用程

本文介绍了在带有Firebase的Flutter中构建框架应用程序所需的所有步骤。

Google的Flutter SDK可用于开发可为Android和iOS平台提供本地UI体验的应用程序。 要使用Flutter编写应用,您必须使用Dart编程语言。

Firebase Realtime Database是一个云托管数据库,数据存储为JSON。 它为后端数据库提供安全访问权限,以直接从客户端构建丰富的协作应用程序。 数据在本地保留在设备上,而脱机和实时事件继续触发,从而为最终用户提供响应式体验。 当设备重新连接到Internet时,实时后端数据库将自动与客户端脱机时发生的本地数据更改同步,同时自动合并任何冲突。

创建Firebase项目

  1. 在Firebase控制台中创建一个Firebase项目。

https://console.firebase.google.com

2.完整的平台特定配置

的iOS

  • 将IOS应用注册到Firebase,iOS捆绑ID在Xcode项目和Firebase控制台上必须相同。
  • 下载应用程序的配置文件,并将其添加到您的项目文件夹中。
  • 将Firebase依赖项添加到您的项目

安卓系统

  • 注册您的android应用。 在Firebase控制台上的项目中使用包名称。
  • 下载配置文件GoogleService-Info.plist并将其放在应用程序模块的根目录中。

创建Flutter项目

  1. 使用flutter create命令创建一个新项目。
$ flutter create flutter_with_firebase

2.打开ios / Runner.xcworkspace。 在Firebase控制台上定义的xcode项目中保留相同的Bundle Identifier,并将GoogleService-info.plist保存在Runner文件夹中

3.在您的IDE或编辑器中,打开文件pubspec.yaml。 为firebase_database添加依赖项并 保存文件。

dependencies: flutter: sdk: flutter firebase_database: 1.0.3

4.在将当前目录设置为Flutter应用程序目录的IDE或命令行中,运行以下命令。

颤振包得到

设定

  1. 导入Firebase的依赖项。
import 'package:firebase_database/firebase_database.dart' ;

2.创建databaseReference对象以使用数据库。

final databaseReference = FirebaseDatabase. instance .reference();

3.创建一个带有4个按钮的屏幕。

创建记录

1.单击“创建记录”按钮时,将调用createRecord()方法。

RaisedButton( child: Text( 'Create Record' ), onPressed: () { createRecord(); }, ),

2.在createRecord()中,我们在数据库中创建两个演示记录。

void createRecord(){ databaseReference .child( "1" ).set({ 'title' : 'Mastering EJB' , 'description' : 'Programming Guide for J2EE' }); databaseReference .child( "2" ).set({ 'title' : 'Flutter in Action' , 'description' : 'Complete Programming Guide to learn Flutter' }); }

查看记录

  1. 单击“查看记录”按钮时,将调用getData()方法。
RaisedButton( child: Text( 'View Record' ), onPressed: () { getData(); }, )

2.在getData()中,我们从数据库中检索所有记录。

void getData(){ databaseReference .once().then((DataSnapshot snapshot) { print( 'Data : ${snapshot. value } ' ); }); }

3.它们被打印在控制台上

Data : [{title: Mastering EJB, description: Programming Guide for J2EE}, {title: Flutter in Action, description: Complete Programming Guide to learn Flutter}]

更新记录

  1. 单击“更新记录”按钮时,将调用updateData()方法。
void updateData(){ databaseReference .child( '1' ).update({ 'description' : 'J2EE complete Reference' }); }

2.它将标题“ Mastering EJB”的描述从“ J2EE编程指南 ”更新为“ J2EE complete参考

删除记录

  1. 单击“删除记录”按钮时,将调用deleteData()方法。
void deleteData(){ databaseReference .child( '1' ).remove(); }

2.从数据库中删除记录。

完整的代码

import 'package:flutter/material.dart' ; import 'package:firebase_database/firebase_database.dart' ; class FirebaseDemoScreen extends StatelessWidget { final databaseReference = FirebaseDatabase. instance .reference(); final databaseReference = FirebaseDatabase. instance .reference(); @override Widget build(BuildContext context) { getData(); return Scaffold( appBar: AppBar( title: Text( 'Firebase Connect' ), ), body: Center( child: Column( crossAxisAlignment: CrossAxisAlignment. stretch , children: [ @override Widget build(BuildContext context) { getData(); return Scaffold( appBar: AppBar( title: Text( 'Firebase Connect' ), ), body: Center( child: Column( crossAxisAlignment: CrossAxisAlignment. stretch , children: [ RaisedButton( child: Text( 'Create Record' ), onPressed: () { createRecord(); }, ), RaisedButton( child: Text( 'View Record' ), onPressed: () { getData(); }, ), RaisedButton( child: Text( 'Udate Record' ), onPressed: () { updateData(); }, ), RaisedButton( child: Text( 'Delete Record' ), onPressed: () { deleteData(); }, ), ], ) ), //center ); } RaisedButton( child: Text( 'View Record' ), onPressed: () { getData(); }, ), RaisedButton( child: Text( 'Udate Record' ), onPressed: () { updateData(); }, ), RaisedButton( child: Text( 'Delete Record' ), onPressed: () { deleteData(); }, ), ], ) ), //center ); } void createRecord(){ databaseReference .child( "1" ).set({ 'title' : 'Mastering EJB' , 'description' : 'Programming Guide for J2EE' }); databaseReference .child( "2" ).set({ 'title' : 'Flutter in Action' , 'description' : 'Complete Programming Guide to learn Flutter' }); } void getData(){ databaseReference .once().then((DataSnapshot snapshot) { print( 'Data : ${snapshot. value } ' ); }); } void createRecord(){ databaseReference .child( "1" ).set({ 'title' : 'Mastering EJB' , 'description' : 'Programming Guide for J2EE' }); databaseReference .child( "2" ).set({ 'title' : 'Flutter in Action' , 'description' : 'Complete Programming Guide to learn Flutter' }); } void getData(){ databaseReference .once().then((DataSnapshot snapshot) { print( 'Data : ${snapshot. value } ' ); }); } void createRecord(){ databaseReference .child( "1" ).set({ 'title' : 'Mastering EJB' , 'description' : 'Programming Guide for J2EE' }); databaseReference .child( "2" ).set({ 'title' : 'Flutter in Action' , 'description' : 'Complete Programming Guide to learn Flutter' }); } void getData(){ databaseReference .once().then((DataSnapshot snapshot) { print( 'Data : ${snapshot. value } ' ); }); } void updateData(){ databaseReference .child( '1' ).update({ 'description' : 'J2EE complete Reference' }); } void updateData(){ databaseReference .child( '1' ).update({ 'description' : 'J2EE complete Reference' }); } void deleteData(){ databaseReference .child( '1' ).remove(); } } void deleteData(){ databaseReference .child( '1' ).remove(); } }

谢谢阅读。 如果您喜欢这篇文章,请随时单击该鼓掌按钮👏,以帮助其他人找到它。

本文是与移动技术相关的系列文章的一部分。 如果您正在寻找移动应用程序开发团队来构建您的解决方案,请通过 info@47billion.com 与我们联系

From: https://hackernoon.com/how-to-use-firebase-with-flutter-2c9838d5f0d6



推荐阅读
  • 需求分析是软件生命周期中相当重要的一个阶段。根据StandishGroup对23000个项目进行的研究结果表明,28%的项目彻底失败,46%的项目超出经费预算或者超出 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了作者在开发过程中遇到的问题,即播放框架内容安全策略设置不起作用的错误。作者通过使用编译时依赖注入的方式解决了这个问题,并分享了解决方案。文章详细描述了问题的出现情况、错误输出内容以及解决方案的具体步骤。如果你也遇到了类似的问题,本文可能对你有一定的参考价值。 ... [详细]
  • 数字账号安全与数据资产问题的研究及解决方案
    本文研究了数字账号安全与数据资产问题,并提出了解决方案。近期,大量QQ账号被盗事件引起了广泛关注。欺诈者对数字账号的价值认识超过了账号主人,因此他们不断攻击和盗用账号。然而,平台和账号主人对账号安全问题的态度不正确,只有用户自身意识到问题的严重性并采取行动,才能推动平台优先解决这些问题。本文旨在提醒用户关注账号安全,并呼吁平台承担起更多的责任。令牌云团队对此进行了长期深入的研究,并提出了相应的解决方案。 ... [详细]
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 本文介绍了NetCore WebAPI开发的探索过程,包括新建项目、运行接口获取数据、跨平台部署等。同时还提供了客户端访问代码示例,包括Post函数、服务器post地址、api参数等。详细讲解了部署模式选择、框架依赖和独立部署的区别,以及在Windows和Linux平台上的部署方法。 ... [详细]
  • 我正在尝试将Firebase添加到涉及添加以下内容的现有应用程序中:classpath'com.googl ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
author-avatar
倾城不了倾了你
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有