|
|
@@ -29,68 +29,64 @@ class ScreenshotsPage extends BasePage<ScreenShotsController> {
|
|
|
@override
|
|
|
Widget buildBody(BuildContext context) {
|
|
|
return Stack(children: [
|
|
|
- PopScope(canPop: false,
|
|
|
+ PopScope(
|
|
|
+ canPop: false,
|
|
|
onPopInvokedWithResult: (didPop, result) {
|
|
|
if (didPop) {
|
|
|
return;
|
|
|
}
|
|
|
controller.clickBack();
|
|
|
},
|
|
|
- child:
|
|
|
- Container(
|
|
|
- child: SafeArea(
|
|
|
- child: Obx(()
|
|
|
- {
|
|
|
- if (controller.photoGroups.isEmpty ||
|
|
|
- controller.photoGroups[0].images.isEmpty) {
|
|
|
- return _noNoPicturesCard();
|
|
|
- }
|
|
|
- return Column(
|
|
|
- children: [
|
|
|
- _titleCard(),
|
|
|
- Flexible(
|
|
|
+ child: Container(
|
|
|
+ child: SafeArea(
|
|
|
child: Obx(() {
|
|
|
- return SizedBox(
|
|
|
- child: GridView.builder(
|
|
|
- padding: EdgeInsets.symmetric(horizontal: 16.w),
|
|
|
- scrollDirection: Axis.vertical,
|
|
|
- // 设置为垂直方向滚动
|
|
|
- physics: BouncingScrollPhysics(),
|
|
|
- gridDelegate:
|
|
|
- SliverGridDelegateWithFixedCrossAxisCount(
|
|
|
- crossAxisCount: 3, // 每行显示 2 个元素
|
|
|
- mainAxisSpacing: 8.w, // 垂直间距
|
|
|
- crossAxisSpacing: 8.h, // 水平间距
|
|
|
- ),
|
|
|
- itemCount: controller.photoGroups[0].images.length,
|
|
|
- itemBuilder: _buildPhotoItem(
|
|
|
- controller.photoGroups[0].images)),
|
|
|
+ if (controller.photoGroups.isEmpty ||
|
|
|
+ controller.photoGroups[0].images.isEmpty) {
|
|
|
+ return _noNoPicturesCard();
|
|
|
+ }
|
|
|
+ return Column(
|
|
|
+ children: [
|
|
|
+ _titleCard(),
|
|
|
+ Flexible(
|
|
|
+ child: Obx(() {
|
|
|
+ return SizedBox(
|
|
|
+ child: GridView.builder(
|
|
|
+ padding: EdgeInsets.symmetric(horizontal: 16.w),
|
|
|
+ scrollDirection: Axis.vertical,
|
|
|
+ // 设置为垂直方向滚动
|
|
|
+ physics: BouncingScrollPhysics(),
|
|
|
+ gridDelegate:
|
|
|
+ SliverGridDelegateWithFixedCrossAxisCount(
|
|
|
+ crossAxisCount: 3, // 每行显示 2 个元素
|
|
|
+ mainAxisSpacing: 8.w, // 垂直间距
|
|
|
+ crossAxisSpacing: 8.h, // 水平间距
|
|
|
+ ),
|
|
|
+ itemCount: controller.photoGroups[0].images.length,
|
|
|
+ itemBuilder: _buildPhotoItem(
|
|
|
+ controller.photoGroups[0].images)),
|
|
|
+ );
|
|
|
+ }),
|
|
|
+ ),
|
|
|
+ Obx(() {
|
|
|
+ if (controller.selectedPhotosIds.isNotEmpty) {
|
|
|
+ return _bottomBarCard();
|
|
|
+ } else {
|
|
|
+ return SizedBox();
|
|
|
+ }
|
|
|
+ }),
|
|
|
+ SizedBox(height: 8.h),
|
|
|
+ ],
|
|
|
);
|
|
|
}),
|
|
|
),
|
|
|
- Obx(() {
|
|
|
- if (controller.selectedPhotosIds.isNotEmpty) {
|
|
|
- return _bottomBarCard();
|
|
|
- } else {
|
|
|
- return SizedBox();
|
|
|
- }
|
|
|
- }),
|
|
|
- SizedBox(height: 8.h),
|
|
|
- ],
|
|
|
- );
|
|
|
- }),
|
|
|
- ),
|
|
|
- ),),
|
|
|
- IgnorePointer(
|
|
|
- child: Assets.images.bgHome.image(
|
|
|
- width: 360.w,
|
|
|
- height: 234.h,
|
|
|
- )
|
|
|
- ,
|
|
|
- )
|
|
|
- ,
|
|
|
- ]
|
|
|
- );
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ IgnorePointer(
|
|
|
+ child: Assets.images.bgHome.image(
|
|
|
+ width: 360.w,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ]);
|
|
|
}
|
|
|
|
|
|
Widget _titleCard() {
|
|
|
@@ -113,48 +109,46 @@ class ScreenshotsPage extends BasePage<ScreenShotsController> {
|
|
|
),
|
|
|
// 如果photoGroup数据为空,不显示全选按钮
|
|
|
controller.photoGroups.isEmpty ||
|
|
|
- controller.photoGroups[0].images.isEmpty
|
|
|
+ controller.photoGroups[0].images.isEmpty
|
|
|
? Container()
|
|
|
: GestureDetector(
|
|
|
- onTap: () =>
|
|
|
- controller.toggleGroupSelection(
|
|
|
- controller.photoGroups[0].images),
|
|
|
- child: Obx(() =>
|
|
|
- Text(
|
|
|
- controller
|
|
|
- .getGroupByImages(
|
|
|
- controller.photoGroups[0].images)
|
|
|
- .isSelected
|
|
|
- .value
|
|
|
- ? 'Deselect All'
|
|
|
- : 'Select All',
|
|
|
- style: TextStyle(
|
|
|
- color: Colors.white.withValues(alpha: 0.7),
|
|
|
- fontSize: 14.sp,
|
|
|
- fontWeight: FontWeight.w400,
|
|
|
- ),
|
|
|
- )),
|
|
|
- ),
|
|
|
+ onTap: () => controller.toggleGroupSelection(
|
|
|
+ controller.photoGroups[0].images),
|
|
|
+ child: Obx(() => Text(
|
|
|
+ controller
|
|
|
+ .getGroupByImages(
|
|
|
+ controller.photoGroups[0].images)
|
|
|
+ .isSelected
|
|
|
+ .value
|
|
|
+ ? 'Deselect All'
|
|
|
+ : 'Select All',
|
|
|
+ style: TextStyle(
|
|
|
+ color: Colors.white.withValues(alpha: 0.7),
|
|
|
+ fontSize: 14.sp,
|
|
|
+ fontWeight: FontWeight.w400,
|
|
|
+ ),
|
|
|
+ )),
|
|
|
+ ),
|
|
|
],
|
|
|
);
|
|
|
}),
|
|
|
controller.photoGroups.isEmpty ||
|
|
|
- controller.photoGroups[0].images.isEmpty
|
|
|
+ controller.photoGroups[0].images.isEmpty
|
|
|
? Container()
|
|
|
: Column(
|
|
|
- children: [
|
|
|
- SizedBox(height: 12.h),
|
|
|
- Text(
|
|
|
- controller.titleName,
|
|
|
- style: TextStyle(
|
|
|
- color: Colors.white,
|
|
|
- fontSize: 24.sp,
|
|
|
- fontWeight: FontWeight.w700,
|
|
|
+ children: [
|
|
|
+ SizedBox(height: 12.h),
|
|
|
+ Text(
|
|
|
+ controller.titleName,
|
|
|
+ style: TextStyle(
|
|
|
+ color: Colors.white,
|
|
|
+ fontSize: 24.sp,
|
|
|
+ fontWeight: FontWeight.w700,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ SizedBox(height: 20.h),
|
|
|
+ ],
|
|
|
),
|
|
|
- ),
|
|
|
- SizedBox(height: 20.h),
|
|
|
- ],
|
|
|
- ),
|
|
|
],
|
|
|
),
|
|
|
);
|
|
|
@@ -185,8 +179,7 @@ class ScreenshotsPage extends BasePage<ScreenShotsController> {
|
|
|
SizedBox(width: 5.w),
|
|
|
Obx(() {
|
|
|
return Text(
|
|
|
- '${controller.selectedFileCount
|
|
|
- .value} files selected (${controller.selectedFilesSizeString})',
|
|
|
+ '${controller.selectedFileCount.value} files selected (${controller.selectedFilesSizeString})',
|
|
|
textAlign: TextAlign.center,
|
|
|
style: TextStyle(
|
|
|
color: Colors.white,
|
|
|
@@ -201,10 +194,10 @@ class ScreenshotsPage extends BasePage<ScreenShotsController> {
|
|
|
}
|
|
|
|
|
|
Widget Function(BuildContext, int) _buildPhotoItem(
|
|
|
- List<AssetEntity> images) =>
|
|
|
- (context, index) {
|
|
|
+ List<AssetEntity> images) =>
|
|
|
+ (context, index) {
|
|
|
final group =
|
|
|
- controller.getGroupByImages(controller.photoGroups[0].images);
|
|
|
+ controller.getGroupByImages(controller.photoGroups[0].images);
|
|
|
|
|
|
return GestureDetector(
|
|
|
onTap: () =>
|
|
|
@@ -240,16 +233,16 @@ class ScreenshotsPage extends BasePage<ScreenShotsController> {
|
|
|
child: Container(
|
|
|
child: isSelected
|
|
|
? Center(
|
|
|
- child: Assets.images.iconSelected.image(
|
|
|
- width: 20.w,
|
|
|
- height: 20.h,
|
|
|
- ),
|
|
|
- )
|
|
|
+ child: Assets.images.iconSelected.image(
|
|
|
+ width: 20.w,
|
|
|
+ height: 20.h,
|
|
|
+ ),
|
|
|
+ )
|
|
|
: Center(
|
|
|
- child: Assets.images.iconUnselected.image(
|
|
|
- width: 20.w,
|
|
|
- height: 20.h,
|
|
|
- )),
|
|
|
+ child: Assets.images.iconUnselected.image(
|
|
|
+ width: 20.w,
|
|
|
+ height: 20.h,
|
|
|
+ )),
|
|
|
)),
|
|
|
),
|
|
|
],
|