0

問題: P1、P2、P3 の 3 つのページを持つ PageView があります。P3 (または P2) で追加のページを開き、その追加のページを閉じると、PageView は再構築されますが、P3 が最初のページになります。新しい壊れたページの順序は P3、P2、P3 です。

除外するif (_page != 0 && position == 0) { return pageListTest[_page];}と、P3 の代わりに P1 が表示されますposition == 0。これは論理的ですが、P3 を再度表示する必要があるため、望ましい動作ではありません。

使用しているコードは次のとおりです。

body: (_page > 2) ? 
// if the page is not included in the page view
getPage(_page, arguments): 
//if the page is included in the page view 
ScrollConfiguration(
behavior: CustomScrollBehaviour(),
child: PageView.builder(
itemCount: 3,
controller: controller,
onPageChanged: (newPosition) {
bottomNavBarProvider.setPage(newPosition, newPosition);},
itemBuilder: (context, position) {
//Here is the problem: I navigate back therefore _page != 0 but position==0
if (_page != 0 && position == 0) {
return pageListTest[_page];}
return pageListTest[position];
})

何か案は?ありがとう :)

4

1 に答える 1

1

PageView クラスを確認してください https://api.flutter.dev/flutter/widgets/PageView-class.html そこには、ページコントローラーを作成し、ページをウィジェットの子として追加する必要があると書かれています。また、pageView コントローラーを定義する前に、どのページが最初のページであるかを設定する必要があります。

于 2020-12-11T18:51:25.347 に答える