mirror of
https://github.com/immich-app/immich.git
synced 2025-01-28 06:32:44 +01:00
Refactor homepage widget
This commit is contained in:
parent
2c4243b3d0
commit
8d5626620b
3 changed files with 36 additions and 31 deletions
mobile/lib/modules
|
@ -29,7 +29,6 @@ class ImmichSliverAppBar extends ConsumerWidget {
|
||||||
floating: true,
|
floating: true,
|
||||||
pinned: false,
|
pinned: false,
|
||||||
snap: false,
|
snap: false,
|
||||||
// backgroundColor: Colors.grey[200],
|
|
||||||
shape: const RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(5))),
|
shape: const RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(5))),
|
||||||
leading: Builder(
|
leading: Builder(
|
||||||
builder: (BuildContext context) {
|
builder: (BuildContext context) {
|
||||||
|
|
|
@ -13,7 +13,6 @@ import 'package:immich_mobile/modules/home/ui/profile_drawer.dart';
|
||||||
import 'package:immich_mobile/shared/providers/asset.provider.dart';
|
import 'package:immich_mobile/shared/providers/asset.provider.dart';
|
||||||
import 'package:immich_mobile/shared/providers/server_info.provider.dart';
|
import 'package:immich_mobile/shared/providers/server_info.provider.dart';
|
||||||
import 'package:immich_mobile/shared/providers/websocket.provider.dart';
|
import 'package:immich_mobile/shared/providers/websocket.provider.dart';
|
||||||
import 'package:sliver_tools/sliver_tools.dart';
|
|
||||||
|
|
||||||
class HomePage extends HookConsumerWidget {
|
class HomePage extends HookConsumerWidget {
|
||||||
const HomePage({Key? key}) : super(key: key);
|
const HomePage({Key? key}) : super(key: key);
|
||||||
|
@ -37,6 +36,19 @@ class HomePage extends HookConsumerWidget {
|
||||||
ref.read(assetProvider.notifier).getAllAsset();
|
ref.read(assetProvider.notifier).getAllAsset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_buildSelectedItemCountIndicator() {
|
||||||
|
return isMultiSelectEnable
|
||||||
|
? DisableMultiSelectButton(
|
||||||
|
onPressed: ref.watch(homePageStateProvider.notifier).disableMultiSelect,
|
||||||
|
selectedItemCount: homePageState.selectedItems.length,
|
||||||
|
)
|
||||||
|
: Container();
|
||||||
|
}
|
||||||
|
|
||||||
|
_buildBottomAppBar() {
|
||||||
|
return isMultiSelectEnable ? const ControlBottomAppBar() : Container();
|
||||||
|
}
|
||||||
|
|
||||||
Widget _buildBody() {
|
Widget _buildBody() {
|
||||||
if (assetGroupByDateTime.isNotEmpty) {
|
if (assetGroupByDateTime.isNotEmpty) {
|
||||||
int? lastMonth;
|
int? lastMonth;
|
||||||
|
@ -70,6 +82,19 @@ class HomePage extends HookConsumerWidget {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_buildSliverAppBar() {
|
||||||
|
return isMultiSelectEnable
|
||||||
|
? const SliverToBoxAdapter(
|
||||||
|
child: SizedBox(
|
||||||
|
height: 70,
|
||||||
|
child: null,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
: ImmichSliverAppBar(
|
||||||
|
onPopBack: reloadAllAsset,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
return SafeArea(
|
return SafeArea(
|
||||||
bottom: !isMultiSelectEnable,
|
bottom: !isMultiSelectEnable,
|
||||||
top: !isMultiSelectEnable,
|
top: !isMultiSelectEnable,
|
||||||
|
@ -81,38 +106,17 @@ class HomePage extends HookConsumerWidget {
|
||||||
heightScrollThumb: 48.0,
|
heightScrollThumb: 48.0,
|
||||||
child: CustomScrollView(
|
child: CustomScrollView(
|
||||||
controller: _scrollController,
|
controller: _scrollController,
|
||||||
slivers: [
|
slivers: [_buildSliverAppBar(), ..._imageGridGroup],
|
||||||
SliverAnimatedSwitcher(
|
|
||||||
child: isMultiSelectEnable
|
|
||||||
? const SliverToBoxAdapter(
|
|
||||||
child: SizedBox(
|
|
||||||
height: 70,
|
|
||||||
child: null,
|
|
||||||
),
|
|
||||||
)
|
|
||||||
: ImmichSliverAppBar(
|
|
||||||
onPopBack: reloadAllAsset,
|
|
||||||
),
|
|
||||||
duration: const Duration(milliseconds: 350),
|
|
||||||
),
|
|
||||||
..._imageGridGroup
|
|
||||||
],
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
isMultiSelectEnable
|
_buildSelectedItemCountIndicator(),
|
||||||
? DisableMultiSelectButton(
|
_buildBottomAppBar(),
|
||||||
onPressed: ref.watch(homePageStateProvider.notifier).disableMultiSelect,
|
|
||||||
selectedItemCount: homePageState.selectedItems.length,
|
|
||||||
)
|
|
||||||
: Container(),
|
|
||||||
isMultiSelectEnable ? const ControlBottomAppBar() : Container(),
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
// key: _scaffoldKey,
|
|
||||||
drawer: const ProfileDrawer(),
|
drawer: const ProfileDrawer(),
|
||||||
body: _buildBody(),
|
body: _buildBody(),
|
||||||
);
|
);
|
||||||
|
|
|
@ -138,11 +138,13 @@ class AlbumViewerAppbar extends HookConsumerWidget with PreferredSizeWidget {
|
||||||
isScrollControlled: false,
|
isScrollControlled: false,
|
||||||
context: context,
|
context: context,
|
||||||
builder: (context) {
|
builder: (context) {
|
||||||
return Column(
|
return SafeArea(
|
||||||
mainAxisSize: MainAxisSize.min,
|
child: Column(
|
||||||
children: [
|
mainAxisSize: MainAxisSize.min,
|
||||||
_buildBottomSheetActionButton(),
|
children: [
|
||||||
],
|
_buildBottomSheetActionButton(),
|
||||||
|
],
|
||||||
|
),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
Loading…
Reference in a new issue