dart - フラッターで左右のスライドで PageView の再構築を停止する方法

okwaves2024-01-25  8

左右のスライドで PageView の再構築を停止したいです。 基本的に、この PageView 内に水平軸を持つ PageView が 1 つあり、垂直軸を持つ PageView がもう 1 つあります。

1 つの PageView 内には 2 つの子しかありませんが、2 つ目の PageView には http リクエストベースの子があります。

問題: ユーザーが 1 PageView を右にスクロールし、次に左にスクロールすると、1 PageView が 2 番目の Pageview の子を再構築し、ページ インデックスが自動的に 0 に設定されます。

期待: ユーザーが左から右にスクロールしたときに 1 PageView の再構築を停止し、その正しい位置で 1 PageView を停止し、位置 0 の設定を無視したいだけです。

PageView の例

return PageView(
  scrollDirection: Axis.horizontal,
  allowImplicitScrolling: false,
  controller: _main_pageController,
  children: [
    PageView(
      controller: _pageController,
      scrollDirection: Axis.vertical,
      children: [
          for(int index = 0; index < complexTutorial.data.length;index++)
          COntainer(color:Colors.yellow),
                ],),
          
          // below is second child of 1 PageView.

         Container(child:Text("USER SETTING")),
          ],);

フラッターは初めてなので、この問題の解決を手伝ってください。



------------------------

コンテナを StateFulWidget 内に配置し、AutomaticKeepAliveClientMixin を使用します

そして、StateFulWidget のメソッド「wantKeepAlive」をオーバーライドします

class YourStateFulWidget extends StatefulWidget with AutomaticKeepAliveClientMixin{


  @override
  _YourStateFulWidgetState createState() => _YourStateFulWidgetState();
}

class _YourStateFulWidgetState extends State<YourStateFulWidget> {
  @override
  Widget build(BuildContext context) {
   
    return Container(
       child: Text("USER SETTING")
      
    );
  }

 @override
  bool get wantKeepAlive => keepAlive;
}

1

まず、このクラスでは機能しません =>クラス YourStateFulWidget は、AutomaticKeepAliveClientMixin を使用して StatefulWidget を拡張しますこのクラスを使用して動作します。 class _YourStateFulWidgetState extends State<YourStateFulWidget>エラーは発生しませんでしたが、このクラスでは機能が動作しません

– シャリク・アンサリ

2020 年 9 月 4 日 17:10

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。