commit
d65c722ef0
1
.gitignore
vendored
1
.gitignore
vendored
@ -48,3 +48,4 @@ filcnaplo/ios/Podfile.lock
|
|||||||
key.properties
|
key.properties
|
||||||
|
|
||||||
.flutter-plugins*
|
.flutter-plugins*
|
||||||
|
filcnaplo/ios/Flutter/flutter_export_environment 4.sh
|
||||||
|
15
filcnaplo/ios/Flutter/Generated 4.xcconfig
Normal file
15
filcnaplo/ios/Flutter/Generated 4.xcconfig
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
// This is a generated file; do not edit or check into version control.
|
||||||
|
FLUTTER_ROOT=/Users/kima/src/flutter
|
||||||
|
FLUTTER_APPLICATION_PATH=/Users/kima/Documents/refilc/app/naplo/filcnaplo
|
||||||
|
COCOAPODS_PARALLEL_CODE_SIGN=true
|
||||||
|
FLUTTER_TARGET=/Users/kima/Documents/refilc/app/naplo/filcnaplo/lib/main.dart
|
||||||
|
FLUTTER_BUILD_DIR=build
|
||||||
|
FLUTTER_BUILD_NAME=4.1.1
|
||||||
|
FLUTTER_BUILD_NUMBER=216
|
||||||
|
EXCLUDED_ARCHS[sdk=iphonesimulator*]=i386
|
||||||
|
EXCLUDED_ARCHS[sdk=iphoneos*]=armv7
|
||||||
|
DART_DEFINES=QVBQVkVSPTQuMS4x,RkxVVFRFUl9XRUJfQVVUT19ERVRFQ1Q9dHJ1ZQ==,RkxVVFRFUl9XRUJfQ0FOVkFTS0lUX1VSTD1odHRwczovL3d3dy5nc3RhdGljLmNvbS9mbHV0dGVyLWNhbnZhc2tpdC9jZGJlZGE3ODhhMjkzZmEyOTY2NWRjM2ZhM2Q2ZTYzYmQyMjFjYjBkLw==
|
||||||
|
DART_OBFUSCATION=false
|
||||||
|
TRACK_WIDGET_CREATION=true
|
||||||
|
TREE_SHAKE_ICONS=false
|
||||||
|
PACKAGE_CONFIG=/Users/kima/Documents/refilc/app/naplo/filcnaplo/.dart_tool/package_config.json
|
14
filcnaplo/ios/Flutter/Generated 5.xcconfig
Normal file
14
filcnaplo/ios/Flutter/Generated 5.xcconfig
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
// This is a generated file; do not edit or check into version control.
|
||||||
|
FLUTTER_ROOT=/Users/kima/src/flutter
|
||||||
|
FLUTTER_APPLICATION_PATH=/Users/kima/Documents/refilc/app/naplo/filcnaplo
|
||||||
|
COCOAPODS_PARALLEL_CODE_SIGN=true
|
||||||
|
FLUTTER_TARGET=lib/main.dart
|
||||||
|
FLUTTER_BUILD_DIR=build
|
||||||
|
FLUTTER_BUILD_NAME=4.2.0
|
||||||
|
FLUTTER_BUILD_NUMBER=220
|
||||||
|
EXCLUDED_ARCHS[sdk=iphonesimulator*]=i386
|
||||||
|
EXCLUDED_ARCHS[sdk=iphoneos*]=armv7
|
||||||
|
DART_OBFUSCATION=false
|
||||||
|
TRACK_WIDGET_CREATION=true
|
||||||
|
TREE_SHAKE_ICONS=false
|
||||||
|
PACKAGE_CONFIG=.dart_tool/package_config.json
|
13
filcnaplo/ios/Flutter/flutter_export_environment 3.sh
Executable file
13
filcnaplo/ios/Flutter/flutter_export_environment 3.sh
Executable file
@ -0,0 +1,13 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# This is a generated file; do not edit or check into version control.
|
||||||
|
export "FLUTTER_ROOT=/Users/kima/src/flutter"
|
||||||
|
export "FLUTTER_APPLICATION_PATH=/Users/kima/Documents/refilc/app/naplo/filcnaplo"
|
||||||
|
export "COCOAPODS_PARALLEL_CODE_SIGN=true"
|
||||||
|
export "FLUTTER_TARGET=lib/main.dart"
|
||||||
|
export "FLUTTER_BUILD_DIR=build"
|
||||||
|
export "FLUTTER_BUILD_NAME=4.2.0"
|
||||||
|
export "FLUTTER_BUILD_NUMBER=220"
|
||||||
|
export "DART_OBFUSCATION=false"
|
||||||
|
export "TRACK_WIDGET_CREATION=true"
|
||||||
|
export "TREE_SHAKE_ICONS=false"
|
||||||
|
export "PACKAGE_CONFIG=.dart_tool/package_config.json"
|
13
filcnaplo/ios/Flutter/flutter_export_environment 5.sh
Executable file
13
filcnaplo/ios/Flutter/flutter_export_environment 5.sh
Executable file
@ -0,0 +1,13 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# This is a generated file; do not edit or check into version control.
|
||||||
|
export "FLUTTER_ROOT=/Users/kima/src/flutter"
|
||||||
|
export "FLUTTER_APPLICATION_PATH=/Users/kima/Documents/refilc/app/naplo/filcnaplo"
|
||||||
|
export "COCOAPODS_PARALLEL_CODE_SIGN=true"
|
||||||
|
export "FLUTTER_TARGET=lib/main.dart"
|
||||||
|
export "FLUTTER_BUILD_DIR=build"
|
||||||
|
export "FLUTTER_BUILD_NAME=4.2.0"
|
||||||
|
export "FLUTTER_BUILD_NUMBER=220"
|
||||||
|
export "DART_OBFUSCATION=false"
|
||||||
|
export "TRACK_WIDGET_CREATION=true"
|
||||||
|
export "TREE_SHAKE_ICONS=false"
|
||||||
|
export "PACKAGE_CONFIG=.dart_tool/package_config.json"
|
@ -27,7 +27,7 @@ enum LoginState {
|
|||||||
failed,
|
failed,
|
||||||
normal,
|
normal,
|
||||||
inProgress,
|
inProgress,
|
||||||
success
|
success,
|
||||||
}
|
}
|
||||||
|
|
||||||
Nonce getNonce(String nonce, String username, String instituteCode) {
|
Nonce getNonce(String nonce, String username, String instituteCode) {
|
||||||
@ -39,7 +39,7 @@ Nonce getNonce(String nonce, String username, String instituteCode) {
|
|||||||
return nonceEncoder;
|
return nonceEncoder;
|
||||||
}
|
}
|
||||||
|
|
||||||
Future loginApi({
|
Future loginAPI({
|
||||||
required String username,
|
required String username,
|
||||||
required String password,
|
required String password,
|
||||||
required String instituteCode,
|
required String instituteCode,
|
||||||
@ -101,27 +101,27 @@ Future loginApi({
|
|||||||
Provider.of<UserProvider>(context, listen: false).setUser(user.id);
|
Provider.of<UserProvider>(context, listen: false).setUser(user.id);
|
||||||
|
|
||||||
// Get user data
|
// Get user data
|
||||||
try {
|
// try {
|
||||||
await Future.wait([
|
await Future.wait([
|
||||||
Provider.of<GradeProvider>(context, listen: false).fetch(),
|
Provider.of<GradeProvider>(context, listen: false).fetch(),
|
||||||
Provider.of<TimetableProvider>(context, listen: false)
|
Provider.of<TimetableProvider>(context, listen: false)
|
||||||
.fetch(week: Week.current()),
|
.fetch(week: Week.current()),
|
||||||
Provider.of<ExamProvider>(context, listen: false).fetch(),
|
Provider.of<ExamProvider>(context, listen: false).fetch(),
|
||||||
Provider.of<HomeworkProvider>(context, listen: false).fetch(),
|
Provider.of<HomeworkProvider>(context, listen: false).fetch(),
|
||||||
Provider.of<MessageProvider>(context, listen: false).fetchAll(),
|
Provider.of<MessageProvider>(context, listen: false).fetchAll(),
|
||||||
Provider.of<NoteProvider>(context, listen: false).fetch(),
|
Provider.of<NoteProvider>(context, listen: false).fetch(),
|
||||||
Provider.of<EventProvider>(context, listen: false).fetch(),
|
Provider.of<EventProvider>(context, listen: false).fetch(),
|
||||||
Provider.of<AbsenceProvider>(context, listen: false).fetch(),
|
Provider.of<AbsenceProvider>(context, listen: false).fetch(),
|
||||||
]);
|
]);
|
||||||
} catch (error) {
|
// } catch (error) {
|
||||||
print("WARNING: failed to fetch user data: $error");
|
// print("WARNING: failed to fetch user data: $error");
|
||||||
}
|
// }
|
||||||
|
|
||||||
if (onSuccess != null) onSuccess();
|
if (onSuccess != null) onSuccess();
|
||||||
|
|
||||||
return LoginState.success;
|
return LoginState.success;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
print("ERROR: loginApi: $error");
|
print("ERROR: loginAPI: $error");
|
||||||
// maybe check debug mode
|
// maybe check debug mode
|
||||||
// ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text("ERROR: $error")));
|
// ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text("ERROR: $error")));
|
||||||
return LoginState.failed;
|
return LoginState.failed;
|
||||||
|
@ -44,7 +44,8 @@ class LessonTile extends StatelessWidget {
|
|||||||
fillLeading = true;
|
fillLeading = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lesson.substituteTeacher?.name != "") {
|
if (lesson.substituteTeacher != null &&
|
||||||
|
lesson.substituteTeacher?.name != "") {
|
||||||
fill = true;
|
fill = true;
|
||||||
accent = AppColors.of(context).yellow;
|
accent = AppColors.of(context).yellow;
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,7 @@ description: "Nem hivatalos e-napló alkalmazás az e-Kréta rendszerhez"
|
|||||||
homepage: https://refilc.hu
|
homepage: https://refilc.hu
|
||||||
publish_to: "none"
|
publish_to: "none"
|
||||||
|
|
||||||
version: 4.2.0+220
|
version: 4.2.1+221
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=2.17.0 <3.0.0"
|
sdk: ">=2.17.0 <3.0.0"
|
||||||
|
@ -235,7 +235,7 @@ class _LoginScreenState extends State<LoginScreen> {
|
|||||||
fontWeight: FontWeight.w600,
|
fontWeight: FontWeight.w600,
|
||||||
fontSize: 15.0,
|
fontSize: 15.0,
|
||||||
)),
|
)),
|
||||||
onPressed: () => _loginApi(context: context),
|
onPressed: () => _loginAPI(context: context),
|
||||||
),
|
),
|
||||||
visible: _loginState != LoginState.inProgress,
|
visible: _loginState != LoginState.inProgress,
|
||||||
replacement: const Padding(
|
replacement: const Padding(
|
||||||
@ -279,7 +279,7 @@ class _LoginScreenState extends State<LoginScreen> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
void _loginApi({required BuildContext context}) {
|
void _loginAPI({required BuildContext context}) {
|
||||||
String username = usernameController.text;
|
String username = usernameController.text;
|
||||||
String password = passwordController.text;
|
String password = passwordController.text;
|
||||||
|
|
||||||
@ -289,7 +289,7 @@ class _LoginScreenState extends State<LoginScreen> {
|
|||||||
|
|
||||||
setState(() => _loginState = LoginState.inProgress);
|
setState(() => _loginState = LoginState.inProgress);
|
||||||
|
|
||||||
loginApi(
|
loginAPI(
|
||||||
username: username,
|
username: username,
|
||||||
password: password,
|
password: password,
|
||||||
instituteCode: schoolController.selectedSchool!.instituteCode,
|
instituteCode: schoolController.selectedSchool!.instituteCode,
|
||||||
|
@ -61,46 +61,48 @@ class Lesson {
|
|||||||
int get hashCode => id.hashCode;
|
int get hashCode => id.hashCode;
|
||||||
|
|
||||||
factory Lesson.fromJson(Map json) {
|
factory Lesson.fromJson(Map json) {
|
||||||
|
print(json['Allapot']);
|
||||||
|
print(json['TanarNeve']);
|
||||||
return Lesson(
|
return Lesson(
|
||||||
id: json["Uid"] ?? "",
|
id: json["Uid"] ?? "",
|
||||||
status:
|
status:
|
||||||
json["Allapot"] != null ? Category.fromJson(json["Allapot"]) : null,
|
json["Allapot"] != null ? Category.fromJson(json["Allapot"]) : null,
|
||||||
date: json["Datum"] != null
|
date: json["Datum"] != null
|
||||||
? DateTime.parse(json["Datum"]).toLocal()
|
? DateTime.parse(json["Datum"]).toLocal()
|
||||||
: DateTime(0),
|
: DateTime(0),
|
||||||
subject: Subject.fromJson(json["Tantargy"] ?? {}),
|
subject: Subject.fromJson(json["Tantargy"] ?? {}),
|
||||||
lessonIndex: json["Oraszam"] != null ? json["Oraszam"].toString() : "+",
|
lessonIndex: json["Oraszam"] != null ? json["Oraszam"].toString() : "+",
|
||||||
lessonYearIndex: json["OraEvesSorszama"],
|
lessonYearIndex: json["OraEvesSorszama"],
|
||||||
substituteTeacher:
|
substituteTeacher: json["HelyettesTanarNeve"] != null
|
||||||
Teacher.fromString((json["HelyettesTanarNeve"] ?? "").trim()),
|
? Teacher.fromString((json["HelyettesTanarNeve"]).trim())
|
||||||
teacher: Teacher.fromString((json["TanarNeve"] ?? "").trim()),
|
: null,
|
||||||
homeworkEnabled: json["IsTanuloHaziFeladatEnabled"] ?? false,
|
teacher: Teacher.fromString((json["TanarNeve"] ?? "").trim()),
|
||||||
start: json["KezdetIdopont"] != null
|
homeworkEnabled: json["IsTanuloHaziFeladatEnabled"] ?? false,
|
||||||
? DateTime.parse(json["KezdetIdopont"]).toLocal()
|
start: json["KezdetIdopont"] != null
|
||||||
: DateTime(0),
|
? DateTime.parse(json["KezdetIdopont"]).toLocal()
|
||||||
studentPresence: json["TanuloJelenlet"] != null
|
: DateTime(0),
|
||||||
? (json["TanuloJelenlet"]["Nev"] ?? "") == "Hianyzas"
|
studentPresence: json["TanuloJelenlet"] != null
|
||||||
? false
|
? (json["TanuloJelenlet"]["Nev"] ?? "") == "Hianyzas"
|
||||||
: true
|
? false
|
||||||
: true,
|
: true
|
||||||
end: json["VegIdopont"] != null
|
: true,
|
||||||
? DateTime.parse(json["VegIdopont"]).toLocal()
|
end: json["VegIdopont"] != null
|
||||||
: DateTime(0),
|
? DateTime.parse(json["VegIdopont"]).toLocal()
|
||||||
homeworkId: json["HaziFeladatUid"] ?? "",
|
: DateTime(0),
|
||||||
exam: json["BejelentettSzamonkeresUid"] ?? "",
|
homeworkId: json["HaziFeladatUid"] ?? "",
|
||||||
type: json["Tipus"] != null ? Category.fromJson(json["Tipus"]) : null,
|
exam: json["BejelentettSzamonkeresUid"] ?? "",
|
||||||
description: json["Tema"] ?? "",
|
type: json["Tipus"] != null ? Category.fromJson(json["Tipus"]) : null,
|
||||||
room: ((json["TeremNeve"] ?? "").split("_").join(" ") as String)
|
description: json["Tema"] ?? "",
|
||||||
.replaceAll(RegExp(r" ?terem ?", caseSensitive: false), ""),
|
room: ((json["TeremNeve"] ?? "").split("_").join(" ") as String)
|
||||||
groupName: json["OsztalyCsoport"] != null
|
.replaceAll(RegExp(r" ?terem ?", caseSensitive: false), ""),
|
||||||
? json["OsztalyCsoport"]["Nev"] ?? ""
|
groupName: json["OsztalyCsoport"] != null
|
||||||
: "",
|
? json["OsztalyCsoport"]["Nev"] ?? ""
|
||||||
name: json["Nev"] ?? "",
|
: "",
|
||||||
online: json["IsDigitalisOra"] ?? false,
|
name: json["Nev"] ?? "",
|
||||||
isEmpty: json['isEmpty'] ?? false,
|
online: json["IsDigitalisOra"] ?? false,
|
||||||
json: json,
|
isEmpty: json['isEmpty'] ?? false,
|
||||||
isSeen: false
|
json: json,
|
||||||
);
|
isSeen: false);
|
||||||
}
|
}
|
||||||
|
|
||||||
int? getFloor() {
|
int? getFloor() {
|
||||||
|
@ -22,7 +22,8 @@ class LessonView extends StatelessWidget {
|
|||||||
|
|
||||||
if (RegExp(r'\d').hasMatch(lesson.lessonIndex)) lessonIndexTrailing = ".";
|
if (RegExp(r'\d').hasMatch(lesson.lessonIndex)) lessonIndexTrailing = ".";
|
||||||
|
|
||||||
if (lesson.substituteTeacher?.name != "") {
|
if (lesson.substituteTeacher != null &&
|
||||||
|
lesson.substituteTeacher?.name != "") {
|
||||||
accent = AppColors.of(context).yellow;
|
accent = AppColors.of(context).yellow;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
// import 'dart:async';
|
||||||
import 'dart:ui';
|
import 'dart:ui';
|
||||||
|
|
||||||
import 'package:filcnaplo/api/client.dart';
|
import 'package:filcnaplo/api/client.dart';
|
||||||
@ -42,6 +43,8 @@ class _LoginScreenState extends State<LoginScreen> {
|
|||||||
stops: [-1.0, 0.0, 1.0],
|
stops: [-1.0, 0.0, 1.0],
|
||||||
);
|
);
|
||||||
|
|
||||||
|
late String tempUsername = '';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
@ -250,7 +253,7 @@ class _LoginScreenState extends State<LoginScreen> {
|
|||||||
fontWeight: FontWeight.w600,
|
fontWeight: FontWeight.w600,
|
||||||
fontSize: 15.0,
|
fontSize: 15.0,
|
||||||
)),
|
)),
|
||||||
onPressed: () => _loginApi(context: context),
|
onPressed: () => _loginAPI(context: context),
|
||||||
),
|
),
|
||||||
visible: _loginState != LoginState.inProgress,
|
visible: _loginState != LoginState.inProgress,
|
||||||
replacement: const Padding(
|
replacement: const Padding(
|
||||||
@ -275,7 +278,10 @@ class _LoginScreenState extends State<LoginScreen> {
|
|||||||
][_loginState.index]
|
][_loginState.index]
|
||||||
.i18n,
|
.i18n,
|
||||||
style: const TextStyle(
|
style: const TextStyle(
|
||||||
color: Colors.red, fontWeight: FontWeight.w500),
|
color: Colors.red,
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
),
|
||||||
|
textAlign: TextAlign.center,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const Spacer()
|
const Spacer()
|
||||||
@ -288,35 +294,54 @@ class _LoginScreenState extends State<LoginScreen> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
void _loginApi({required BuildContext context}) {
|
void _loginAPI({required BuildContext context}) {
|
||||||
String username = usernameController.text;
|
String username = usernameController.text;
|
||||||
String password = passwordController.text;
|
String password = passwordController.text;
|
||||||
|
|
||||||
|
tempUsername = username;
|
||||||
|
|
||||||
if (username == "" ||
|
if (username == "" ||
|
||||||
password == "" ||
|
password == "" ||
|
||||||
schoolController.selectedSchool == null) {
|
schoolController.selectedSchool == null) {
|
||||||
return setState(() => _loginState = LoginState.missingFields);
|
return setState(() => _loginState = LoginState.missingFields);
|
||||||
}
|
}
|
||||||
|
|
||||||
setState(() => _loginState = LoginState.inProgress);
|
void _callAPI() {
|
||||||
|
loginAPI(
|
||||||
|
username: username,
|
||||||
|
password: password,
|
||||||
|
instituteCode: schoolController.selectedSchool!.instituteCode,
|
||||||
|
context: context,
|
||||||
|
onLogin: (user) {
|
||||||
|
ScaffoldMessenger.of(context).showSnackBar(CustomSnackBar(
|
||||||
|
context: context,
|
||||||
|
brightness: Brightness.light,
|
||||||
|
content: Text("welcome".i18n.fill([user.name]),
|
||||||
|
overflow: TextOverflow.ellipsis),
|
||||||
|
));
|
||||||
|
},
|
||||||
|
onSuccess: () {
|
||||||
|
ScaffoldMessenger.of(context).hideCurrentSnackBar();
|
||||||
|
setSystemChrome(context);
|
||||||
|
Navigator.of(context).pushReplacementNamed("login_to_navigation");
|
||||||
|
}).then(
|
||||||
|
(res) => setState(() {
|
||||||
|
// if (res == LoginState.invalidGrant &&
|
||||||
|
// tempUsername.replaceAll(username, '').length <= 3) {
|
||||||
|
// tempUsername = username + ' ';
|
||||||
|
// Timer(
|
||||||
|
// const Duration(milliseconds: 500),
|
||||||
|
// () => _loginAPI(context: context),
|
||||||
|
// );
|
||||||
|
// // _loginAPI(context: context);
|
||||||
|
// } else {
|
||||||
|
_loginState = res;
|
||||||
|
// }
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
loginApi(
|
setState(() => _loginState = LoginState.inProgress);
|
||||||
username: username,
|
_callAPI();
|
||||||
password: password,
|
|
||||||
instituteCode: schoolController.selectedSchool!.instituteCode,
|
|
||||||
context: context,
|
|
||||||
onLogin: (user) {
|
|
||||||
ScaffoldMessenger.of(context).showSnackBar(CustomSnackBar(
|
|
||||||
context: context,
|
|
||||||
brightness: Brightness.light,
|
|
||||||
content: Text("welcome".i18n.fill([user.name]),
|
|
||||||
overflow: TextOverflow.ellipsis),
|
|
||||||
));
|
|
||||||
},
|
|
||||||
onSuccess: () {
|
|
||||||
ScaffoldMessenger.of(context).hideCurrentSnackBar();
|
|
||||||
setSystemChrome(context);
|
|
||||||
Navigator.of(context).pushReplacementNamed("login_to_navigation");
|
|
||||||
}).then((res) => setState(() => _loginState = res));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,7 +12,8 @@ extension Localization on String {
|
|||||||
"login": "Log in",
|
"login": "Log in",
|
||||||
"welcome": "Welcome, %s!",
|
"welcome": "Welcome, %s!",
|
||||||
"missing_fields": "Missing Fields!",
|
"missing_fields": "Missing Fields!",
|
||||||
"invalid_grant": "Invalid Username/Password!",
|
"invalid_grant":
|
||||||
|
"Invalid Username/Password! (Try adding spaces after Username)",
|
||||||
"error": "Failed to log in.",
|
"error": "Failed to log in.",
|
||||||
"schools_error": "Failed to get schools."
|
"schools_error": "Failed to get schools."
|
||||||
},
|
},
|
||||||
@ -25,7 +26,8 @@ extension Localization on String {
|
|||||||
"login": "Belépés",
|
"login": "Belépés",
|
||||||
"welcome": "Üdv, %s!",
|
"welcome": "Üdv, %s!",
|
||||||
"missing_fields": "Hiányzó adatok!",
|
"missing_fields": "Hiányzó adatok!",
|
||||||
"invalid_grant": "Helytelen Felhasználónév/Jelszó!",
|
"invalid_grant":
|
||||||
|
"Helytelen Felhasználónév/Jelszó! (Próbálj szóközöket írni a Felhasználónév után)",
|
||||||
"error": "Sikertelen bejelentkezés.",
|
"error": "Sikertelen bejelentkezés.",
|
||||||
"schools_error": "Nem sikerült lekérni az iskolákat."
|
"schools_error": "Nem sikerült lekérni az iskolákat."
|
||||||
},
|
},
|
||||||
|
@ -12,51 +12,48 @@ class SchoolInputTile extends StatelessWidget {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Padding(
|
return Padding(
|
||||||
padding: const EdgeInsets.all(4.0),
|
padding: const EdgeInsets.all(4.0),
|
||||||
child: GestureDetector(
|
child: InkWell(
|
||||||
onPanDown: (e) {
|
onTap: () {
|
||||||
onTap!();
|
onTap!();
|
||||||
},
|
},
|
||||||
child: InkWell(
|
borderRadius: BorderRadius.circular(6.0),
|
||||||
onTapDown: (e) {},
|
child: Padding(
|
||||||
borderRadius: BorderRadius.circular(6.0),
|
padding: const EdgeInsets.all(6.0),
|
||||||
child: Padding(
|
child: Column(
|
||||||
padding: const EdgeInsets.all(6.0),
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
child: Column(
|
children: [
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
// School name
|
||||||
children: [
|
Padding(
|
||||||
// School name
|
padding: const EdgeInsets.only(bottom: 4.0),
|
||||||
Padding(
|
child: Text(
|
||||||
padding: const EdgeInsets.only(bottom: 4.0),
|
school.name,
|
||||||
child: Text(
|
maxLines: 2,
|
||||||
school.name,
|
overflow: TextOverflow.ellipsis,
|
||||||
maxLines: 2,
|
style: const TextStyle(fontWeight: FontWeight.w600),
|
||||||
overflow: TextOverflow.ellipsis,
|
),
|
||||||
style: const TextStyle(fontWeight: FontWeight.w600),
|
),
|
||||||
|
Row(
|
||||||
|
children: [
|
||||||
|
// School id
|
||||||
|
Expanded(
|
||||||
|
child: Text(
|
||||||
|
school.instituteCode,
|
||||||
|
maxLines: 1,
|
||||||
|
overflow: TextOverflow.ellipsis,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
// School city
|
||||||
Row(
|
Expanded(
|
||||||
children: [
|
child: Text(
|
||||||
// School id
|
school.city,
|
||||||
Expanded(
|
textAlign: TextAlign.right,
|
||||||
child: Text(
|
maxLines: 1,
|
||||||
school.instituteCode,
|
overflow: TextOverflow.ellipsis,
|
||||||
maxLines: 1,
|
|
||||||
overflow: TextOverflow.ellipsis,
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
// School city
|
),
|
||||||
Expanded(
|
],
|
||||||
child: Text(
|
),
|
||||||
school.city,
|
],
|
||||||
textAlign: TextAlign.right,
|
|
||||||
maxLines: 1,
|
|
||||||
overflow: TextOverflow.ellipsis,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import 'package:filcnaplo/api/providers/database_provider.dart';
|
import 'package:filcnaplo/api/providers/database_provider.dart';
|
||||||
import 'package:filcnaplo/api/providers/user_provider.dart';
|
import 'package:filcnaplo/api/providers/user_provider.dart';
|
||||||
|
import 'package:filcnaplo/theme/colors/colors.dart';
|
||||||
import 'package:filcnaplo_kreta_api/models/subject.dart';
|
import 'package:filcnaplo_kreta_api/models/subject.dart';
|
||||||
import 'package:filcnaplo_mobile_ui/common/average_display.dart';
|
import 'package:filcnaplo_mobile_ui/common/average_display.dart';
|
||||||
import 'package:filcnaplo_premium/ui/mobile/goal_planner/goal_state_screen.i18n.dart';
|
import 'package:filcnaplo_premium/ui/mobile/goal_planner/goal_state_screen.i18n.dart';
|
||||||
@ -33,7 +34,7 @@ class GoalCompleteModal extends StatelessWidget {
|
|||||||
child: Container(
|
child: Container(
|
||||||
padding: const EdgeInsets.all(16.0),
|
padding: const EdgeInsets.all(16.0),
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
color: Colors.white,
|
color: Theme.of(context).colorScheme.background,
|
||||||
borderRadius: BorderRadius.circular(20.0),
|
borderRadius: BorderRadius.circular(20.0),
|
||||||
),
|
),
|
||||||
child: Column(
|
child: Column(
|
||||||
@ -79,19 +80,21 @@ class GoalCompleteModal extends StatelessWidget {
|
|||||||
Text(
|
Text(
|
||||||
'congrats_title'.i18n,
|
'congrats_title'.i18n,
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
style: const TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 27.0,
|
fontSize: 27.0,
|
||||||
fontWeight: FontWeight.w700,
|
fontWeight: FontWeight.w700,
|
||||||
height: 1.1,
|
height: 1.2,
|
||||||
|
color: AppColors.of(context).text,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Text(
|
Text(
|
||||||
'goal_reached'.i18n.fill(['20']),
|
'goal_reached'.i18n.fill(['20']),
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
style: const TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 15.0,
|
fontSize: 15.0,
|
||||||
fontWeight: FontWeight.w500,
|
fontWeight: FontWeight.w500,
|
||||||
height: 1.1,
|
height: 1.1,
|
||||||
|
color: AppColors.of(context).text,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const SizedBox(height: 18.0),
|
const SizedBox(height: 18.0),
|
||||||
@ -103,9 +106,10 @@ class GoalCompleteModal extends StatelessWidget {
|
|||||||
Text(
|
Text(
|
||||||
'started_at'.i18n,
|
'started_at'.i18n,
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
style: const TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 17.0,
|
fontSize: 17.0,
|
||||||
fontWeight: FontWeight.w500,
|
fontWeight: FontWeight.w500,
|
||||||
|
color: AppColors.of(context).text,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const SizedBox(width: 5.0),
|
const SizedBox(width: 5.0),
|
||||||
@ -119,9 +123,10 @@ class GoalCompleteModal extends StatelessWidget {
|
|||||||
averageDifference.toStringAsFixed(2) + '%',
|
averageDifference.toStringAsFixed(2) + '%',
|
||||||
]),
|
]),
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
style: const TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 17.0,
|
fontSize: 17.0,
|
||||||
fontWeight: FontWeight.w500,
|
fontWeight: FontWeight.w500,
|
||||||
|
color: AppColors.of(context).text,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
@ -173,17 +178,17 @@ class GoalCompleteModal extends StatelessWidget {
|
|||||||
width: double.infinity,
|
width: double.infinity,
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
borderRadius: BorderRadius.circular(10.0),
|
borderRadius: BorderRadius.circular(10.0),
|
||||||
color: const Color(0xFFF5FAF9),
|
color: const Color.fromARGB(38, 131, 131, 131),
|
||||||
),
|
),
|
||||||
child: Padding(
|
child: Padding(
|
||||||
padding: const EdgeInsets.symmetric(vertical: 8.0),
|
padding: const EdgeInsets.symmetric(vertical: 8.0),
|
||||||
child: Text(
|
child: Text(
|
||||||
'later'.i18n,
|
'later'.i18n,
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
style: const TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 18.0,
|
fontSize: 18.0,
|
||||||
fontWeight: FontWeight.w700,
|
fontWeight: FontWeight.w700,
|
||||||
color: Color(0xFF01342D),
|
color: AppColors.of(context).text,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user