Compare commits
4 Commits
4c9dc9d2e3
...
21fe339f5b
Author | SHA1 | Date | |
---|---|---|---|
21fe339f5b | |||
12b8352fd9 | |||
033db1b0ee | |||
86536dba68 |
BIN
firka/assets/fonts/Montserrat-VariableFont_wght.ttf
Normal file
BIN
firka/assets/images/carousel/slide1.png
Normal file
After Width: | Height: | Size: 279 KiB |
BIN
firka/assets/images/carousel/slide2.png
Normal file
After Width: | Height: | Size: 279 KiB |
BIN
firka/assets/images/carousel/slide3.png
Normal file
After Width: | Height: | Size: 279 KiB |
BIN
firka/assets/images/carousel/slide4.png
Normal file
After Width: | Height: | Size: 279 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
@ -98,8 +98,8 @@ class InitializationScreen extends StatelessWidget {
|
||||
|
||||
|
||||
// Initialization successful, determine which screen to show
|
||||
StatelessWidget screen;
|
||||
if (kDebugMode) {
|
||||
Widget screen;
|
||||
if (false) {
|
||||
print('Debug mode: using DebugScreen');
|
||||
screen = DebugScreen();
|
||||
} else {
|
||||
|
@ -1,21 +1,125 @@
|
||||
import 'package:carousel_slider/carousel_slider.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
/// Epic login screen code, licensed under AGPL 3.0, unlike "refilc"
|
||||
class LoginScreen extends StatelessWidget {
|
||||
const LoginScreen({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: const Text('Login'),
|
||||
centerTitle: true,
|
||||
),
|
||||
body: const Center(
|
||||
child: Text(
|
||||
'Login Screen',
|
||||
style: TextStyle(
|
||||
fontSize: 24,
|
||||
fontWeight: FontWeight.bold,
|
||||
final contentWidth = MediaQuery.of(context).size.width - MediaQuery.of(context).size.width * 0.90;
|
||||
final List<Map<String, String>> slides = [
|
||||
{
|
||||
'title': 'A romló tendenciádat tízféle képpen láthatod',
|
||||
'subtitle': 'Annyi statisztikát láthatsz, hogy a 8 általánosos matek nem lesz elég a kisilabizálására.'
|
||||
},
|
||||
{
|
||||
'title': 'Minden egy helyen',
|
||||
'subtitle': 'Egyetlen kattintás és máris többet tudsz, mint az osztályfőnököd.'
|
||||
},
|
||||
{
|
||||
'title': 'Könnyen érthető elemzések',
|
||||
'subtitle': 'Több száz adatból szűrjük ki neked a lényeget.'
|
||||
},
|
||||
{
|
||||
'title': 'Valós idejű frissítések',
|
||||
'subtitle': 'A statisztikáid mindig naprakészen jelennek meg.'
|
||||
}
|
||||
];
|
||||
|
||||
return MaterialApp(
|
||||
home: Scaffold(
|
||||
backgroundColor: Color(0xFFFAFFEF),
|
||||
body: SafeArea(
|
||||
child: Center(
|
||||
child: SizedBox(
|
||||
width: contentWidth,
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
SizedBox(height: 16),
|
||||
Row(
|
||||
children: [
|
||||
Container(
|
||||
width: 30,
|
||||
height: 30,
|
||||
clipBehavior: Clip.antiAlias,
|
||||
decoration: ShapeDecoration(
|
||||
image: DecorationImage(
|
||||
image: AssetImage('assets/images/logos/colored_logo.png'),
|
||||
fit: BoxFit.cover,
|
||||
),
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(6)),
|
||||
),
|
||||
),
|
||||
SizedBox(width: 8),
|
||||
Text(
|
||||
'Firka',
|
||||
style: TextStyle(
|
||||
color: Color(0xFF394B0A),
|
||||
fontSize: 17,
|
||||
fontFamily: 'Montserrat',
|
||||
fontVariations: [
|
||||
FontVariation('wght', 700),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
SizedBox(height: 16),
|
||||
Expanded(
|
||||
child: CarouselSlider.builder(
|
||||
itemCount: slides.length,
|
||||
itemBuilder: (context, index, realIndex) => Padding(
|
||||
padding: const EdgeInsets.only(bottom: 16),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
slides[index]['title']!,
|
||||
style: TextStyle(
|
||||
color: Color(0xFF394B0A),
|
||||
fontSize: 19,
|
||||
fontFamily: 'Montserrat',
|
||||
fontVariations: [
|
||||
FontVariation('wght', 700),
|
||||
],
|
||||
),
|
||||
softWrap: true,
|
||||
overflow: TextOverflow.visible,
|
||||
),
|
||||
SizedBox(height: 8),
|
||||
Text(
|
||||
slides[index]['subtitle']!,
|
||||
style: TextStyle(
|
||||
color: Color(0xFF394B0A),
|
||||
fontSize: 17,
|
||||
fontFamily: 'Montserrat',
|
||||
fontVariations: [
|
||||
FontVariation('wght', 400),
|
||||
],
|
||||
height: 1.30,
|
||||
),
|
||||
softWrap: true,
|
||||
overflow: TextOverflow.visible,
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
options: CarouselOptions(
|
||||
height: double.infinity,
|
||||
autoPlay: true,
|
||||
autoPlayInterval: const Duration(milliseconds: 3000),
|
||||
viewportFraction: 1.0,
|
||||
enableInfiniteScroll: true,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
|
21
firka/lib/screens/login/login_screen.i18n.dart
Normal file
@ -0,0 +1,21 @@
|
||||
import 'package:i18n_extension/i18n_extension.dart';
|
||||
|
||||
extension Localization on String {
|
||||
static final _t = Translations.byLocale("en_US") +
|
||||
{
|
||||
"hu_HU": {
|
||||
"Firka": "Firka",
|
||||
"Error initializing app": "Error initializing app",
|
||||
},
|
||||
"en_US": {
|
||||
"Firka": "Firka",
|
||||
"Error initializing app": "Error al inicializar la aplicación",
|
||||
},
|
||||
};
|
||||
|
||||
String get i18n => localize(this, _t);
|
||||
String fill(List<Object> params) => localizeFill(this, params);
|
||||
String plural(int value) => localizePlural(value, this, _t);
|
||||
String version(Object modifier) => localizeVersion(modifier, this, _t);
|
||||
Map<String?, String> allVersions() => localizeAllVersions(this, _t);
|
||||
}
|
@ -4,7 +4,7 @@ name: firka
|
||||
description: "Firka, Alternatív e-Kréta kliens."
|
||||
# The following line prevents the package from being accidentally published to
|
||||
# pub.dev using `flutter pub publish`. This is preferred for private packages.
|
||||
publish_to: 'none' # Remove this line if you wish to publish to pub.dev
|
||||
publish_to: "none" # Remove this line if you wish to publish to pub.dev
|
||||
|
||||
# The following defines the version and build number for your application.
|
||||
# A version number is three numbers separated by dots, like 1.2.43
|
||||
@ -21,7 +21,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
|
||||
version: 1.0.0+1
|
||||
|
||||
environment:
|
||||
sdk: '>=3.6.0 <=3.7.0'
|
||||
sdk: ">=3.6.0 <=3.7.0"
|
||||
|
||||
# Dependencies specify other packages that your package needs in order to work.
|
||||
# To automatically upgrade your package dependencies to the latest versions
|
||||
@ -43,20 +43,29 @@ dependencies:
|
||||
isar_flutter_libs: *isar_version
|
||||
build_runner: any
|
||||
path_provider: ^2.1.0
|
||||
carousel_slider: ^5.0.0
|
||||
i18n_extension: ^15.0.4
|
||||
|
||||
dev_dependencies:
|
||||
flutter_test:
|
||||
sdk: flutter
|
||||
flutter_lints: ^5.0.0
|
||||
|
||||
|
||||
# For information on the generic Dart part of this file, see the
|
||||
# following page: https://dart.dev/tools/pub/pubspec
|
||||
|
||||
# The following section is specific to Flutter packages.
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
assets:
|
||||
- assets/images/logos/colored_logo.png
|
||||
- assets/images/carousel/
|
||||
|
||||
fonts:
|
||||
- family: Montserrat
|
||||
fonts:
|
||||
- asset: assets/fonts/Montserrat-VariableFont_wght.ttf
|
||||
style: normal
|
||||
# To add assets to your application, add an assets section, like this:
|
||||
# assets:
|
||||
# - images/a_dot_burr.jpeg
|
||||
|