2022年8月2日 星期二

Flutter學習-firebase

 一、使用firebase進行帳號及密碼登入功能

(一)首先你要申請開啟一個firebase的專案

(1)申請完firebase後,創建專案名稱

(2)專案申請完後,點選Authentication,由右邊點選開啟電子郵件/密碼功能

其餘請參考下面的網頁說明

https://medium.com/@auwit0205/flutter-firebaseauth%E4%BD%BF%E7%94%A8-7f48ff433ec9



如果你是要啟用利用google帳號密碼登入可以參考下面的網頁說明

(1)申請完firebase後,創建專案名稱

(2)專案申請完後,點選Authentication,由右邊點選google啟用

 其餘請參考下列的網頁說明。

(1)https://ithelp.ithome.com.tw/articles/10217950

(2)https://github.com/Daviswww/triathlon_flutter/tree/master/day16


要使用firebase的帳號登入功能,首先要將以下的套件加入pubspec.yaml這個檔案中。



二、帳號申請



三、讀取firebase中的firestore資料

(1)在寫程式之前,要先於pubspec.yaml檔案中加入以下套件 

dependencies: 
cupertino_icons: ^1.0.2
get: 4.6.5
flutter:
sdk: flutter
firebase_core: ^2.4.1
firebase_auth: ^4.2.5
cloud_firestore: ^4.3.1

(1-1)firebase_core套件:firebase_coreFlutterFirebaseAPI使FirebaseFirebase送。基本上要使用firebase的功能都需要先安裝這個套件。

pub位址:https://pub.dev/packages/firebase_core

(1-2)firebase_auth:如果要配合登入功能,要安裝firebase_auth,以便作身份的認證。Firebase Authentication可以提供戶帳

pub位址:https://pub.dev/packages/firebase_auth

(1-3)cloud_firestore:因為是要使用firestore資料連結,因此要安裝cloud_firestore,Cloud FirestoreFirebaseNoSQLFlutter

pub位址:https://pub.dev/packages/cloud_firestore


如果要使用要了解其它的套件下載位置及功能可以點此連結:點我


(2)加入套件後,就可以開始寫程式了。

首先要在main()這個入口的程式裡,在runApp()前,加入將功能綁定初始化,WidgetsFlutterBinding.ensureInitialized();

而後再將Firebase元件初始化,加入

await Firebase.initializeApp();

因為Firebase連接需要時間,所以需採取了異步的方法,因此在main的後面,要加入async告知這個函數要以異步的方法方去處理。完整的寫法如下:

Futuer<void> main() async {
//將程式與winget進行保證初始化的綁定
WidgetsFlutterBinding.ensureInitialized();
//Firebase的元件初始化
await Firebase.initializeApp();
runApp(
//這裡使用GetX套件,因此此處為GetMaterialApp,一般為MaterialApp()
GetMaterialApp(
//專案名稱
title: "Application",
//專案的首頁
initialRoute: AppPages.initial,
//路由設定
getPages: AppPages.routes,
//flutter上面的debugBanner取消掉
debugShowCheckedModeBanner: false,
),
);
}

基本上就是加入這兩行,而這兩行的位置要在runApp()前,以便確定程式的綁定和初始化能成功,否則程式會報錯。
 //將程式與winget進行保證初始化的綁定
WidgetsFlutterBinding.ensureInitialized();
//Firebase的元件初始化
await Firebase.initializeApp();


四、使用firebase存取資料

(1)建置firebase資料庫及一些基礎的設定

https://www.bilibili.com/video/BV1Fb411M72x/?spm_id_from=333.788.recommend_more_video.-1&vd_source=fa9081c24751e12d42048a4d68c83d90

(2)讀出及存入firebase中的firestore資料

https://www.bilibili.com/video/BV1wb411M757/?vd_source=fa9081c24751e12d42048a4d68c83d90

https://www.youtube.com/watch?v=ErP_xomHKTw

flutter 連接firestore教學。

https://www.youtube.com/watch?v=WuYOGBEOEOo  

Flutter Firebase Firestore CRUD Operations | Create, Read, Update & Delete | 2022

https://www.youtube.com/watch?v=n1PM9XcYD5s&t=667s

將 Firebase 添加到您的 Flutter 應用

https://firebase.google.com/docs/flutter/setup?platform=ios

 

查找SHA-1碼的方法:https://acao0429.blogspot.com/2023/01/sha-1.html


google帳號登入

https://ithelp.ithome.com.tw/articles/10249527


管理更新使用者資料的方法

https://firebase.google.com/docs/auth/flutter/manage-users?hl=zh-cn


以下為可能出錯的設定更改方式  ,參考:

(1)android版本不符合規定

https://stackoverflow.com/questions/55591958/flutter-firestore-causing-d8-cannot-fit-requested-classes-in-a-single-dex-file


在更改 app/build.grade時遇到

Cannot resolve symbol 'GradleException' 及Cannot resolve symbol 'Properties' 錯誤的處理方法

顯示錯誤是因為 Flutter 不是用 Gradle 實現的。這意味著 Gradle 不是為 Flutter 構建的,而只是為 Java/Kotlin 構建的。更正方法如下:

https://github.com/flutter/flutter/issues/29608

如果需要更改minSdkVersion的作法如下:

https://stackoverflow.com/questions/52060516/flutter-how-to-change-android-minsdkversion-in-flutter-project


https://stackoverflow.com/questions/68079030/how-to-use-firestore-withconverter-in-flutter 

firestore 2.0使用說明


解決firebase web啟動問題

https://stackoverflow.com/questions/70320263/the-term-flutterfire-is-not-recognized-as-the-name-of-a-cmdlet-function-scri

沒有留言:

張貼留言