Флаттер: результат не получает новейшего значения после увеличения при тестировании виджета

#flutter #dart #testing #widget

Вопрос:

У меня возникла проблема при попытке выполнить тестирование моего пользовательского виджета. Это может быть простая проблема, но я не понял, что произошло. У меня есть кнопка количества с помощью кнопки увеличения и уменьшения, но я, похоже, не могу обновить текстовый результат. Я даже печатаю результат количества и имитирую 2 раза нажатие на кнопку увеличения. результат, который я напечатал, начинается с 1 и заканчивается на 3, но параметр qty on result в моем пользовательском виджете по-прежнему отображается только 1. вот сообщение о результате:

 1
2
3
(Text-[<'res'>]("1", inherit: true, color: Color(0xffffffff), size: 20.0, dependencies: [MediaQuery, DefaultTextStyle]))
 

мой пользовательский код виджета кнопки кол-во:

 
class AddQty extends StatelessWidget {
  Key? widgetKey;
  Key? incrementKey;
  Key? decrementKey;
  Key? resultKey;
  final String buttoncolor;
  final int resu<
  final VoidCallback? incrementFunction;
  final VoidCallback? decrementFunction;
  final double spacing;
  AddQty(
      {
        this.widgetKey,
        this.result = 0,
      this.buttoncolor = "#ffffff",
      this.incrementFunction,
      this.decrementFunction,
      this.spacing = 0,
      this.incrementKey,
      this.decrementKey,
      this.resultKey});
  // CounterBloc bloc = CounterBloc();
  @override
  Widget build(BuildContext context) {
    return Row(
      key: widgetKey,
      children: <Widget>[
        GestureDetector(
          key: decrementKey,
          onTap: decrementFunction,
          child: Container(
            margin: EdgeInsets.only(right: 10),
            padding: EdgeInsets.all(8),
            child: Icon(
              Icons.remove,
              size: 17,
            ),
            decoration: BoxDecoration(
              color: HexColor(buttoncolor),
              borderRadius: BorderRadius.circular(25),
            ),
          ),
        ),
        SizedBox(width: spacing,),
        Text(
          '${result}',
          key: resultKey,
          style: TextStyle(fontSize: 20, color: Colors.white),
        ),
        SizedBox(width: spacing,),
        GestureDetector(
          key: incrementKey,
          onTap: incrementFunction,
          child: Container(
            margin: EdgeInsets.only(left: 10),
            padding: EdgeInsets.all(8),
            child: Icon(
              Icons.add,
              size: 17,
            ),
            decoration: BoxDecoration(
              color: HexColor(buttoncolor),
              borderRadius: BorderRadius.circular(25),
            ),
          ),
        ),
      ],
    );
  }
}
 

мой тестовый код:

 group("Button Testing Widget", () {
    testWidgets(
      "Should return init of 1 and return 2 after incremented and return 1 after decremented",
      (WidgetTester tester) async {
        int qty = 1;
        void increment() => qty  ;
        void decrement() => qty--;
        await tester.pumpWidget(MaterialApp(
            home: AddQty(
          incrementFunction: () {increment();},
          incrementKey: Key('inc'),
          result: qty,
              resultKey: Key('res'),
          decrementKey: Key('dec'),
          decrementFunction: () {decrement();},
        ),),);
        final Finder fab = find.byKey(Key('inc'));
        print(qty);
        await tester.tap(fab);
        await tester.pumpAndSettle();
        print(qty);
        await tester.tap(fab);
        await tester.pumpAndSettle();
        print(qty);
        print(find.byKey(Key('res')).evaluate());
      },
    );
  });