Stack Overflow на русском Asked by Kizat Suleimenov on January 8, 2021
если я вызываю setState
то, как я понял, меняется полностью состояние виджета, а есть ли метод который меняет только состояние одного переменного, так как я в будущем планирую запустить цикл который ежесекундно (или даже меньше) будет менять одну переменную, в этом случае думаю не стоит менять состояние полностью виджета? если есть то подскажите как это сделать?
если я вызываю setState то, как я понял, меняется полностью состояние виджета
Да, правильно поняли.
У вас есть 2 варианта решения вашего вопроса:
Создать отдельный StatefulWidget
с циклом. Тогда при setState
(внутри этого виджета) будет обновляться именно этот виджет.
Использовать 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
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP