flutter ListViewで無限スクロール
これが答えだったのかあ
https://qiita.com/najeira/items/454462c794c35b3b600a
よくわからず FutureBuilder 使わないといけないのかなとか色々試行錯誤してたらこんなバッチリな記事がありました。ListView作るときってitemCount必須かと思っていたのだが省略できるのか、、
参考記事からhttp通信なくしてListViewで無限スクロールの部分だけ抜き出した。たぶん1番簡単な無限スクロールのコード
import 'package:flutter/material.dart';
void main() {
runApp(MaterialApp(
home: HomeScreen(),
));
}
class HomeScreen extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return HomeScreenState();
}
}
class HomeScreenState extends State<HomeScreen> {
List<String> items = [];
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("無限スクロール")),
body: ListView.builder(
itemBuilder: (context, index) {
if (index == items.length) {
_load();
return Center(child: CircularProgressIndicator());
} else if (items.length < index) {
return null;
} else {
return Container(
child: ListTile(title: Text(items[index])),
);
}
},
),
);
}
void _load() async {
await new Future.delayed(const Duration(seconds: 3));
setState(() {
var s = items.length;
for (var i = 0; i < 20; i++) {
items.add("アイテム${s + i}");
}
});
}
}以上です