gallery_picker/lib/views/album_view/album_appbar.dart

74 lines
2.3 KiB
Dart

import 'package:flutter/material.dart';
import 'package:gallery_picker/models/gallery_album.dart';
import '../../controller/bottom_sheet_controller.dart';
import '../../controller/gallery_controller.dart';
import '../gallery_picker_view/tappable_appbar.dart';
class AlbumAppBar extends StatelessWidget with PreferredSizeWidget {
final PhoneGalleryController controller;
final BottomSheetController? bottomSheetController;
final GalleryAlbum album;
const AlbumAppBar(
{super.key,
required this.bottomSheetController,
required this.album,
required this.controller});
@override
Widget build(BuildContext context) {
return TappableAppbar(
controller: bottomSheetController,
child: AppBar(
elevation: 0,
foregroundColor: controller.config.appbarIconColor,
backgroundColor: controller.config.appbarColor,
leading: TextButton(
onPressed: () {
controller.changeAlbum(null);
},
child: Icon(
Icons.arrow_back,
color: controller.config.appbarIconColor,
)),
title: getTitle(),
actions: [
!controller.pickerMode
? TextButton(
onPressed: () {
controller.switchPickerMode(true);
},
child: Icon(
Icons.check_box_outlined,
color: controller.config.appbarIconColor,
))
: const SizedBox()
],
),
);
}
Widget getTitle() {
if (!controller.pickerMode && controller.selectedFiles.isEmpty) {
return Text(
album.name!,
style: controller.config.appbarTextStyle,
);
} else if (controller.pickerMode && controller.selectedFiles.isEmpty) {
return Text(
controller.config.tapPhotoSelect,
style: controller.config.appbarTextStyle,
);
} else if (controller.pickerMode && controller.selectedFiles.isNotEmpty) {
return Text(
"${controller.selectedFiles.length} ${controller.config.selected}",
style: controller.config.appbarTextStyle,
);
} else {
return const SizedBox();
}
}
@override
Size get preferredSize => const Size.fromHeight(48);
}