feat: 动态瀑布流横屏支持

This commit is contained in:
orz12
2024-02-07 20:03:44 +08:00
parent 2f4753ea64
commit a5aaec7b58
3 changed files with 28 additions and 9 deletions

View File

@@ -6,6 +6,7 @@ import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart'; import 'package:flutter/rendering.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:hive/hive.dart'; import 'package:hive/hive.dart';
import 'package:waterfall_flow/waterfall_flow.dart';
import 'package:pilipala/common/skeleton/dynamic_card.dart'; import 'package:pilipala/common/skeleton/dynamic_card.dart';
import 'package:pilipala/common/widgets/http_error.dart'; import 'package:pilipala/common/widgets/http_error.dart';
import 'package:pilipala/common/widgets/no_data.dart'; import 'package:pilipala/common/widgets/no_data.dart';
@@ -14,6 +15,8 @@ import 'package:pilipala/pages/main/index.dart';
import 'package:pilipala/utils/feed_back.dart'; import 'package:pilipala/utils/feed_back.dart';
import 'package:pilipala/utils/storage.dart'; import 'package:pilipala/utils/storage.dart';
import '../../common/constants.dart';
import '../../utils/grid.dart';
import 'controller.dart'; import 'controller.dart';
import 'widgets/dynamic_panel.dart'; import 'widgets/dynamic_panel.dart';
import 'widgets/up_panel.dart'; import 'widgets/up_panel.dart';
@@ -269,14 +272,28 @@ class _DynamicsPageState extends State<DynamicsPage>
return const NoData(); return const NoData();
} }
} else { } else {
return SliverList( return SliverWaterfallFlow.extent(
delegate: SliverChildBuilderDelegate( maxCrossAxisExtent: Grid.maxRowWidth * 2,
(context, index) { //cacheExtent: 0.0,
return DynamicPanel(item: list[index]); crossAxisSpacing: StyleString.safeSpace,
}, mainAxisSpacing: StyleString.safeSpace,
childCount: list.length,
), /// follow max child trailing layout offset and layout with full cross axis extend
); /// last child as loadmore item/no more item in [GridView] and [WaterfallFlow]
/// with full cross axis extend
// LastChildLayoutType.fullCrossAxisExtend,
/// as foot at trailing and layout with full cross axis extend
/// show no more item at trailing when children are not full of viewport
/// if children is full of viewport, it's the same as fullCrossAxisExtend
// LastChildLayoutType.foot,
lastChildLayoutTypeBuilder: (index) =>
index == list.length
? LastChildLayoutType.foot
: LastChildLayoutType.none,
children: [
for (var i in list) DynamicPanel(item: i),
]);
} }
}, },
); );

View File

@@ -1597,7 +1597,7 @@ packages:
source: hosted source: hosted
version: "1.1.0" version: "1.1.0"
waterfall_flow: waterfall_flow:
dependency: transitive dependency: "direct main"
description: description:
name: waterfall_flow name: waterfall_flow
sha256: "11538b0d890458e55e6248b177732495d20893cfc7e85d7e8dbf4fdce61c9f10" sha256: "11538b0d890458e55e6248b177732495d20893cfc7e85d7e8dbf4fdce61c9f10"

View File

@@ -140,6 +140,8 @@ dependencies:
catcher_2: ^1.1.0 catcher_2: ^1.1.0
logger: ^2.0.2+1 logger: ^2.0.2+1
path: 1.8.3 path: 1.8.3
#瀑布流
waterfall_flow: ^3.0.3
dev_dependencies: dev_dependencies:
flutter_test: flutter_test: