import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:pilipala/common/skeleton/video_card_h.dart'; import 'package:pilipala/common/widgets/http_error.dart'; import 'package:pilipala/common/widgets/video_card_h.dart'; import 'package:pilipala/pages/later/index.dart'; class LaterPage extends StatefulWidget { const LaterPage({super.key}); @override State createState() => _LaterPageState(); } class _LaterPageState extends State { final LaterController _laterController = Get.put(LaterController()); Future? _futureBuilderFuture; @override void initState() { _futureBuilderFuture = _laterController.queryLaterList(); super.initState(); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text('稍后再看'), centerTitle: false, ), body: CustomScrollView( controller: _laterController.scrollController, slivers: [ FutureBuilder( future: _futureBuilderFuture, builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.done) { Map data = snapshot.data as Map; if (data['status']) { return Obx( () => SliverList( delegate: SliverChildBuilderDelegate((context, index) { return VideoCardH( videoItem: _laterController.laterList[index], ); }, childCount: _laterController.laterList.length), ), ); } else { return HttpError( errMsg: data['msg'], fn: () => setState(() {}), ); } } else { // 骨架屏 return SliverList( delegate: SliverChildBuilderDelegate((context, index) { return const VideoCardHSkeleton(); }, childCount: 5), ); } }, ), SliverToBoxAdapter( child: SizedBox( height: MediaQuery.of(context).padding.bottom + 10, ), ) ], ), ); } }