9

例外を解決する方法 -

未処理の例外: 'package:flutter/src/widgets/page_view.dart': 失敗したアサーション: 179 行目 pos 7: 'positions.isNotEmpty': PageView が構築される前に PageController.page にアクセスできません。

注:- 2 つの画面で使用しましたが、画面を切り替えると上記の例外が表示されます。

@override
  void initState() {
    super.initState();
      WidgetsBinding.instance.addPostFrameCallback((_) => _animateSlider());
  }

  void _animateSlider() {
    Future.delayed(Duration(seconds: 2)).then(
      (_) {
        int nextPage = _controller.page.round() + 1;

        if (nextPage == widget.slide.length) {
          nextPage = 0;
        }

        _controller
            .animateToPage(nextPage,
                duration: Duration(milliseconds: 300), curve: Curves.linear)
            .then(
              (_) => _animateSlider(),
            );
      },
    );
  }
4

3 に答える 3

10

次のように Listener を使用できると思います。

int _currentPage;

  @override
  void initState() {
    super.initState();
    _currentPage = 0;
    _controller.addListener(() {
      setState(() {
        _currentPage = _controller.page.toInt();
      });
    });
  }
于 2020-10-28T02:54:56.527 に答える