FutureBuilder atualizando lista sempre que clico no TextField #195
Unanswered
loulouizz
asked this question in
Perguntas e Respostas
Replies: 1 comment
-
BuildarListaProdutos é um método que retorna um Widget. Ao invés de fazer isso, crie um StatefulWidget e no método build dele você retorna o seu FutureBuilder, ou seja, transforme seu método em um widget separado. class BuildarListaProdutos extends StatefulWidget {
const BuildarListaProdutos(this.seAtivo, this.pesquisa, {super.key});
final String seAtivo;
final String pesquisa;
@override
State<BuildarListaProdutos> createState() => _BuildarListaProdutosState();
}
class _BuildarListaProdutosState extends State<BuildarListaProdutos> {
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: ProdutoController().getProdutosFromDB(widget.pesquisa, widget.seAtivo),
builder: (context, snapshot) {
List<ProdutoModel>? produtos = snapshot.data?.cast<ProdutoModel>();
switch (snapshot.connectionState) {
case ConnectionState.none:
return const Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
CircularProgressIndicator(),
Text('Carregando'),
],
);
case ConnectionState.waiting:
return const Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
CircularProgressIndicator(),
Text('Carregando'),
],
);
case ConnectionState.active:
return const Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
CircularProgressIndicator(),
Text('Carregando'),
],
);
case ConnectionState.done:
if (snapshot.hasData && produtos != null) {
if (produtos.isNotEmpty) {
return ListView.builder(
itemCount: produtos.length,
itemBuilder: (BuildContext context, int index) {
final ProdutoView produto = ProdutoView(produto: produtos[index]);
return produto;
},
);
}
}
return const Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Icon(Icons.info_sharp, size: 100),
Text('Não há nada no banco de dados', style: TextStyle(fontSize: 20)),
],
);
}
},
);
}
} |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Estou fazendo uma tela de pesquisa de produtos usando NestedScrollView para separar em 2 listas: A de produtos ativos e inativos. O que acontece é que quando clico no TextField localizado na bottomNavigationBar, o teclado sobe e a lista é atualizada, porém eu não gostaria que sempre que o teclado subisse ou saísse da tela, a lista fosse recarregada, somente no "onChanged" do textField.
Segue o código abaixo:
Beta Was this translation helpful? Give feedback.
All reactions