Aleteo – initSate()

Flutter proporciona dos tipos de widgets.

  1. El widget sin estado
  2. 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:

Output

 

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *