Flutter proporciona dos tipos de widgets.
- El widget sin estado
- El widget con estado
Como sugiere el nombre, los widgets con estado se componen de algunos «estados». initState() es un método que se llama cuando se crea un objeto para su widget con estado y se inserta dentro del árbol de widgets. Es básicamente el punto de entrada para los Stateful Widgets. El método initState() se llama solo una vez y se usa generalmente para inicializar las variables previamente definidas del widget con estado. El método initState() se anula principalmente porque, como se mencionó anteriormente, se llama solo una vez en su vida útil. Si desea activarlo nuevamente, debe cambiar el control a una pantalla completamente nueva y a un nuevo estado. Entendámoslo más claramente con el siguiente ejemplo.
Proyecto de ejemplo
Cree una clase llamada «stateExample» que amplíe un Stateful Widget.
class stateExample extends StatefulWidget { @override State<stateExample> createState() => _stateExampleState(); } class _stateExampleState extends State<stateExample> { @override Widget build(BuildContext context) { return Container(); } }
Bajo @override del Stateful Widget llame al método initState()
@override initState() { print("initState Called"); }
Complete el resto del código según sus requisitos.
Implementación:
Dart
import 'package:flutter/material.dart'; void main() { runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar( title: const Text( "GeeksforGeeks", ), backgroundColor: Colors.green, ), body: const stateExample(), ), ); } } // ignore: camel_case_types class stateExample extends StatefulWidget { const stateExample({Key? key}) : super(key: key); @override State<stateExample> createState() => _stateExampleState(); } // ignore: camel_case_types class _stateExampleState extends State<stateExample> { @override // ignore: must_call_super initState() { // ignore: avoid_print print("initState Called"); } @override Widget build(BuildContext context) { // ignore: avoid_print print(" Build method called"); return Center( child: ElevatedButton( style: ButtonStyle( backgroundColor: MaterialStateProperty.all(Colors.green)), onPressed: () {}, child: const Text( 'initState Demonstration', style: TextStyle(color: Colors.white), ), ), // RaisedButton widget is deprecated and should not be used anymore. // Use ElevatedButton instead. // child: RaisedButton( // color: Colors.green, // elevation: 10, // onPressed: () {}, // child: const Text( // 'initState Demonstration', // style: TextStyle(color: Colors.white), // ), // ), ); } }
Producción:
Al ejecutar la aplicación por primera vez, encontrará que el método initState se activa, es decir, se llama primero y luego, el control ingresa al contexto de compilación.
Pero, si lo ejecuta de nuevo invocando la clase, encontrará que el método initState() se anula y la siguiente instrucción de impresión llegará a formar el contexto de compilación.
Publicación traducida automáticamente
Artículo escrito por rharshitaaa21 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA