setState() 能在 build() 中直接调用吗?答案是能也不能。
两种情况
来看一段简单的代码:
import 'package:flutter/material.dart';
class TestPage extends StatefulWidget {const TestPage({super.key});@overrideState<TestPage> createState() => _State();
}
class _State extends State<TestPage> {int _count = 0;@overrideWidget build(BuildContext context) {setState(() {_count++;});return Scaffold(appBar: AppBar(title: const Text('测试页面'),),body: Center(child: Text('$_count',style: const TextStyle(fontSize: 24),),),);}
}
跑起来后代码不会报错,Text(‘$_count’) 显示结果是 1,看来 build() 调用 setState() 没啥问题呀。小改一下,来看看这个:
class _State extends State<TestPage> {int _count = 0;@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: const Text('测试页面'),),body: Center(child: Builder(builder: (context) {setState(() {_count