import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_samples/components/PoetryCard.dart'; import 'package:flutter_samples/logics/services/poetry_list.dart'; class PoetryListPage extends ConsumerStatefulWidget { const PoetryListPage({super.key}); @override ConsumerState createState() => _PoetryListPageState(); } class _PoetryListPageState extends ConsumerState { final ScrollController _controller = ScrollController(); @override void initState() { super.initState(); WidgetsBinding.instance.addPostFrameCallback((_) { // 初始化数据 ref.read(poetryListServiceProvider.notifier).setUp(); }); // 监听滚动事件 _controller.addListener(listener); } void listener() { if (_controller.position.pixels >= _controller.position.maxScrollExtent - 200) { // 加载更多 ref.read(poetryListServiceProvider.notifier).queryMorePoetryList(); } } @override Widget build(BuildContext context) { final state = ref.watch(poetryListServiceProvider); final service = ref.read(poetryListServiceProvider.notifier); return Scaffold( appBar: AppBar(title: const Text('诗词列表')), body: state.poetryData.list.isEmpty ? const Center(child: Text("暂无数据")) : ListView.builder( itemCount: state.poetryData.list.length + (state.poetryData.loadAll ? 1 : 0), itemBuilder: (_, index) { final poetry = state.poetryData.list[index]; return Poetrycard( poetry: poetry, onClick: () { // 点击诗词 service.toPoetryDetailPage(poetry); }, ); }, ), ); } }