Ú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.
#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.