feat: appbar

This commit is contained in:
shenlong-tanwen
2024-10-27 23:43:58 +05:30
parent 5385d43c8c
commit 8450c8cc4f
40 changed files with 1150 additions and 211 deletions
@@ -0,0 +1,52 @@
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:immich_mobile/presentation/components/appbar/app_bar_dialog.widget.dart';
import 'package:immich_mobile/presentation/components/common/gap.widget.dart';
import 'package:immich_mobile/presentation/components/common/user_avatar.widget.dart';
import 'package:immich_mobile/presentation/components/image/immich_logo.widget.dart';
import 'package:immich_mobile/presentation/states/current_user.state.dart';
import 'package:immich_mobile/service_locator.dart';
import 'package:immich_mobile/utils/constants/size_constants.dart';
import 'package:immich_mobile/utils/extensions/build_context.extension.dart';
class ImAppBar extends StatelessWidget implements PreferredSizeWidget {
const ImAppBar({super.key});
@override
Size get preferredSize => const Size.fromHeight(kToolbarHeight);
static void showAppBarDialog(BuildContext context) => unawaited(showDialog(
context: context,
builder: (_) => const ImAppBarDialog(),
));
@override
Widget build(BuildContext context) {
return AppBar(
automaticallyImplyLeading: false,
title: Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
ImLogo(dimension: SizeConstants.xxm),
SizedGap.sw(),
ImLogoText(fontSize: 20),
],
),
actions: [
Padding(
padding: const EdgeInsets.only(right: SizeConstants.m),
child: InkWell(
onTap: () => showAppBarDialog(context),
child: ImUserAvatar(
user: di<CurrentUserProvider>().value,
radius: SizeConstants.m,
),
),
),
],
backgroundColor: context.theme.appBarTheme.backgroundColor,
centerTitle: false,
);
}
}