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