diff --git a/lib/common/widgets/video_card_h.dart b/lib/common/widgets/video_card_h.dart index 7053cc93..ae6edf4d 100644 --- a/lib/common/widgets/video_card_h.dart +++ b/lib/common/widgets/video_card_h.dart @@ -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, diff --git a/lib/pages/live/view.dart b/lib/pages/live/view.dart index 9ad8535d..2e4dab02 100644 --- a/lib/pages/live/view.dart +++ b/lib/pages/live/view.dart @@ -78,8 +78,11 @@ class _LivePageState extends State { 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 { } 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 { // 列间距 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) { diff --git a/lib/pages/rcmd/view.dart b/lib/pages/rcmd/view.dart index 1d41b9af..11a6d192 100644 --- a/lib/pages/rcmd/view.dart +++ b/lib/pages/rcmd/view.dart @@ -84,8 +84,11 @@ class _RcmdPageState extends State 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 } 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 // 列间距 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 =