Flutter - Dropdown<List> from SQFLITE Database - No List on screen, only after hot-Reload

Asked

Viewed 38 times

0

Guys, I have this problem and I don’t know how to fix it.

I have a method list await, but my screen does not wait to load the list to list, only when I update with hot-Reload, the screen works.

My method async:

ListaRefeitorio? _selecione;
List<ListaRefeitorio> _refeitorios = <ListaRefeitorio>[];
RefeitorioController controller = new RefeitorioController();

void initState(){
super.initState();
_listarRefeitorios();}

_listarRefeitorios() async {
    _refeitorios = await NxtDatabase.instance.readAllListaRefeitorio();
    if (_refeitorios.length > 0) {
      _selecione = _refeitorios[0];
    } else {
      await controller.listarRefeitorio();
      _refeitorios = await NxtDatabase.instance.readAllListaRefeitorio();
    }
  }

My canvas:

  Widget build(BuildContext context) {
return Scaffold(
    appBar: AppBarControleAcessoWidget("Refeitório"),
    body: Column(
      children: [
        SizedBox(height: 30),
        Container(
          child: Center(
            child: Padding(
              padding: const EdgeInsets.all(8.0),
              child: Container(
                padding: EdgeInsets.only(left: 16, right: 16),
                decoration: BoxDecoration(
                  border:
                      Border.all(color: AppColors.chartSecondary, width: 1),
                  borderRadius: BorderRadius.circular(15),
                ),
                child: DropdownButton<ListaRefeitorio>(
                  hint: Text("Selecione Refeitório"),
                  dropdownColor: AppColors.white,
                  icon: Icon(Icons.arrow_drop_down),
                  iconSize: 36,
                  isExpanded: true,
                  underline: SizedBox(),
                  style: TextStyle(
                    color: AppColors.black,
                    fontSize: 20,
                  ),
                  value: _selecione,
                  onChanged: (ListaRefeitorio? novoValor) {
                    setState(() {
                      _selecione = novoValor;
                    });
                  },
                  items: _refeitorios.map((ListaRefeitorio valueItem) {
                    return new DropdownMenuItem<ListaRefeitorio>(
                      value: valueItem,
                      child: new Text(valueItem.acessoPontoAcessoDescricao),
                    );
                  }).toList(),
                ),
              ),
            ),
          ),
        ),
        Container(),
        Expanded(
          child: GridView.count(
            crossAxisSpacing: 12,
            mainAxisSpacing: 12,
            crossAxisCount: 2,
            children: [
              Container(
                child: SizedBox.expand(
                  child: FlatButton(
                    child: CardsWidget(
                      label: "Ler QR Code",
                      imagem: AppImages.scanQrCode,
                    ),
                    onPressed: () {
                      scanQRCode();
                    },
                  ),
                ),
              ),
              Container(
                child: SizedBox.expand(
                  child: FlatButton(
                    child: CardsWidget(
                        label: "Sincronizar Dados", imagem: AppImages.sync),
                    onPressed: () {
                      controller.sincronizar();
                      // RefeitorioService.listarRefeitorio();
                    },
                  ),
                ),
              ),
              SizedBox(height: 30),
              Text("Resultado"),
              Text(QRCode),
              Text(DataHora),
              Text(_selecione.toString()),
            ],
          ),
        ),
      ],
    ));
 }
  • Run a test with fake data, example Future getData() async {&#xA; await new Future.delayed(const Duration(seconds: 5));&#xA; setState(() {&#xA; _data = [&#xA; {"title": "one"},&#xA; {"title": "two"},&#xA; ];&#xA; });&#xA;} Source: https://stackoverflow.com/questions/50527439/setstate-is-not-working-in-async-calls-in-flutter

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.