左右のスライドで 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