TransWikia.com

Есть ли способ изменить только состояние переменного в StatefulWidget?

Stack Overflow на русском Asked by Kizat Suleimenov on January 8, 2021

если я вызываю setState то, как я понял, меняется полностью состояние виджета, а есть ли метод который меняет только состояние одного переменного, так как я в будущем планирую запустить цикл который ежесекундно (или даже меньше) будет менять одну переменную, в этом случае думаю не стоит менять состояние полностью виджета? если есть то подскажите как это сделать?

One Answer

если я вызываю setState то, как я понял, меняется полностью состояние виджета

Да, правильно поняли.


У вас есть 2 варианта решения вашего вопроса:

  1. Создать отдельный StatefulWidget с циклом. Тогда при setState (внутри этого виджета) будет обновляться именно этот виджет.

  2. Использовать StatefulBuilder, который по сути делает тоже самое что и 1 вариант.

Пример 2 варианта:

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    int counter = 0;

    return Scaffold(
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            StatefulBuilder(
              builder: (BuildContext context, StateSetter setState) => Column(
                children: <Widget>[
                  Text(counter.toString()),
                  RaisedButton(
                    onPressed: () {
                      setState(() {
                        counter++;
                      });
                    },
                  ),
                ],
              ),
            ),
          ],
        ),
      ),
    );
  }
}

Correct answer by MiT on January 8, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP