Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida de atribuição.

Olá, boa tarde. Minha dúvida é saber a diferença entre declarar variável, seria abaixo do builder ou acima ? exemplo:

class UserListState extends State { ** int currentindex = 0; ** // aqui ???????????? @override ** Widget build(BuildContext context)** { ** final users = DUMPY_USERS; // ou aqui ???? ** final screens = [ ListView.builder( itemBuilder: (context, index) => UserTile(users.elementAt(index)), // separatorBuilder: (BuildContext context, int index) => const Divider( // color: Colors.white, // ), itemCount: users.length)....

2 respostas
solução!

Bom dia Francisco, não consegui identificar o código, é de um projeto pessoal seu? Nesse caso eu sugiro que compartilhe ele completo com a gente para não termos nenhuma duvida ou erro indesejado!

Quanto a sua duvida -> Quando criamos uma variável dentro do builder: Sempre que esse Widget for Buildado a variável vai retornar ao seu valor inicial ( ou seja, sempre que rolar um setState, uma atualização na tela sua variável currentIndex vai voltar a valer 0) e daí depende do que você quer fazer com esssa variável... Se ela precisar salvar os valores e manter essas informações quando a tela esta sendo rebuildada, melhor não instanciar/criar ela dentro do builder!

Quando criamos uma variável fora do builder No caso do seu código, pelo que eu entendi (novamente com apenas parte do código novo eu posso estar alheio a informações importantes), você criou o currentIndex = 0 no inicio do WIdget, antes de ele ser de fato construido/buildado, isso indica que sua variável só será alterada se o Widget for instanciado ( normalmente quando navegamos entre telas) e não quando o método build for chamado! Assim você garante o valor do seu currentIndex independente de uma atualização/rebuild!

Obrigado, mestre.