Flutter ListViewのレイジーローディング
2023-09-03 18:43:13
質問内容
エンドレスリストビューのアイテムの遅延ロードを実現するにはどうしたらいいですか?ユーザーがリストビューの最後までスクロールしたときに、ネットワークによってより多くのアイテムをロードしたいです。
どのように解決するのですか?
を聴くことができます。
ScrollController
.
ScrollController
には、scrolloffset や
ScrollPosition
.
あなたの場合、興味深いのは
controller.position
であり、これは現在表示されている
ScrollPosition
. これは、スクロール可能なセグメントを表します。
ScrollPosition
は、スクロール可能な内部での位置に関する情報を含んでいます。例えば
extentBefore
と
extentAfter
. また、サイズについては
extentInside
.
これを考慮すると、サーバコールのトリガーとして
extentAfter
に基づいてサーバーの呼び出しをトリガーすることができます。
ここで、私が言ったことを使った基本的な例を示します。
class MyHome extends StatefulWidget {
@override
_MyHomeState createState() => _MyHomeState();
}
class _MyHomeState extends State<MyHome> {
ScrollController controller;
List<String> items = List.generate(100, (index) => 'Hello $index');
@override
void initState() {
super.initState();
controller = ScrollController()..addListener(_scrollListener);
}
@override
void dispose() {
controller.removeListener(_scrollListener);
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Scrollbar(
child: ListView.builder(
controller: controller,
itemBuilder: (context, index) {
return Text(items[index]);
},
itemCount: items.length,
),
),
);
}
void _scrollListener() {
print(controller.position.extentAfter);
if (controller.position.extentAfter < 500) {
setState(() {
items.addAll(List.generate(42, (index) => 'Inserted $index'));
});
}
}
}
スクロールの終わりに達したとき、より多くのアイテムを読み込んだため、スクロールバーが消費されていることがよくわかります。
関連
-
[解決済み] FlutterでListViewをColumnに追加する方法とは?
-
[解決済み] ListViewの最後までプログラム的にスクロールさせる
-
[解決済み] Flutterを使ってローカルストレージに保存するには?
-
[解決済み] Flutter ListViewでウィジェットにスクロールする
-
[解決済み] Flutterで次のTextFieldにフォーカスを移すには?
-
[解決済み] Flutter: タッチスクリーンでのスクロールを無効にするListView
-
[解決済み] Row FlutterでElement間のスペースを設定する
-
[解決済み] Flutter - Container onPressed?
-
[解決済み] 親のサイズに基づいてウィジェットをレイアウトするには?
-
Flutterのpubspec.yamlの依存関係のバージョン番号の前にあるキャレット記号(^)は何でしょうか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] CircularProgressIndicatorにサイズを設定するには?
-
[解決済み] Flutter StreamBuilderとFutureBuilderの比較
-
[解決済み] 丸みを帯びたボーダーを持つボタンを作成する [重複]。
-
[解決済み] Flutterアプリがウェブ上で動作しているかどうかを検出するには?
-
[解決済み] TextFormFieldとTextFieldの違いは何ですか?
-
[解決済み] DartのNull Safetyとは何ですか?
-
[解決済み] Flutter Columnで項目を下中央に配置しようとすると、左揃えになる
-
[解決済み] dartで日付に月/年を加算/減算する?
-
Flutterで円形のコーナーを持つモーダルボトムシートを作成するには?
-
Flutterのpubspec.yamlの依存関係のバージョン番号の前にあるキャレット記号(^)は何でしょうか?