Метод createState
Метод createState класса StatefulWidget вызывается один раз, когда элемент впервые попадает в дерево. Возвращаемый State живёт дольше, чем конфигурация виджета.
Синтаксис
State<T> createState()
Пример
Давайте вернём приватный State из createState:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: Center(
child: ToggleLabel(),
),
),
),
);
}
class ToggleLabel extends StatefulWidget
{
const ToggleLabel({super.key});
@override
State<ToggleLabel> createState() => _ToggleLabelState();
}
class _ToggleLabelState extends State<ToggleLabel>
{
bool on = false;
@override
Widget build(BuildContext context)
{
return Text(on ? 'abcde' : '12345');
}
}
На экране createState создаст State, который покажет '12345'.
Пример
Давайте переключим текст через setState:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: Center(
child: ToggleLabel(),
),
),
),
);
}
class ToggleLabel extends StatefulWidget
{
const ToggleLabel({super.key});
@override
State<ToggleLabel> createState() => _ToggleLabelState();
}
class _ToggleLabelState extends State<ToggleLabel>
{
bool on = false;
@override
Widget build(BuildContext context)
{
return ElevatedButton(
onPressed: () => setState(() => on = !on),
child: Text(on ? 'abcde' : '12345'),
);
}
}
На экране кнопка будет менять подпись между двумя строками.