feat: appbar
This commit is contained in:
@@ -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,
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user