More
Flutter, Google Wallet e Back4App: Tutorial per un'app di ricompense ambientali
15 min
introduzione in questo tutorial, creeremo un'app flutter che incoraggia gli utenti a intraprendere azioni ambientali, premiandoli con badge digitali e biglietti per eventi memorizzati in google wallet integreremo back4app come backend per gestire i dati degli utenti e monitorare i contributi ambientali ogni volta che un utente completa un compito, riceve un badge collezionabile o un biglietto per eventi, che può essere aggiunto al proprio google wallet per la conservazione caratteristiche gli utenti possono registrare compiti ambientali (ad es , riciclaggio, volontariato) gli utenti guadagnano badge digitali e pass per eventi in base ai loro contributi google wallet memorizza e visualizza questi beni digitali integrazione backend con back4app per monitoraggio e gestione dei dati requisiti ambiente di sviluppo flutter segui la guida all'installazione di flutter https //flutter dev/docs/get started/install account back4app registrati su back4app https //www back4app com accesso all'api di google wallet configura il tuo progetto seguendo la documentazione dell'api di google wallet https //developers google com/wallet chiavi api di google wallet genera e utilizza le chiavi api necessarie per accedere a google wallet passo 1 configurare back4app come backend 1 1 crea un progetto back4app accedi a back4app https //www back4app com/ e crea un nuovo progetto crea una classe parse chiamata environmentalactions con i seguenti campi username (string) il nome utente dell'utente actiontype (string) tipo di azione ambientale (es riciclaggio, piantumazione di alberi) timestamp (datetime) la data in cui l'utente ha completato l'azione rewardissued (boolean) se è stata emessa una ricompensa per l'azione 1 2 aggiungi dati di esempio a back4app puoi aggiungere alcuni record di esempio per scopi di test, ma l'app gestirà l'inserimento dei dati più tardi quando gli utenti completano i compiti passo 2 inizializza il parse sdk in flutter 2 1 crea un nuovo progetto flutter apri il tuo terminale e crea un nuovo progetto flutter flutter create env rewards app 2 2 aggiungi dipendenze apri il pubspec yaml file e aggiungi le dipendenze richieste dependencies flutter sdk flutter parse server sdk flutter latest version http ^0 13 3 # for networking google wallet pass latest version # example package to handle google wallet passes esegui flutter pub get per installare i pacchetti 2 3 inizializza il parse sdk nel file principale in lib/main dart , inizializza il parse sdk aggiungendo le tue credenziali back4app import 'package\ flutter/material dart'; import 'package\ parse server sdk flutter/parse server sdk flutter dart'; void main() async { widgetsflutterbinding ensureinitialized(); const keyapplicationid = 'your back4app app id'; const keyclientkey = 'your back4app client key'; const keyparseserverurl = 'https //parseapi back4app com'; await parse() initialize(keyapplicationid, keyparseserverurl, clientkey keyclientkey, autosendsessionid true); runapp(myapp()); } class myapp extends statelesswidget { @override widget build(buildcontext context) { return materialapp( title 'environmental rewards', home environmentalrewardsscreen(), ); } } sostituisci your back4app app id e your back4app client key con le tue credenziali effettive di back4app passo 3 costruire l'interfaccia utente per registrare azioni ambientali creeremo un'interfaccia utente di base che consente agli utenti di registrare le loro azioni ambientali e visualizzare le loro ricompense digitali 3 1 crea il widget environmentalrewardsscreen crea un nuovo widget in lib/environmental rewards screen dart import 'package\ flutter/material dart'; import 'package\ parse server sdk flutter/parse server sdk flutter dart'; import 'package\ intl/intl dart'; // for formatting dates class environmentalrewardsscreen extends statefulwidget { @override environmentalrewardsscreenstate createstate() => environmentalrewardsscreenstate(); } class environmentalrewardsscreenstate extends state\<environmentalrewardsscreen> { final texteditingcontroller usernamecontroller = texteditingcontroller(); string? selectedaction; bool loading = false; string? rewardmessage; final list\<string> actions = \['recycling', 'tree planting', 'volunteering']; future\<void> logaction() async { if ( usernamecontroller text isempty || selectedaction == null) { scaffoldmessenger of(context) showsnackbar(snackbar( content text('please enter a username and select an action '), )); return; } setstate(() { loading = true; }); // save action to back4app final actionobject = parseobject('environmentalactions') set('username', usernamecontroller text) set('actiontype', selectedaction) set('timestamp', datetime now()) set('rewardissued', false); final response = await actionobject save(); if (response success) { setstate(() { rewardmessage = 'action logged! check your rewards!'; }); // call google wallet api to issue a reward here await issuereward(); } else { setstate(() { rewardmessage = 'failed to log action '; }); } setstate(() { loading = false; }); } future\<void> issuereward() async { // this is where you'd integrate the google wallet api to issue a digital badge // use the google wallet sdk to generate a pass and add it to the user's wallet } @override widget build(buildcontext context) { return scaffold( appbar appbar(title text('environmental rewards')), body padding( padding const edgeinsets all(16 0), child column( children \[ textfield( controller usernamecontroller, decoration inputdecoration(labeltext 'username'), ), sizedbox(height 16), dropdownbutton\<string>( value selectedaction, hint text('select an environmental action'), items actions map((string action) { return dropdownmenuitem\<string>( value action, child text(action), ); }) tolist(), onchanged (string? newvalue) { setstate(() { selectedaction = newvalue!; }); }, ), sizedbox(height 16), elevatedbutton( onpressed loading ? null logaction, child loading ? circularprogressindicator() text('log action'), ), sizedbox(height 16), if ( rewardmessage != null) text( rewardmessage!, style textstyle(color colors green)), ], ), ), ); } } questa interfaccia utente consente all'utente di inserire il proprio nome utente selezionare un'azione ambientale registrare l'azione, che attiva il backend e emette una ricompensa utilizzando l'api di google wallet passo 4 integrazione di google wallet per l'emissione di ricompense 4 1 configurare l'api di google wallet segui la documentazione dell'api di google wallet https //developers google com/wallet per configurare l'api e ottenere le tue chiavi api 4 2 emissione di un badge digitale con google wallet nel metodo issuereward() implementerai la logica per creare un badge digitale (pass generico) e salvarlo nel google wallet dell'utente ecco una struttura di base future\<void> issuereward() async { final badgedata = { 'title' 'environmental hero', 'description' 'awarded for completing environmental actions ', // add any additional information or metadata }; // call google wallet api to generate a pass // you can use the 'google wallet pass' package or direct api calls final response = await creategooglewalletpass(badgedata); // placeholder for actual implementation if (response success) { scaffoldmessenger of(context) showsnackbar(snackbar( content text('badge issued! check your google wallet '), )); } else { scaffoldmessenger of(context) showsnackbar(snackbar( content text('failed to issue badge '), )); } } passo 5 esecuzione dell'app esegui l'app utilizzando flutter run per iniziare a registrare azioni e ricevere ricompense quando un utente registra un'azione, verrà salvata su back4app e un badge verrà emesso utilizzando l'api di google wallet conclusione questo tutorial ha mostrato come costruire un'app di ricompense ambientali utilizzando flutter , google wallet , e back4app gli utenti registrano azioni ambientali e, al termine, ricevono badge digitali o pass per eventi memorizzati nel loro google wallet questo progetto potrebbe essere ampliato con funzionalità di condivisione sociale, classifiche o anche ricompense basate sulla posizione utilizzando codici qr per ulteriori informazioni, fare riferimento a documentazione di flutter https //flutter dev/docs documentazione api di google wallet https //developers google com/wallet documentazione di back4app https //www back4app com/docs