Files
MoneyMgr/moneymgr_mobile/lib/routes/login/login_screen.dart
Pierre HUBERT c878c7f327
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
Set application icons
2025-07-03 23:00:24 +02:00

67 lines
1.9 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_gutter/flutter_gutter.dart';
import 'package:go_router/go_router.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:moneymgr_mobile/routes/login/base_auth_page.dart';
import 'package:moneymgr_mobile/services/router/routes_list.dart';
class LoginScreen extends HookConsumerWidget {
const LoginScreen({super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
return BaseAuthPage(
children: [
Gutter(scaleFactor: 3),
Text(
"This application requires a token from MoneyMgr to be used.\n\nPlease create a token on your Money Manager instance and make sure to click on \"For mobile app\" button. You can then enter here generated credentials.",
textAlign: TextAlign.justify,
),
Expanded(child: Container()),
_LoginChoice(
route: manualAuthPage,
icon: Icons.edit_document,
label: "Enter manually authentication information",
),
_LoginChoice(
route: manualAuthPage,
icon: Icons.qr_code_2,
label: "Scan authentication Qr Code",
),
Gutter(scaleFactor: 3),
],
);
}
}
class _LoginChoice extends StatelessWidget {
const _LoginChoice({
required this.route,
required this.label,
required this.icon,
});
final String route;
final String label;
final IconData icon;
@override
Widget build(BuildContext context) {
return FilledButton(
onPressed: () => context.push(route),
style: ButtonStyle(
padding: WidgetStatePropertyAll(
EdgeInsetsGeometry.symmetric(vertical: 20.0, horizontal: 30.0),
),
),
child: Row(
children: [
Icon(icon, size: 25.0),
Gutter(),
Flexible(child: Text(label)),
],
),
);
}
}