iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 9
2
Mobile Development

Flutter App 開發實戰系列 第 9

專案的好幫手 Firebase |使用篇 [DAY 9]

  • 分享至 

  • twitterImage
  •  

寫一寫覺得篇幅太大所以拆成兩篇來用完成,有什麼問題也可以直接留言詢問,那就讓我們開始對 firebase 的 database 做基本的操作吧。
如果還沒部署成功的可以到上一篇查看 --> 專案的好幫手 Firebase |部署篇


  • Firebase 操作前都必須先初始化可以參考上一篇最後一個部分

基本操作

先創建一個 User class

class User{
  String id ;
  String name ;
  User(this.id , this.name);
  
  //可以利用 json 來初始化
  User.fromJson(Map<String ,dynamic> json){
    id = json['id'];
    name = json['name'];
  }
  
  //轉換成 json 格式
  Map<String, dynamic> toJson(){
    return {
      "id":id,
      "name" : name
    };
  }
  
}

new a file FirebaseService.dart

import 'package:firebase_database/firebase_database.dart';

class FirebaseService{
   //取得 database 實例
   FirebaseDatabase _database = FirebaseDatabase.instance ; 
   //等等  add , update , remove , query 的方法都放在這 
}

新增

//FirebaseService.dart
void addUser(User user){
    //child 為路徑
    _database.reference()
    .child("users")
    .child(user.id)
    .set(user.toJson()) ;
}

使用

User user = User("0" , "Leo") ;
FirebaseService().addUser(user) ;

就可以在 database 上看到即時更新
https://ithelp.ithome.com.tw/upload/images/20200909/2013012707xAUaOfA0.png

修改

//FirebaseService.dart
void updateUser(User user){
    _database.reference()
    .child("users")
    .child(user.id)
    .update(user.toJson()) ;
}

使用

User user = User("0" , "Leo") ;
user.name =  "leolun";
FirebaseService().updateUser(user) ;

查詢

//FirebaseService.dart
void searchUser(String name) async{
    
    // orderByChild("name").equalTo 使用name排序後找出對應的 name 
    Query query =_database.reference()
    .child("users")
    .orderByChild("name")
    .equalTo(name) ;
    
    DataSnapshot dataSnapshot =  await query.once() ;
    print(dataSnapshot.key);
    print(dataSnapshot.value);
  }

使用

    User user = User("1" , "Tom") ;
    User user2 = User("0" , "Leo") ;
    FirebaseService().addUser(user) ;
    FirebaseService().addUser(user2) ;
    FirebaseService().searchUser("Leo");

刪除

//FirebaseService.dart
void removeUser(User user){
   _database.reference().child("users").child(user.id).remove() ;
}

使用

User user = User("0" , "leolun") ;
FirebaseService().removeUser(user) ;

Firebase 的實時更新可以前往-->專案的好幫手 Firebase |補充篇


上一篇
專案的好幫手 Firebase |部署篇 [DAY 8]
下一篇
專案的好幫手 Firebase |補充篇 [DAY 10]
系列文
Flutter App 開發實戰30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言