mod: 首页推荐视频

This commit is contained in:
guozhigq
2023-04-19 08:12:08 +08:00
parent fbfdc2138b
commit 3a344843f9
22 changed files with 499 additions and 15 deletions

View File

@ -2,14 +2,16 @@ import 'package:flutter/cupertino.dart';
import 'package:get/get.dart';
import 'package:pilipala/http/api.dart';
import 'package:pilipala/http/init.dart';
import 'package:pilipala/models/models_rec_video_item.dart';
class HomeController extends GetxController {
final ScrollController scrollController = ScrollController();
int count = 12;
int _currentPage = 1;
int crossAxisCount = 2;
RxList videoList = [].obs;
RxList<RecVideoItemModel> videoList = [RecVideoItemModel()].obs;
bool isLoadingMore = false;
@override
void onInit() {
super.onInit();
@ -22,13 +24,17 @@ class HomeController extends GetxController {
Api.recommendList,
data: {'feed_version': "V3", 'ps': count, 'fresh_idx': _currentPage},
);
var data = res.data['data']['item'];
List<RecVideoItemModel> list = [];
for (var i in res.data['data']['item']) {
print(i);
list.add(RecVideoItemModel.fromJson(i));
}
if (type == 'init') {
videoList.value = data;
videoList.value = list;
} else if (type == 'onRefresh') {
videoList.insertAll(0, data);
videoList.insertAll(0, list);
} else if (type == 'onLoad') {
videoList.addAll(data);
videoList.addAll(list);
}
_currentPage += 1;
isLoadingMore = false;

View File

@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:pilipala/common/widgets/video_card_v.dart';
import './controller.dart';
import 'package:pilipala/common/constants.dart';
import 'package:pilipala/pages/home/widgets/app_bar.dart';
@ -76,15 +77,14 @@ class _HomePageState extends State<HomePage>
// 列数
crossAxisCount: _homeController.crossAxisCount,
mainAxisExtent: MediaQuery.of(context).size.width /
_homeController.crossAxisCount *
(10 / 16) +
_homeController.crossAxisCount /
StyleString.aspectRatio +
72),
delegate: SliverChildBuilderDelegate(
(BuildContext context, int index) {
return Container(
color: Theme.of(context).colorScheme.surfaceVariant,
child: Text(index.toString()),
);
return videoList.isNotEmpty
? VideoCardV(videoItem: videoList[index])
: const Text('加载中');
},
childCount: videoList.isNotEmpty ? videoList.length : 10,
),