Como sei quando devo utilizar o parâmetro context ? E para que ele serve?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Como sei quando devo utilizar o parâmetro context ? E para que ele serve?
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
InheritedWidgetCom 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.