【问题标题】: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();
      }
    }
    

    【讨论】:

    猜你喜欢
    • 2021-07-22
    • 1970-01-01
    • 2021-05-21
    • 2021-09-25
    • 1970-01-01
    • 2018-06-21
    • 2022-08-11
    • 2019-06-13
    • 2019-08-19
    相关资源
    最近更新 更多