Repository: flutter
Issue: Widget is not rebuilt correctly for voice control after states change with iOS 16
Labels: platform-ios,a: accessibility,customer: money (g3),P2,team-ios,triaged-ios

Copied from internal google issue b/271201186 - see that bug for a video of the repro case.

### Summary 

In the reproduction product, if the user says `2`, the widget should be rebuilt to show semantic label for each items in the PageView.

Note that: this is only happening on iOS 16, we can't reproduce this issue on iOS 15.

<details>
  <summary>Repro code</summary>
  
```
class TapboxA extends StatefulWidget {
  TapboxA({Key? key}) : super(key: key);
 
  @override
  _TapboxAState createState() => _TapboxAState();
}
 
class _TapboxAState extends State<TapboxA> {
  bool _active = false;
 
  final pageViewKey = GlobalKey();
  final pageController = PageController(initialPage: 0, viewportFraction: 0.15);
 
  void _handleTap() {
    setState(() {
      _active = !_active;
    });
  }
 
  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        const Spacer(),
        SizedBox(
          height: 88,
          child: _active
              ? _buildPageView(
                  context,
                )
              : Semantics(
                  label: 'PageView widget',
                  hint: 'hint',
                  button: true,
                  onTap: _handleTap,
                  excludeSemantics: true,
                  child: _buildPageView(
                    context,
                  ),
                ),
        )
      ],
    );
  }
 
  Widget _buildPageView(BuildContext context) {
    return PageView.builder(
      key: pageViewKey,
      controller: pageController,
      allowImplicitScrolling: true,
      itemCount: 20,
      itemBuilder: (_, index) => _buildItem(
        context,
        index: index,
      ),
    );
  }
 
  Widget _buildItem(
    BuildContext context, {
    required int index,
  }) {
    return Semantics(
      label: 'label',
      button: true,
      excludeSemantics: true,
      onTap: () async {
        await _animateToPage(index);
        _handleTap();
      },
      child: const Center(child: Text('text')),
    );
  }
 
  Future<void> _animateToPage(int page) {
    return pageController.animateToPage(
      page,
      duration: const Duration(milliseconds: 400),
      curve: Curves.easeInOut,
    );
  }
}class TapboxA extends StatefulWidget {
  TapboxA({Key? key}) : super(key: key);
 
  @override
  _TapboxAState createState() => _TapboxAState();
}
 
class _TapboxAState extends State<TapboxA> {
  bool _active = false;
 
  final pageViewKey = GlobalKey();
  final pageController = PageController(initialPage: 0, viewportFraction: 0.15);
 
  void _handleTap() {
    setState(() {
      _active = !_active;
    });
  }
 
  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        const Spacer(),
        SizedBox(
          height: 88,
          child: _active
              ? _buildPageView(
                  context,
                )
              : Semantics(
                  label: 'PageView widget',
                  hint: 'hint',
                  button: true,
                  onTap: _handleTap,
                  excludeSemantics: true,
                  child: _buildPageView(
                    context,
                  ),
                ),
        )
      ],
    );
  }
 
  Widget _buildPageView(BuildContext context) {
    return PageView.builder(
      key: pageViewKey,
      controller: pageController,
      allowImplicitScrolling: true,
      itemCount: 20,
      itemBuilder: (_, index) => _buildItem(
        context,
        index: index,
      ),
    );
  }
 
  Widget _buildItem(
    BuildContext context, {
    required int index,
  }) {
    return Semantics(
      label: 'label',
      button: true,
      excludeSemantics: true,
      onTap: () async {
        await _animateToPage(index);
        _handleTap();
      },
      child: const Center(child: Text('text')),
    );
  }
 
  Future<void> _animateToPage(int page) {
    return pageController.animateToPage(
      page,
      duration: const Duration(milliseconds: 400),
      curve: Curves.easeInOut,
    );
  }
}
```
</details>