Ako integrovať Disk Google do aplikácie Flutter?

Blog

Úvod

V tomto článku sa naučíme, ako integrovať Disk Google do aplikácie Flutter. Naučíme sa, ako pomocou Flutteru môžeme nahrávať, uvádzať v zozname a sťahovať súbory na disk Google. Na autentifikáciu som použil prihlásenie Google Plus a potom som vstúpil na disk Google. Študoval som API služby Google Drive, ale zistil som, že tento spôsob je na konci lepší a natívny. Začnime teda s implementáciou Disku Google vo Flutteri.



Výkon








Kroky

Krok 1



Prvým a najzákladnejším krokom je vytvorenie novej aplikácie vo Flutteri. Ak ste začiatočník, môžete sa pozrieť na môj blog Vytvorte prvú aplikáciu vo Flutteri . Vytvoril som aplikáciu s názvom flutter_gdrive.






Krok 2

Integrujte prihlásenie Google Plus do svojho projektu. Napísal som o tom článok. Prosím skontrolovať to .

Krok 3

Keď ste už vytvorili projekt Google Firebase, je načase povoliť rozhranie Google Drive API z Konzoly pre vývojárov Google. Upozorňujeme, že v konzole Google Developer Console musíte vybrať ten istý projekt, aký ste vytvorili v službe Google Firebase. V mojom prípade je to Flutter Gdrive. Pozrite sa na nižšie uvedené snímky obrazovky, aby ste tomu porozumeli viac.

Krok 4

Teraz pridáme závislosti na implementácii operácií na Disku Google (Google API, vybrať súbor na nahranie a stiahnutie súboru v mobilnom úložisku). Skontrolujte nižšie uvedené závislosti.

dependencies: flutter: sdk: flutter cupertino_icons: ^0.1.2 firebase_auth: ^0.15.2 google_sign_in: ^4.1.0 flutter_secure_storage: ^3.3.1+1 googleapis: ^0.54.0 googleapis_auth: ^0.2.11 path_provider: ^1.5.1 file_picker: ^1.3.8

Krok 5

Musíme definovať povolenie na čítanie a zápis súborov. V súbore AndroidManifest na to definujte nasledujúce povolenia. (android/app/src/main/AndroidManifest.xml)

Krok 6

Teraz implementujeme nahrávanie súborov, zoznam a prihlásenie na stiahnutie programovo do súboru main.dart. Nasleduje trieda na mapovanie poverení Google Auth na poverenia GoogleHttpClient.

windows 10 firefox nereaguje
class GoogleHttpClient extends IOClient { Map _headers; GoogleHttpClient(this._headers) : super(); @override Future send(http.BaseRequest request) => super.send(request..headers.addAll(_headers)); @override Future head(Object url, {Map headers}) => super.head(url, headers: headers..addAll(_headers)); }

Krok 7

Nasleduje implementácia programu Google plus prihlásenie, odhlásenie, nahrávanie súborov na disk Google, sťahovanie súborov a zoznam nahraných súborov na disku Google.

Prihlásenie do Google:

Future _loginWithGoogle() async { signedIn = await storage.read(key: 'signedIn') == 'true' ? true : false; googleSignIn.onCurrentUserChanged .listen((GoogleSignInAccount googleSignInAccount) async { if (googleSignInAccount != null) { _afterGoogleLogin(googleSignInAccount); } }); if (signedIn) { try { googleSignIn.signInSilently().whenComplete(() => () {}); } catch (e) { storage.write(key: 'signedIn', value: 'false').then((value) { setState(() { signedIn = false; }); }); } } else { final GoogleSignInAccount googleSignInAccount = await googleSignIn.signIn(); _afterGoogleLogin(googleSignInAccount); } } Future _afterGoogleLogin(GoogleSignInAccount gSA) async { googleSignInAccount = gSA; final GoogleSignInAuthentication googleSignInAuthentication = await googleSignInAccount.authentication; final AuthCredential credential = GoogleAuthProvider.getCredential( accessToken: googleSignInAuthentication.accessToken, idToken: googleSignInAuthentication.idToken, ); final AuthResult authResult = await _auth.signInWithCredential(credential); final FirebaseUser user = authResult.user; assert(!user.isAnonymous); assert(await user.getIdToken() != null); final FirebaseUser currentUser = await _auth.currentUser(); assert(user.uid == currentUser.uid); print('signInWithGoogle succeeded: $user'); storage.write(key: 'signedIn', value: 'true').then((value) { setState(() { signedIn = true; }); }); }

Odhlásenie Google

void _logoutFromGoogle() async { googleSignIn.signOut().then((value) { print('User Sign Out'); storage.write(key: 'signedIn', value: 'false').then((value) { setState(() { signedIn = false; }); }); }); }

Odovzdajte súbor na Disk Google

_uploadFileToGoogleDrive() async { var client = GoogleHttpClient(await googleSignInAccount.authHeaders); var drive = ga.DriveApi(client); ga.File fileToUpload = ga.File(); var file = await FilePicker.getFile(); fileToUpload.parents = ['appDataFolder']; fileToUpload.name = path.basename(file.absolute.path); var response = await drive.files.create( fileToUpload, uploadMedia: ga.Media(file.openRead(), file.lengthSync()), ); print(response); }

Zoznam nahraných súborov na Disk Google

Future _listGoogleDriveFiles() async { var client = GoogleHttpClient(await googleSignInAccount.authHeaders); var drive = ga.DriveApi(client); drive.files.list(spaces: 'appDataFolder').then((value) { setState(() { list = value; }); for (var i = 0; i

Stiahnite si súbor z Disku Google

Future _downloadGoogleDriveFile(String fName, String gdID) async { var client = GoogleHttpClient(await googleSignInAccount.authHeaders); var drive = ga.DriveApi(client); ga.Media file = await drive.files .get(gdID, downloadOptions: ga.DownloadOptions.FullMedia); print(file.stream); final directory = await getExternalStorageDirectory(); print(directory.path); final saveFile = File('${directory.path}/${new DateTime.now().millisecondsSinceEpoch}$fName'); List dataStore = []; file.stream.listen((data) { print('DataReceived: ${data.length}'); dataStore.insertAll(dataStore.length, data); }, onDone: () { print('Task Done'); saveFile.writeAsBytes(dataStore); print('File saved at ${saveFile.path}'); }, onError: (error) { print('Some Error'); }); }

Krok 8

Skvelé - integrácia služby Disk Google vo Flutteri skončila. Pozrite sa, prosím, na môj úplný zdrojový kód v Gite.

Vo vyššie uvedenom zdrojovom kóde nie je súbor google-services.json zahrnutý, musíte si nastaviť vlastný projekt firebase a vložiť ho do priečinka Android-> app.

Záver

Naučili sme sa, ako integrovať Disk Google do Flutteru a vykonávať operácie nahrávania, sťahovania a zoznamu.

Git Repo

#flutter #mobilné aplikácie #dart

www.youtube.com

Ako integrovať Disk Google do aplikácie Flutter?

Naučte sa integrovať Disk Google do aplikácie Flutter a vykonávať operácie nahrávania, sťahovania a zoznamu súborov. Na overenie sme použili prihlásenie Google Plus a potom sme pristúpili na disk Google. Študoval som API služby Google Drive, ale zistil som, že tento spôsob je na konci lepší a natívny. Začnime teda s implementáciou Disku Google vo Flutteri.