【问题标题】:How to simulate disposing widget in flutter test?如何在颤振测试中模拟处理小部件?
【发布时间】:2021-07-13 12:45:56
【问题描述】:
此方法将调用无状态小部件内部的 init 函数。
但是如何模拟调用 dispose 函数呢?
var widget = StatelessWidgetExample();
await tester.pumpWidget(widget);
我还尝试模拟从树中移除。
await tester.pumpWidget(widget);
await tester.pumpWidget(Container());
但是没用
【问题讨论】:
标签:
flutter
dart
flutter-test
【解决方案1】:
是这样的吗
var key2 = Key('a');
var testStateful = _TestStateful(
key: key2,
child: TestInitDispose(),
);
await tester.pumpWidget(testStateful);
/// will call init
var state = tester.firstState<__TestStatefulState>(find.byKey(key2));
state.remove();
await tester.pump();
/// will call dispose
});
...
class _TestStateful extends StatefulWidget {
final Widget child;
const _TestStateful({Key? key, required this.child}) : super(key: key);
@override
__TestStatefulState createState() => __TestStatefulState();
}
class __TestStatefulState extends State<_TestStateful> {
bool showChild = true;
void remove() {
setState(() {
showChild = false;
});
}
@override
Widget build(BuildContext context) {
return showChild ? widget.child : Container();
}
}