我的窗口小部件中有一个文本字段。当我从服务器获取一些更新时,我想刷新它。现在,我
setState(() {
_msg = "new message";
});
,它将重建我的整个小部件。我想做
_msg.set("new message");
它应该在_msg小部件内调用setState并仅重建_msg。
有没有办法做到这一点?
答案 0 :(得分:0)
确保您使用的是有状态的小部件。这将允许您使用setState((){})
更新小部件状态。
调用setState((){})
时,它将重建其中的有状态窗口小部件。整个小部件将得到重建。不用担心,再次重建整个窗口小部件。例如:
@override
Widget build(BuildContext context) { .... will get rebuilt ....}
看起来_msg是字符串类型。如果要更新字符串文本,则调用setState((){})
将实现此目标。这是一个简单的示例,您可以在其中看到AppBar标题中的文本字段以及通过打印的控制台中的更改。快乐的编码。
import 'package:flutter/material.dart';
class MyWidget extends StatefulWidget {
@override
_MyWidgetState createState() => _MyWidgetState();
}
class _MyWidgetState extends State<MyWidget> {
String _msg = "first message";
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('MyWidget: _msg = $_msg'),
),
backgroundColor: Colors.white,
floatingActionButton: FloatingActionButton(onPressed: (){
print('before setState _msg = $_msg');
setState(() {
_msg = 'second message';
print('after setState _msg = $_msg');
});
}),
);
}
}