mod: 相关推荐视频开发、页面跳转Hero、一些字段修改

This commit is contained in:
guozhigq
2023-04-21 14:06:01 +08:00
parent f3b7ad0302
commit 171c16a4f9
15 changed files with 152 additions and 31 deletions

View File

@ -0,0 +1,31 @@
import 'dart:convert';
import 'package:get/get.dart';
import 'package:pilipala/http/video.dart';
import 'package:pilipala/models/model_hot_video_item.dart';
class ReleatedController extends GetxController {
// 视频aid
String aid = Get.parameters['aid']!;
// 推荐视频列表
List relatedVideoList = [];
Future<dynamic> queryVideoRecommend() async {
try {
var res = await VideoHttp.videoRecommend({'aid': aid});
List<HotVideoItemModel> list = [];
try {
for (var i in res.data['data']) {
list.add(HotVideoItemModel.fromJson(i));
}
relatedVideoList = list;
} catch (err) {
return err.toString();
}
return res.data['data'];
} catch (err) {
return err.toString();
}
}
}

View File

@ -0,0 +1,4 @@
library releated_video_panel;
export './controller.dart';
export './view.dart';

View File

@ -0,0 +1,49 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:pilipala/common/widgets/video_card_h.dart';
import './controller.dart';
class RelatedVideoPanel extends StatefulWidget {
const RelatedVideoPanel({super.key});
@override
State<RelatedVideoPanel> createState() => _RelatedVideoPanelState();
}
class _RelatedVideoPanelState extends State<RelatedVideoPanel> {
final ReleatedController _releatedController = Get.put(ReleatedController());
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: _releatedController.queryVideoRecommend(),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
if (snapshot.data!.isNotEmpty) {
// 请求成功
List videoList = _releatedController.relatedVideoList;
return SliverList(
delegate: SliverChildBuilderDelegate((context, index) {
if (index == videoList.length) {
return SizedBox(height: MediaQuery.of(context).padding.bottom);
} else {
return VideoCardH(
videoItem: videoList[index],
);
}
}, childCount: videoList.length + 1));
} else {
// 请求错误
return const Center(
child: Text('出错了'),
);
}
} else {
return const SliverToBoxAdapter(
child: Text('请求中'),
);
}
},
);
}
}