mod: 首页直播&推荐响应式

This commit is contained in:
guozhigq
2023-08-15 23:06:13 +08:00
parent 8cb2cceb14
commit 62e46f645c
3 changed files with 33 additions and 12 deletions

View File

@ -60,7 +60,8 @@ class VideoCardH extends StatelessWidget {
builder: (context, boxConstraints) {
double width =
(boxConstraints.maxWidth - StyleString.cardSpace * 6) / 2;
return SizedBox(
return Container(
constraints: const BoxConstraints(minHeight: 88),
height: width / StyleString.aspectRatio,
child: Row(
mainAxisAlignment: MainAxisAlignment.start,

View File

@ -78,8 +78,11 @@ class _LivePageState extends State<LivePage> {
if (snapshot.connectionState == ConnectionState.done) {
Map data = snapshot.data as Map;
if (data['status']) {
return Obx(() => contentGrid(
_liveController, _liveController.liveList));
return SliverLayoutBuilder(
builder: (context, boxConstraints) {
return Obx(() => contentGrid(
_liveController, _liveController.liveList));
});
} else {
return HttpError(
errMsg: data['msg'],
@ -116,6 +119,14 @@ class _LivePageState extends State<LivePage> {
}
Widget contentGrid(ctr, liveList) {
double maxWidth = Get.size.width;
int baseWidth = 500;
int step = 300;
int crossAxisCount =
maxWidth > baseWidth ? 2 + ((maxWidth - baseWidth) / step).ceil() : 2;
if (maxWidth < 300) {
crossAxisCount = 1;
}
return SliverGrid(
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
// 行间距
@ -123,9 +134,9 @@ class _LivePageState extends State<LivePage> {
// 列间距
crossAxisSpacing: StyleString.cardSpace + 4,
// 列数
crossAxisCount: ctr.crossAxisCount,
crossAxisCount: crossAxisCount,
mainAxisExtent:
Get.size.width / ctr.crossAxisCount / StyleString.aspectRatio + 64,
Get.size.width / crossAxisCount / StyleString.aspectRatio + 66,
),
delegate: SliverChildBuilderDelegate(
(BuildContext context, int index) {

View File

@ -84,8 +84,11 @@ class _RcmdPageState extends State<RcmdPage>
if (snapshot.connectionState == ConnectionState.done) {
Map data = snapshot.data as Map;
if (data['status']) {
return Obx(() => contentGrid(
_rcmdController, _rcmdController.videoList));
return SliverLayoutBuilder(
builder: (context, boxConstraints) {
return Obx(() => contentGrid(
_rcmdController, _rcmdController.videoList));
});
} else {
return HttpError(
errMsg: data['msg'],
@ -121,6 +124,14 @@ class _RcmdPageState extends State<RcmdPage>
}
Widget contentGrid(ctr, videoList) {
double maxWidth = Get.size.width;
int baseWidth = 500;
int step = 300;
int crossAxisCount =
maxWidth > baseWidth ? 2 + ((maxWidth - baseWidth) / step).ceil() : 2;
if (maxWidth < 300) {
crossAxisCount = 1;
}
return SliverGrid(
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
// 行间距
@ -128,16 +139,14 @@ class _RcmdPageState extends State<RcmdPage>
// 列间距
crossAxisSpacing: StyleString.cardSpace + 4,
// 列数
crossAxisCount: ctr.crossAxisCount,
crossAxisCount: crossAxisCount,
mainAxisExtent:
Get.size.width / ctr.crossAxisCount / StyleString.aspectRatio + 64,
Get.size.width / crossAxisCount / StyleString.aspectRatio + 66,
),
delegate: SliverChildBuilderDelegate(
(BuildContext context, int index) {
return videoList!.isNotEmpty
?
// VideoCardV(videoItem: videoList![index])
VideoCardV(
? VideoCardV(
videoItem: videoList[index],
longPress: () {
_rcmdController.popupDialog =