a-marenkov / gsheets

A Dart library for working with Google Sheets API.
Other
79 stars 31 forks source link

How can I use streambuilder to display retrieved data? #15

Closed shashikant-saini closed 4 years ago

shashikant-saini commented 4 years ago

I am currently building an app to manage expenses. It takes time to retrieve data and to display those on widgets. I am currently using Future Builder but to use it I have to refresh my page every time for the values to appear in the scaffold. Please help me with this.

//creating a variable to store query retrieve data
name = await sheet1.values.value(column: 1, row: x);

Untitled

//Creating` a Future Builder 
 Widget nameBuilder() {
    return FutureBuilder(
        builder: (context, AsyncSnapshot) {
          if (name != null) {
            return Text(
              '$name',
              style: kDrawerTS,
            );
          } else {
            return CircularProgressIndicator();
          }
        });
  }

Untitled1

//Using the widget in Scaffold as child:
ListView(
          padding: const EdgeInsets.all(0.0),
          children: <Widget>[
            UserAccountsDrawerHeader(
              accountName: nameBuilder(),

Untitled2

a-marenkov commented 4 years ago

Hi! Thanks for checking out gsheets library!

To use StreamBuilder create StreamController and add new data once its updated.

Also consider using https://pub.dev/documentation/gsheets/latest/gsheets/WorksheetAsValues/row.html or https://pub.dev/documentation/gsheets/latest/gsheets/ValuesMapper/row.html to retrieve data in same row to reduce api calls and make application faster.

a-marenkov commented 4 years ago

Consider this issue solved.