Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

BuildContext context como e quando usar?

Como sei quando devo utilizar o parâmetro context ? E para que ele serve?

1 resposta
solução!

Segundo a documentação oficial a classe BuildContext apresenta um conjunto de métodos que podem ser usados ​​nos métodos StatelessWidget.build e nos métodos em objetos State . Como o próprio nome indica, refere-se ao contexto em que um widget específico é construído.

Se você já usou React antes, esse contexto é semelhante ao contexto do React.

De um modo geral, existem 2 casos de uso para o contexto:

1- Interação com os componentes pai (get/post). 2-Depois de renderizado na tela, obtenha o tamanho e a posição da tela. O segundo ponto é meio raro. Por outro lado, o primeiro ponto é usado em quase todos os lugares.

Por exemplo, quando você deseja enviar uma nova rota, você o fará

Navigator.of(context).pushNamed('myRoute').

Observe o contexto aqui. Ele será usado para obter a instância mais próxima do NavigatorStatewidget acima na árvore. Em seguida, chame o método pushNamednessa instância.

Beleza, mas quando utilizar?

O BuildContext é realmente útil quando você deseja passar dados sem precisar atribuí-los manualmente a todos os widgets. Configurações por exemplo; você desejará acessá-las em qualquer lugar. Mas você não deseja repassá-lo a cada construtor.

Você poderia fazer um global ou um singleton; mas quando a configuração mudar, seus widgets não serão reconstruídos automaticamente.

Nesse caso, você usa

 InheritedWidget

Com ele, você poderia escrever o seguinte:

class Configuration extends InheritedWidget {
  final String myConf;

  const Configuration({this.myConf, Widget child}): super(child: child);

  @override
  bool updateShouldNotify(Configuration oldWidget) {
    return myConf != oldWidget.myConf;
  }
}

E chamá -lo da seguinte maneira:

void main() {
  runApp(
    new Configuration(
      myConf: "Hello world",
      child: new MaterialApp(
        // usual stuff here
      ),
    ),
  );
}

Agora em qualquer lugar dentro do seu aplicativo, você pode acessar essas configurações usando o BuildContext. Fazendo

final configuration = context.inheritFromWidgetOfExactType(Configuration);

E ainda mais interessante é que todos os widgets que chamam inheritFromWidgetOfExactType(Configuration)serão reconstruídos automaticamente quando as configurações forem alteradas.