shenlong-tanwen 8450c8cc4f feat: appbar
2025-02-26 08:58:19 +05:30

53 lines
1.8 KiB
Dart

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,
);
}
}