【发布时间】:2020-11-26 14:10:18
【问题描述】:
我有两个有状态的小部件:ParentWidget 和 ChildWidget。
ChildWidget 有一个包含容器和文本的手势检测器。当我调用 onTap 时,父级的状态(状态增加 1)会正确更新,但 setState() 不会刷新 UI。
我尝试了所有方法:全局键、继承的小部件,但没有任何效果。
有趣的是,如果我将 ChildWidget 更改为无状态,那么一切都会开始工作。任何想法都会非常有帮助。 PK
代码如下:
import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart';
class ParentWidget extends StatefulWidget {
@override
_ParentWidgetState createState() => _ParentWidgetState();
}
class _ParentWidgetState extends State<ParentWidget> {
int status = 1;
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
appBar: AppBar(
backgroundColor: Hexcolor('#1c486d'),
title: Text(
'Test',
),
),
body: ChildWidget(
child: GestureDetector(
onTap: () {
status = status + 1;
setState(() {}); // this is the problematic piece of code.
},
child: Container(
color: Colors.blue,
width: 100,
height: 100,
child: Text('PARENT:' + status.toString()),
),
),
),
);
}
}
class ChildWidget extends StatefulWidget {
final Widget child;
ChildWidget({this.child});
@override
_ChildWidgetState createState() => _ChildWidgetState(child);
}
class _ChildWidgetState extends State<ChildWidget> {
Widget child;
_ChildWidgetState(this.child);
@override
Widget build(BuildContext context) {
return child;
}
}
【问题讨论】:
-
如果我的回答有用,请采纳。谢谢。否则请告诉我。
-
您好 Genchi,感谢您的评论。我知道在这个例子中它是没用的,但这只是我正在研究的一个更复杂的“稻草人”,孩子需要有状态。
标签: flutter