mirror of
https://github.com/gabehf/Fladder.git
synced 2026-03-07 21:48:14 -08:00
69 lines
2.3 KiB
Dart
69 lines
2.3 KiB
Dart
import 'package:flutter/material.dart';
|
|
|
|
import 'package:auto_route/auto_route.dart';
|
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
import 'package:iconsax_plus/iconsax_plus.dart';
|
|
|
|
import 'package:fladder/providers/update_provider.dart';
|
|
import 'package:fladder/providers/user_provider.dart';
|
|
import 'package:fladder/routes/auto_router.gr.dart';
|
|
import 'package:fladder/screens/shared/flat_button.dart';
|
|
import 'package:fladder/screens/shared/user_icon.dart';
|
|
import 'package:fladder/util/adaptive_layout/adaptive_layout.dart';
|
|
import 'package:fladder/util/localization_helper.dart';
|
|
import 'package:fladder/util/theme_extensions.dart';
|
|
|
|
class SettingsUserIcon extends ConsumerWidget {
|
|
const SettingsUserIcon({super.key});
|
|
|
|
@override
|
|
Widget build(BuildContext context, WidgetRef ref) {
|
|
final size = 24.0;
|
|
final user = ref.watch(userProvider);
|
|
final hasNewUpdate = ref.watch(hasNewUpdateProvider);
|
|
return Tooltip(
|
|
message: context.localized.settings,
|
|
waitDuration: const Duration(seconds: 1),
|
|
child: FlatButton(
|
|
onLongPress: () => context.router.push(const LockRoute()),
|
|
onTap: () {
|
|
if (AdaptiveLayout.layoutModeOf(context) == LayoutMode.single) {
|
|
context.router.push(const SettingsRoute());
|
|
} else {
|
|
context.router.push(const ClientSettingsRoute());
|
|
}
|
|
},
|
|
child: Stack(
|
|
alignment: Alignment.bottomRight,
|
|
children: [
|
|
UserIcon(
|
|
user: user,
|
|
cornerRadius: 200,
|
|
),
|
|
if (hasNewUpdate)
|
|
Transform.translate(
|
|
offset: Offset(size / 4, size / 4),
|
|
child: Container(
|
|
width: size,
|
|
height: size,
|
|
decoration: BoxDecoration(
|
|
color: context.colors.surface,
|
|
shape: BoxShape.circle,
|
|
),
|
|
child: Padding(
|
|
padding: const EdgeInsets.all(2),
|
|
child: FittedBox(
|
|
child: Icon(
|
|
IconsaxPlusBold.information,
|
|
color: context.colors.primary,
|
|
),
|
|
),
|
|
),
|
|
),
|
|
)
|
|
],
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|