Виджеты с сохранением состояния во Flutter: примеры и код

«Ужасное трепетание», по-видимому, представляет собой комбинацию двух терминов: «Stateful» и «Flutter». Во Flutter «Stateful» относится к типу виджета, который может сохранять состояние и обновлять свой внешний вид в ответ на изменения. Если мы предполагаем, что вы ищете примеры виджетов с сохранением состояния во Flutter, я могу предоставить вам несколько примеров кода:

Пример 1: Приложение-счетчик

import 'package:flutter/material.dart';
class CounterApp extends StatefulWidget {
  @override
  _CounterAppState createState() => _CounterAppState();
}
class _CounterAppState extends State<CounterApp> {
  int _counter = 0;
  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Counter App'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'Counter:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headline4,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: Icon(Icons.add),
      ),
    );
  }
}

Пример 2. Проверка формы

import 'package:flutter/material.dart';
class FormValidationApp extends StatefulWidget {
  @override
  _FormValidationAppState createState() => _FormValidationAppState();
}
class _FormValidationAppState extends State<FormValidationApp> {
  final _formKey = GlobalKey<FormState>();
  String _name;
  void _submitForm() {
    if (_formKey.currentState.validate()) {
      _formKey.currentState.save();
      print('Name: $_name');
    }
  }
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Form Validation'),
      ),
      body: Padding(
        padding: EdgeInsets.all(20.0),
        child: Form(
          key: _formKey,
          child: Column(
            children: <Widget>[
              TextFormField(
                decoration: InputDecoration(labelText: 'Name'),
                validator: (value) {
                  if (value.isEmpty) {
                    return 'Please enter your name';
                  }
                  return null;
                },
                onSaved: (value) {
                  _name = value;
                },
              ),
              SizedBox(height: 20.0),
              RaisedButton(
                onPressed: _submitForm,
                child: Text('Submit'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

Это всего лишь два примера виджетов с сохранением состояния во Flutter. Существует гораздо больше возможностей в зависимости от ваших конкретных требований. Не забудьте импортировать необходимые пакеты Flutter для запуска этих примеров.