Compare commits
No commits in common. "master" and "5.1.0" have entirely different histories.
3
.gitmodules
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
[submodule "naplo-plus"]
|
||||
path = refilc_plus
|
||||
url = git@github.com:refilc/naplo-plus.git
|
1286
.idea/libraries/Dart_Packages.xml
generated
Normal file
41
.idea/libraries/Dart_SDK.xml
generated
@ -1,28 +1,25 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Dart SDK">
|
||||
<CLASSES>
|
||||
<root url="file://P:/flutter/bin/cache/dart-sdk/lib/async" />
|
||||
<root url="file://P:/flutter/bin/cache/dart-sdk/lib/cli" />
|
||||
<root url="file://P:/flutter/bin/cache/dart-sdk/lib/collection" />
|
||||
<root url="file://P:/flutter/bin/cache/dart-sdk/lib/concurrent" />
|
||||
<root url="file://P:/flutter/bin/cache/dart-sdk/lib/convert" />
|
||||
<root url="file://P:/flutter/bin/cache/dart-sdk/lib/core" />
|
||||
<root url="file://P:/flutter/bin/cache/dart-sdk/lib/developer" />
|
||||
<root url="file://P:/flutter/bin/cache/dart-sdk/lib/ffi" />
|
||||
<root url="file://P:/flutter/bin/cache/dart-sdk/lib/html" />
|
||||
<root url="file://P:/flutter/bin/cache/dart-sdk/lib/indexed_db" />
|
||||
<root url="file://P:/flutter/bin/cache/dart-sdk/lib/io" />
|
||||
<root url="file://P:/flutter/bin/cache/dart-sdk/lib/isolate" />
|
||||
<root url="file://P:/flutter/bin/cache/dart-sdk/lib/js" />
|
||||
<root url="file://P:/flutter/bin/cache/dart-sdk/lib/js_interop" />
|
||||
<root url="file://P:/flutter/bin/cache/dart-sdk/lib/js_interop_unsafe" />
|
||||
<root url="file://P:/flutter/bin/cache/dart-sdk/lib/js_util" />
|
||||
<root url="file://P:/flutter/bin/cache/dart-sdk/lib/math" />
|
||||
<root url="file://P:/flutter/bin/cache/dart-sdk/lib/mirrors" />
|
||||
<root url="file://P:/flutter/bin/cache/dart-sdk/lib/svg" />
|
||||
<root url="file://P:/flutter/bin/cache/dart-sdk/lib/typed_data" />
|
||||
<root url="file://P:/flutter/bin/cache/dart-sdk/lib/web_audio" />
|
||||
<root url="file://P:/flutter/bin/cache/dart-sdk/lib/web_gl" />
|
||||
<root url="file:///opt/flutter/bin/cache/dart-sdk/lib/async" />
|
||||
<root url="file:///opt/flutter/bin/cache/dart-sdk/lib/cli" />
|
||||
<root url="file:///opt/flutter/bin/cache/dart-sdk/lib/collection" />
|
||||
<root url="file:///opt/flutter/bin/cache/dart-sdk/lib/convert" />
|
||||
<root url="file:///opt/flutter/bin/cache/dart-sdk/lib/core" />
|
||||
<root url="file:///opt/flutter/bin/cache/dart-sdk/lib/developer" />
|
||||
<root url="file:///opt/flutter/bin/cache/dart-sdk/lib/ffi" />
|
||||
<root url="file:///opt/flutter/bin/cache/dart-sdk/lib/html" />
|
||||
<root url="file:///opt/flutter/bin/cache/dart-sdk/lib/indexed_db" />
|
||||
<root url="file:///opt/flutter/bin/cache/dart-sdk/lib/io" />
|
||||
<root url="file:///opt/flutter/bin/cache/dart-sdk/lib/isolate" />
|
||||
<root url="file:///opt/flutter/bin/cache/dart-sdk/lib/js" />
|
||||
<root url="file:///opt/flutter/bin/cache/dart-sdk/lib/js_util" />
|
||||
<root url="file:///opt/flutter/bin/cache/dart-sdk/lib/math" />
|
||||
<root url="file:///opt/flutter/bin/cache/dart-sdk/lib/mirrors" />
|
||||
<root url="file:///opt/flutter/bin/cache/dart-sdk/lib/svg" />
|
||||
<root url="file:///opt/flutter/bin/cache/dart-sdk/lib/typed_data" />
|
||||
<root url="file:///opt/flutter/bin/cache/dart-sdk/lib/web_audio" />
|
||||
<root url="file:///opt/flutter/bin/cache/dart-sdk/lib/web_gl" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
|
1
.idea/misc.xml
generated
@ -1,3 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectRootManager" version="2" project-jdk-name="Android API 33, extension level 3 Platform" project-jdk-type="Android SDK" />
|
||||
</project>
|
13
.idea/naplo.iml
generated
@ -60,21 +60,8 @@
|
||||
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/flutter_acrylic/build" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/flutter_acrylic/.pub" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/flutter_acrylic/.dart_tool" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/refilc/.dart_tool" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/refilc/.pub" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/refilc/build" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/refilc_kreta_api/.dart_tool" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/refilc_kreta_api/.pub" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/refilc_kreta_api/build" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/refilc_mobile_ui/.dart_tool" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/refilc_mobile_ui/.pub" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/refilc_mobile_ui/build" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/refilc_plus/.dart_tool" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/refilc_plus/.pub" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/refilc_plus/build" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" name="Dart SDK" level="project" />
|
||||
</component>
|
||||
</module>
|
5
.idea/vcs.xml
generated
@ -2,6 +2,9 @@
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="" vcs="Git" />
|
||||
<mapping directory="$PROJECT_DIR$/refilc_plus" vcs="Git" />
|
||||
<mapping directory="$PROJECT_DIR$/filcnaplo_desktop_ui" vcs="Git" />
|
||||
<mapping directory="$PROJECT_DIR$/filcnaplo_kreta_api" vcs="Git" />
|
||||
<mapping directory="$PROJECT_DIR$/filcnaplo_mobile_ui" vcs="Git" />
|
||||
<mapping directory="$PROJECT_DIR$/filcnaplo_premium" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
56
Jenkinsfile
vendored
Normal file
@ -0,0 +1,56 @@
|
||||
pipeline {
|
||||
agent any
|
||||
|
||||
environment {
|
||||
ANDROID_SDK = '/home/jenkins/flutter_things/android-sdk'
|
||||
ANDROID_PATH="$ANDROID_SDK/tools:$ANDROID_SDK/platform-tools"
|
||||
FLUTTER = '/home/jenkins/flutter_things/flutter/bin'
|
||||
PATH = "$PATH:$ANDROID_PATH:$FLUTTER"
|
||||
//TODO: need to fix flutter
|
||||
}
|
||||
|
||||
|
||||
stages {
|
||||
stage('Copy Key Properties') {
|
||||
steps {
|
||||
// Copy the key.properties file
|
||||
sh 'cp /home/jenkins/key.properties refilc/android/key.properties'
|
||||
}
|
||||
}
|
||||
|
||||
stage('Flutter Doctor') {
|
||||
steps {
|
||||
// Ensure Flutter is set up correctly
|
||||
sh 'flutter doctor'
|
||||
}
|
||||
}
|
||||
|
||||
stage('Dependencies') {
|
||||
steps {
|
||||
// Get Flutter dependencies
|
||||
sh 'cd refilc && flutter pub get'
|
||||
}
|
||||
}
|
||||
|
||||
stage('Build') {
|
||||
steps {
|
||||
// Build the Flutter project
|
||||
sh 'cd refilc && flutter build apk --release'
|
||||
}
|
||||
}
|
||||
|
||||
stage('Archive') {
|
||||
steps {
|
||||
// Archive the APK
|
||||
archiveArtifacts artifacts: 'build/app/outputs/flutter-apk/app-release.apk', fingerprint: true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
post {
|
||||
always {
|
||||
// Clean up workspace after build
|
||||
cleanWs()
|
||||
}
|
||||
}
|
||||
}
|
47
README.md
@ -1,43 +1,34 @@
|
||||
<p align=center>
|
||||
<img src="https://raw.githubusercontent.com/Laky2k8/Refilc-2-Episode-1/refs/heads/master/refilc-2-real.png" width=150>
|
||||
<img src="https://refilc.hu/image/brand/logo.png" width=150>
|
||||
<h1 align=center><b>reFilc</b></h1>
|
||||
</p>
|
||||
|
||||
#### Nem hivatalos e-napló alkalmazás az e-KRÉTA rendszerhez - tanulóktól, tanulóknak.
|
||||
|
||||
[](https://github.com/refilc/naplo/releases) [](https://discord.gg/refilc-1111649116020285532)
|
||||
[](https://github.com/refilc/naplo/releases) [](https://dc.refilc.hu)
|
||||
|
||||
## Környezet felállítása
|
||||
## Setup
|
||||
|
||||
### Source code letöltése
|
||||
### Clone the project
|
||||
|
||||
*Az építhéshez szükséged lesz a refilc_plus repora is, amit itt találsz: [student-plus](https://git.qwit.cloud/refilc/student-plus)*
|
||||
<em>A teljes source eléréséhez szükséged lesz a naplo-plus repo-ra is, mely biztonsági okokból privát. Írj Discord szerverünkön, hogy kaphass hozzáférést.</em>
|
||||
|
||||
```sh
|
||||
git clone https://git.qwit.cloud/refilc/student-legacy.git --recursive
|
||||
git clone --branch dev https://github.com/refilc/naplo --recursive
|
||||
cd naplo
|
||||
# ha ez nem töltött le refilc plus repoba értelmes dolgokat futtasd a többi parancsot is
|
||||
rm -rf refilc_plus
|
||||
git clone https://git.qwit.cloud/refilc/student-plus.git refilc_plus
|
||||
```
|
||||
|
||||
### Csomagok telepítése
|
||||
### Install packages
|
||||
|
||||
Menj be minden mappába és futtasd a következő parancsokat:
|
||||
```sh
|
||||
flutter clean
|
||||
flutter pub get
|
||||
```
|
||||
Run `fix-pub.sh`
|
||||
|
||||
### Alkalmazás építése
|
||||
### Run the app
|
||||
|
||||
```sh
|
||||
cd refilc
|
||||
flutter build apk --release
|
||||
flutter run (--release)
|
||||
```
|
||||
|
||||
*Ez egy apk fájlt fog építeni*
|
||||
|
||||
### Contribution
|
||||
|
||||
**Nézd meg a [Contribution guide](CONTRIBUTING.md)-ot!**
|
||||
@ -46,22 +37,16 @@ Az összes (ugyan azon verzióhoz tartozó) contribution meg fog jelenni a relea
|
||||
|
||||
-------
|
||||
|
||||
# Csapatunk
|
||||
# Team
|
||||
|
||||
**Management**
|
||||
- Zypherift
|
||||
- hayn
|
||||
- Pearoo
|
||||
- Zizi
|
||||
- mnus
|
||||
- xou
|
||||
**kima:** head developer / project manager
|
||||
|
||||
**Designerek**
|
||||
- dwe
|
||||
- xou
|
||||
**Reiner, pdf, Pearoo, Zizi:** community- and project manager / developer
|
||||
|
||||
**vrolandd, TMarccci:** head developer
|
||||
|
||||
**dwe., xou:** designer
|
||||
|
||||
**Péter:** video editor
|
||||
|
||||
***annon:** a régi Filc Napló fejlesztője (ez az app, ha bár sokban változott, alapjaiban a Filc-re épül)*
|
||||
<em>**annon:** a régi Filc Napló fejlesztője (ez az app, ha bár sokban változott, alapjaiban a Filc-re épül)</em>
|
||||
|
1
refilc/android/app/.gitignore
vendored
@ -1 +0,0 @@
|
||||
*.jks
|
@ -39,19 +39,6 @@ def debugKeystoreProperties = new Properties()
|
||||
def debugKeystorePropertiesFile = rootProject.file("debugkey.properties")
|
||||
debugKeystoreProperties.load(new FileInputStream(debugKeystorePropertiesFile))
|
||||
|
||||
subprojects {
|
||||
afterEvaluate { project ->
|
||||
if (project.hasProperty('android')) {
|
||||
project.android {
|
||||
if (!hasProperty('namespace') || namespace == null || namespace.isEmpty()) {
|
||||
// Assign a default namespace based on the project name or group
|
||||
namespace = project.group.toString() ?: "com.example.${project.name}"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
android {
|
||||
namespace = "hu.refilc.naplo"
|
||||
|
||||
@ -120,13 +107,7 @@ android {
|
||||
|
||||
release {
|
||||
signingConfig signingConfigs.release
|
||||
shrinkResources true
|
||||
minifyEnabled true
|
||||
debuggable false
|
||||
jniDebuggable false
|
||||
renderscriptDebuggable false
|
||||
pseudoLocalesEnabled false
|
||||
zipAlignEnabled true
|
||||
shrinkResources false
|
||||
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
||||
}
|
||||
}
|
||||
|
2
refilc/android/app/proguard-rules.pro
vendored
@ -12,5 +12,3 @@
|
||||
|
||||
-dontwarn org.joda.convert.FromString
|
||||
-dontwarn org.joda.convert.ToString
|
||||
|
||||
#-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 7.6 KiB After Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 84 KiB After Width: | Height: | Size: 114 KiB |
Before Width: | Height: | Size: 100 KiB After Width: | Height: | Size: 190 KiB |
Before Width: | Height: | Size: 69 B After Width: | Height: | Size: 69 B |
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 4.0 KiB |
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 84 KiB After Width: | Height: | Size: 114 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 7.2 KiB |
Before Width: | Height: | Size: 84 KiB After Width: | Height: | Size: 114 KiB |
Before Width: | Height: | Size: 100 KiB After Width: | Height: | Size: 190 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 100 KiB After Width: | Height: | Size: 190 KiB |
Before Width: | Height: | Size: 69 B After Width: | Height: | Size: 69 B |
@ -1,9 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@color/ic_launcher_background"/>
|
||||
<foreground>
|
||||
<inset
|
||||
android:drawable="@drawable/ic_launcher_foreground"
|
||||
android:inset="16%" />
|
||||
</foreground>
|
||||
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
|
||||
</adaptive-icon>
|
||||
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 642 B |
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 6.6 KiB After Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 9.1 KiB After Width: | Height: | Size: 3.6 KiB |
@ -6,7 +6,7 @@
|
||||
<item name="android:windowFullscreen">false</item>
|
||||
<item name="android:windowDrawsSystemBarBackgrounds">false</item>
|
||||
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
|
||||
<item name="android:windowSplashScreenBackground">#7CA021</item>
|
||||
<item name="android:windowSplashScreenBackground">#03112D</item>
|
||||
<item name="android:windowSplashScreenAnimatedIcon">@drawable/android12splash</item>
|
||||
</style>
|
||||
<!-- Theme applied to the Android Window as soon as the process has started.
|
||||
|
@ -6,7 +6,7 @@
|
||||
<item name="android:windowFullscreen">false</item>
|
||||
<item name="android:windowDrawsSystemBarBackgrounds">false</item>
|
||||
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
|
||||
<item name="android:windowSplashScreenBackground">#7CA021</item>
|
||||
<item name="android:windowSplashScreenBackground">#03112D</item>
|
||||
<item name="android:windowSplashScreenAnimatedIcon">@drawable/android12splash</item>
|
||||
</style>
|
||||
<!-- Theme applied to the Android Window as soon as the process has started.
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<color name="ic_launcher_background">#7CA021</color>
|
||||
<color name="ic_launcher_background">#03112D</color>
|
||||
|
||||
<color name="purple_200">#FFBB86FC</color>
|
||||
<color name="purple_500">#FF6200EE</color>
|
||||
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 69 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 87 KiB After Width: | Height: | Size: 72 KiB |
@ -1,3 +1,3 @@
|
||||
#!/bin/sh
|
||||
|
||||
flutter build apk --release --tree-shake-icons --split-debug-info=debug-info --split-per-abi --target-platform android-arm,android-arm64 --obfuscate
|
||||
flutter build apk --release --dart-define=APPVER=$(cat pubspec.yaml | grep version: | cut -d' ' -f2 | cut -d+ -f1) --no-tree-shake-icons
|
||||
|
@ -517,11 +517,11 @@
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
||||
CURRENT_PROJECT_VERSION = 283;
|
||||
CURRENT_PROJECT_VERSION = 282;
|
||||
DEVELOPMENT_TEAM = 4J97JVC2FG;
|
||||
ENABLE_BITCODE = NO;
|
||||
FLUTTER_BUILD_NAME = 5.1.1;
|
||||
FLUTTER_BUILD_NUMBER = 283;
|
||||
FLUTTER_BUILD_NAME = 5.1.0;
|
||||
FLUTTER_BUILD_NUMBER = 282;
|
||||
INFOPLIST_FILE = Runner/Info.plist;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = reFilc;
|
||||
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.education";
|
||||
@ -529,7 +529,7 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 5.1.1;
|
||||
MARKETING_VERSION = 5.1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = hu.qwit.refilc;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||
@ -551,7 +551,7 @@
|
||||
CODE_SIGN_ENTITLEMENTS = livecard/livecard.entitlements;
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 283;
|
||||
CURRENT_PROJECT_VERSION = 282;
|
||||
DEVELOPMENT_TEAM = 4J97JVC2FG;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
@ -565,7 +565,7 @@
|
||||
"@executable_path/Frameworks",
|
||||
"@executable_path/../../Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 5.1.1;
|
||||
MARKETING_VERSION = 5.1.0;
|
||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||
MTL_FAST_MATH = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = hu.qwit.refilc.livecard;
|
||||
@ -593,7 +593,7 @@
|
||||
CODE_SIGN_ENTITLEMENTS = livecard/livecard.entitlements;
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 283;
|
||||
CURRENT_PROJECT_VERSION = 282;
|
||||
DEVELOPMENT_TEAM = 4J97JVC2FG;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
@ -607,7 +607,7 @@
|
||||
"@executable_path/Frameworks",
|
||||
"@executable_path/../../Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 5.1.1;
|
||||
MARKETING_VERSION = 5.1.0;
|
||||
MTL_FAST_MATH = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = hu.qwit.refilc.livecard;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
@ -633,7 +633,7 @@
|
||||
CODE_SIGN_ENTITLEMENTS = livecard/livecard.entitlements;
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 283;
|
||||
CURRENT_PROJECT_VERSION = 282;
|
||||
DEVELOPMENT_TEAM = 4J97JVC2FG;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
@ -647,7 +647,7 @@
|
||||
"@executable_path/Frameworks",
|
||||
"@executable_path/../../Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 5.1.1;
|
||||
MARKETING_VERSION = 5.1.0;
|
||||
MTL_FAST_MATH = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = hu.qwit.refilc.livecard;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
@ -777,11 +777,11 @@
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
||||
CURRENT_PROJECT_VERSION = 283;
|
||||
CURRENT_PROJECT_VERSION = 282;
|
||||
DEVELOPMENT_TEAM = 4J97JVC2FG;
|
||||
ENABLE_BITCODE = NO;
|
||||
FLUTTER_BUILD_NAME = 5.1.1;
|
||||
FLUTTER_BUILD_NUMBER = 283;
|
||||
FLUTTER_BUILD_NAME = 5.1.0;
|
||||
FLUTTER_BUILD_NUMBER = 282;
|
||||
INFOPLIST_FILE = Runner/Info.plist;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = reFilc;
|
||||
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.education";
|
||||
@ -789,7 +789,7 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 5.1.1;
|
||||
MARKETING_VERSION = 5.1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = hu.qwit.refilc;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||
@ -807,11 +807,11 @@
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
||||
CURRENT_PROJECT_VERSION = 283;
|
||||
CURRENT_PROJECT_VERSION = 282;
|
||||
DEVELOPMENT_TEAM = 4J97JVC2FG;
|
||||
ENABLE_BITCODE = NO;
|
||||
FLUTTER_BUILD_NAME = 5.1.1;
|
||||
FLUTTER_BUILD_NUMBER = 283;
|
||||
FLUTTER_BUILD_NAME = 5.1.0;
|
||||
FLUTTER_BUILD_NUMBER = 282;
|
||||
INFOPLIST_FILE = Runner/Info.plist;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = reFilc;
|
||||
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.education";
|
||||
@ -819,7 +819,7 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 5.1.1;
|
||||
MARKETING_VERSION = 5.1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = hu.qwit.refilc;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||
|
Before Width: | Height: | Size: 69 B After Width: | Height: | Size: 69 B |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 84 KiB After Width: | Height: | Size: 114 KiB |
@ -38,7 +38,7 @@
|
||||
</scene>
|
||||
</scenes>
|
||||
<resources>
|
||||
<image name="LaunchImage" width="2700" height="2700"/>
|
||||
<image name="LaunchImage" width="1700" height="1700"/>
|
||||
<image name="LaunchBackground" width="1" height="1"/>
|
||||
</resources>
|
||||
</document>
|
||||
|
@ -11,17 +11,6 @@ struct Widgets: WidgetBundle {
|
||||
}
|
||||
}
|
||||
|
||||
// text contrast background
|
||||
extension Text {
|
||||
func getContrastText(backgroundColor: Color) -> some View {
|
||||
var r, g, b, a: CGFloat
|
||||
(r, g, b, a) = (0, 0, 0, 0)
|
||||
UIColor(backgroundColor).getRed(&r, green: &g, blue: &b, alpha: &a)
|
||||
let luminance = 0.2126 * r + 0.7152 * g + 0.0722 * b
|
||||
return luminance < 0.6 ? self.foregroundColor(.white) : self.foregroundColor(.black)
|
||||
}
|
||||
}
|
||||
|
||||
// Color Converter
|
||||
extension Color {
|
||||
init(hex: String, alpha: Double = 1.0) {
|
||||
@ -73,6 +62,7 @@ struct LockScreenLiveActivityView: View {
|
||||
.font(.body)
|
||||
.bold()
|
||||
.padding(.trailing, 90)
|
||||
|
||||
} else {
|
||||
MultilineTextView(text: "\(context.state.index) \(context.state.title) - \(context.state.subtitle)", limit: 25)
|
||||
.font(.body)
|
||||
@ -94,7 +84,6 @@ struct LockScreenLiveActivityView: View {
|
||||
.resizable()
|
||||
.aspectRatio(contentMode: .fit)
|
||||
.frame(width: CGFloat(8), height: CGFloat(8))
|
||||
.foregroundStyle(.secondary)
|
||||
Text("\(context.state.nextSubject) - \(context.state.nextRoom)")
|
||||
.font(.caption)
|
||||
}
|
||||
@ -118,15 +107,11 @@ struct LockScreenLiveActivityView: View {
|
||||
.monospacedDigit()
|
||||
.padding(.trailing)
|
||||
}
|
||||
// .activityBackgroundTint(
|
||||
// context.state.color != "#676767"
|
||||
// ? Color(hex: context.state.color)
|
||||
// : Color.clear
|
||||
// )
|
||||
.activityBackgroundTint(
|
||||
Color.clear
|
||||
context.state.color != "#676767"
|
||||
? Color(hex: context.state.color)
|
||||
: Color.clear
|
||||
)
|
||||
.foregroundStyle(Color(hex: context.state.color))
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -21,48 +21,45 @@ class FilcAPI {
|
||||
static const baseUrl = "https://api.refilcapp.hu";
|
||||
|
||||
// Public API
|
||||
static const schoolList = "https://api.refilcapp.hu/v3/public/school-list";
|
||||
static const news = "https://staticrf-api.pages.dev/news/index.json";
|
||||
static const supporters = "0.0.0.0";
|
||||
static const schoolList = "$baseUrl/v3/public/school-list";
|
||||
static const news = "$baseUrl/v4/public/news";
|
||||
static const supporters = "$baseUrl/v3/public/supporters";
|
||||
|
||||
// Private API
|
||||
static const ads = "0.0.0.0";
|
||||
static const ads = "$baseUrl/v3/private/ads";
|
||||
static const config = "$baseUrl/v3/private/config";
|
||||
static const reportApi = "$baseUrl/v3/private/crash-report";
|
||||
static const rfPlus = "0.0.0.0";
|
||||
static const plusAuthLogin = "0.0.0.0";
|
||||
static const plusAuthCallback = "0.0.0.0";
|
||||
static const plusActivation = "0.0.0.0";
|
||||
static const plusScopes = "0.0.0.0/";
|
||||
static const rfPlus = "$baseUrl/v3/rf-plus";
|
||||
static const plusAuthLogin = "$rfPlus/auth/login";
|
||||
static const plusAuthCallback = "$rfPlus/auth/callback";
|
||||
static const plusActivation = "$rfPlus/activate";
|
||||
static const plusScopes = "$rfPlus/scopes";
|
||||
|
||||
// Updates
|
||||
static const repo = "refilc/naplo";
|
||||
static const releases = "https://api.github.com/repos/$repo/releases";
|
||||
|
||||
// Share API
|
||||
static const themeShare = "https://api.refilcapp.hu/v3/shared/theme/add";
|
||||
static const themeGet = "https://api.refilcapp.hu/v3/shared/theme/get";
|
||||
static const themeShare = "$baseUrl/v3/shared/theme/add";
|
||||
static const themeGet = "$baseUrl/v3/shared/theme/get";
|
||||
static const allThemes = "$themeGet/all";
|
||||
static const themeByID = "$themeGet/";
|
||||
|
||||
static const gradeColorsShare = "https://api.refilcapp.hu/v3/shared/grade-colors/add";
|
||||
static const gradeColorsGet = "https://api.refilcapp.hu/v3/shared/grade-colors/get";
|
||||
static const gradeColorsShare = "$baseUrl/v3/shared/grade-colors/add";
|
||||
static const gradeColorsGet = "$baseUrl/v3/shared/grade-colors/get";
|
||||
static const allGradeColors = "$gradeColorsGet/all";
|
||||
static const gradeColorsByID = "$gradeColorsGet/";
|
||||
|
||||
// Payment API
|
||||
static const payment = "0.0.0.0";
|
||||
static const stripeSheet = "0.0.0.0";
|
||||
static const payment = "$baseUrl/v4/payment";
|
||||
static const stripeSheet = "$payment/stripe-sheet";
|
||||
|
||||
// Cloud Sync
|
||||
// cloud sync? for what reason
|
||||
static const cloudSyncApi = "0.0.0.0";
|
||||
static const cloudSyncApi = "$baseUrl/v4/me/cloud-sync";
|
||||
|
||||
static Future<bool> checkConnectivity() async =>
|
||||
(await Connectivity().checkConnectivity())[0] != ConnectivityResult.none;
|
||||
|
||||
|
||||
// nem tudom nem vazar-e senkit se, de mar ertelmetlen ez
|
||||
static Future<List<School>?> getSchools() async {
|
||||
try {
|
||||
http.Response res = await http.get(Uri.parse(schoolList));
|
||||
@ -72,6 +69,16 @@ class FilcAPI {
|
||||
.cast<Map>()
|
||||
.map((json) => School.fromJson(json))
|
||||
.toList();
|
||||
schools.add(School(
|
||||
city: "Stockholm",
|
||||
instituteCode: "refilc-test-sweden",
|
||||
name: "reFilc Test SE - Leo Ekström High School",
|
||||
));
|
||||
schools.add(School(
|
||||
city: "Madrid",
|
||||
instituteCode: "refilc-test-spain",
|
||||
name: "reFilc Test ES - Emilio Obrero University",
|
||||
));
|
||||
return schools;
|
||||
} else {
|
||||
throw "HTTP ${res.statusCode}: ${res.body}";
|
||||
@ -94,7 +101,9 @@ class FilcAPI {
|
||||
"rf-platform-version": settings.analyticsEnabled
|
||||
? Platform.operatingSystemVersion
|
||||
: "unknown",
|
||||
"rf-app-version": const String.fromEnvironment("APPVER", defaultValue: "?"),
|
||||
"rf-app-version": settings.analyticsEnabled
|
||||
? const String.fromEnvironment("APPVER", defaultValue: "?")
|
||||
: "unknown",
|
||||
"rf-uinid": settings.xFilcId,
|
||||
};
|
||||
|
||||
@ -125,8 +134,7 @@ class FilcAPI {
|
||||
http.Response res = await http.get(Uri.parse(news));
|
||||
|
||||
if (res.statusCode == 200) {
|
||||
String utf8Body = utf8.decode(res.bodyBytes);
|
||||
return (jsonDecode(utf8Body) as List)
|
||||
return (jsonDecode(res.body) as List)
|
||||
.cast<Map>()
|
||||
.map((e) => News.fromJson(e))
|
||||
.toList();
|
||||
@ -388,6 +396,27 @@ class FilcAPI {
|
||||
|
||||
// cloud sync
|
||||
static Future<Map?> cloudSync(Map<String, String> data, String token) async {
|
||||
try {
|
||||
var client = http.Client();
|
||||
|
||||
http.Response res = await client.post(
|
||||
Uri.parse(cloudSyncApi),
|
||||
body: data,
|
||||
headers: {
|
||||
'Content-Type': 'application/x-www-form-urlencoded',
|
||||
'Authorization': 'Bearer $token',
|
||||
},
|
||||
);
|
||||
|
||||
if (res.statusCode != 200) {
|
||||
throw "HTTP ${res.statusCode}: ${res.body}";
|
||||
}
|
||||
|
||||
return jsonDecode(res.body);
|
||||
} on Exception catch (error, stacktrace) {
|
||||
log("ERROR: FilcAPI.cloudSync: $error $stacktrace");
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@ -18,7 +18,7 @@ class AdProvider extends ChangeNotifier {
|
||||
}
|
||||
|
||||
Future<void> fetch() async {
|
||||
_ads = [];
|
||||
_ads = await FilcAPI.getAds() ?? [];
|
||||
_ads.sort((a, b) => -a.date.compareTo(b.date));
|
||||
|
||||
// check for new ads
|
||||
|
@ -1,3 +1,5 @@
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:refilc/database/query.dart';
|
||||
import 'package:refilc/database/store.dart';
|
||||
// ignore: depend_on_referenced_packages
|
||||
|
@ -5,7 +5,6 @@ import 'dart:async';
|
||||
import 'package:refilc/api/providers/liveactivity/platform_channel.dart';
|
||||
import 'package:refilc/helpers/subject.dart';
|
||||
import 'package:refilc/models/settings.dart';
|
||||
import 'package:refilc/ui/flutter_colorpicker/utils.dart';
|
||||
import 'package:refilc_kreta_api/models/lesson.dart';
|
||||
import 'package:refilc_kreta_api/models/week.dart';
|
||||
import 'package:refilc/utils/format.dart';
|
||||
@ -85,14 +84,11 @@ class LiveCardProvider extends ChangeNotifier {
|
||||
}
|
||||
|
||||
Map<String, String> toMap() {
|
||||
// print("LIVE ACTIVITY COLOR BELOW:");
|
||||
// print(_settings.liveActivityColor.toHexString().substring(2));
|
||||
String color = '#${_settings.liveActivityColor.toHexString().substring(2)}';
|
||||
|
||||
switch (currentState) {
|
||||
case LiveCardState.morning:
|
||||
return {
|
||||
"color": color,
|
||||
"color":
|
||||
'#${_settings.liveActivityColor.toString().substring(10, 16)}',
|
||||
"icon": nextLesson != null
|
||||
? SubjectIcon.resolveName(subject: nextLesson?.subject)
|
||||
: "book",
|
||||
@ -116,7 +112,8 @@ class LiveCardProvider extends ChangeNotifier {
|
||||
|
||||
case LiveCardState.afternoon:
|
||||
return {
|
||||
"color": color,
|
||||
"color":
|
||||
'#${_settings.liveActivityColor.toString().substring(10, 16)}',
|
||||
"icon": nextLesson != null
|
||||
? SubjectIcon.resolveName(subject: nextLesson?.subject)
|
||||
: "book",
|
||||
@ -140,7 +137,8 @@ class LiveCardProvider extends ChangeNotifier {
|
||||
|
||||
case LiveCardState.night:
|
||||
return {
|
||||
"color": color,
|
||||
"color":
|
||||
'#${_settings.liveActivityColor.toString().substring(10, 16)}',
|
||||
"icon": nextLesson != null
|
||||
? SubjectIcon.resolveName(subject: nextLesson?.subject)
|
||||
: "book",
|
||||
@ -164,7 +162,8 @@ class LiveCardProvider extends ChangeNotifier {
|
||||
|
||||
case LiveCardState.duringLesson:
|
||||
return {
|
||||
"color": color,
|
||||
"color":
|
||||
'#${_settings.liveActivityColor.toString().substring(10, 16)}',
|
||||
"icon": currentLesson != null
|
||||
? SubjectIcon.resolveName(subject: currentLesson?.subject)
|
||||
: "book",
|
||||
@ -175,8 +174,7 @@ class LiveCardProvider extends ChangeNotifier {
|
||||
ShortSubject.resolve(subject: currentLesson?.subject)
|
||||
.capital()
|
||||
: "",
|
||||
"subtitle":
|
||||
"Terem: ${currentLesson?.room.replaceAll("_", " ") ?? ""}",
|
||||
"subtitle": "Terem: ${currentLesson?.room.replaceAll("_", " ") ?? ""}",
|
||||
"description": currentLesson?.description ?? "",
|
||||
"startDate": ((currentLesson?.start.millisecondsSinceEpoch ?? 0) -
|
||||
_delay.inMilliseconds)
|
||||
@ -201,7 +199,8 @@ class LiveCardProvider extends ChangeNotifier {
|
||||
final diff = getFloorDifference();
|
||||
|
||||
return {
|
||||
"color": color,
|
||||
"color":
|
||||
'#${_settings.liveActivityColor.toString().substring(10, 16)}',
|
||||
"icon": iconFloorMap[diff] ?? "cup.and.saucer",
|
||||
"title": "Szünet",
|
||||
"description": "go $diff".i18n.fill([
|
||||
@ -363,11 +362,7 @@ class LiveCardProvider extends ChangeNotifier {
|
||||
}
|
||||
|
||||
//END
|
||||
if ((currentState == LiveCardState.afternoon ||
|
||||
currentState == LiveCardState.morning ||
|
||||
currentState == LiveCardState.night) &&
|
||||
hasActivityStarted &&
|
||||
nextLesson != null &&
|
||||
if ((currentState == LiveCardState.afternoon || currentState == LiveCardState.morning || currentState == LiveCardState.night) && hasActivityStarted && nextLesson != null &&
|
||||
nextLesson!.start.difference(now).inMinutes > 60) {
|
||||
debugPrint("Több, mint 1 óra van az első óráig. Befejezés...");
|
||||
PlatformChannel.endLiveActivity();
|
||||
|
@ -470,7 +470,7 @@ class SettingsProvider extends ChangeNotifier {
|
||||
notificationsMessagesEnabled: true,
|
||||
notificationsLessonsEnabled: true,
|
||||
notificationsBitfield: 255,
|
||||
developerMode: true,
|
||||
developerMode: false,
|
||||
notificationPollInterval: 1,
|
||||
vibrate: VibrationStrength.medium,
|
||||
abWeeks: false,
|
||||
@ -478,7 +478,7 @@ class SettingsProvider extends ChangeNotifier {
|
||||
updateChannel: UpdateChannel.stable,
|
||||
config: Config.fromJson({}),
|
||||
xFilcId: const Uuid().v4(),
|
||||
analyticsEnabled: false,
|
||||
analyticsEnabled: true,
|
||||
graphClassAvg: false,
|
||||
goodStudent: false,
|
||||
presentationMode: false,
|
||||
@ -500,13 +500,13 @@ class SettingsProvider extends ChangeNotifier {
|
||||
renameSubjectsItalics: false,
|
||||
renameTeachersEnabled: false,
|
||||
renameTeachersItalics: false,
|
||||
liveActivityColor: const Color(0x00000000),
|
||||
liveActivityColor: const Color(0xFF676767),
|
||||
welcomeMessage: '',
|
||||
appIcon: 'refilc_default',
|
||||
currentThemeId: '',
|
||||
currentThemeDisplayName: '',
|
||||
currentThemeCreator: 'reFilc',
|
||||
showBreaks: false,
|
||||
showBreaks: true,
|
||||
pinSetGeneral: '',
|
||||
pinSetPersonalize: '',
|
||||
pinSetNotify: '',
|
||||
|
@ -115,42 +115,42 @@ class AppTheme {
|
||||
primary: accent,
|
||||
onPrimary:
|
||||
(accent.computeLuminance() > 0.5 ? Colors.black : Colors.white)
|
||||
.withValues(alpha: .9),
|
||||
.withOpacity(.9),
|
||||
secondary: newSecondary,
|
||||
onSecondary: (newSecondary.computeLuminance() > 0.5
|
||||
? Colors.black
|
||||
: Colors.white)
|
||||
.withValues(alpha: .9),
|
||||
.withOpacity(.9),
|
||||
tertiary: newTertiary,
|
||||
onTertiary:
|
||||
(newTertiary.computeLuminance() > 0.5 ? Colors.black : Colors.white)
|
||||
.withValues(alpha: .9),
|
||||
.withOpacity(.9),
|
||||
brightness: Brightness.light,
|
||||
error: lightColors.red,
|
||||
onError: Colors.white.withValues(alpha: .9),
|
||||
onError: Colors.white.withOpacity(.9),
|
||||
surface: highlightColor,
|
||||
onSurface: Colors.black.withValues(alpha: .9),
|
||||
onSurface: Colors.black.withOpacity(.9),
|
||||
),
|
||||
shadowColor: lightColors.shadow.withValues(alpha: .5),
|
||||
shadowColor: lightColors.shadow.withOpacity(.5),
|
||||
appBarTheme: AppBarTheme(backgroundColor: backgroundColor),
|
||||
indicatorColor: accent,
|
||||
iconTheme: IconThemeData(color: lightColors.text.withValues(alpha: .75)),
|
||||
iconTheme: IconThemeData(color: lightColors.text.withOpacity(.75)),
|
||||
navigationBarTheme: NavigationBarThemeData(
|
||||
indicatorColor: accent.withValues(
|
||||
alpha: accentColor == AccentColor.adaptive ? 0.4 : 0.8),
|
||||
indicatorColor:
|
||||
accent.withOpacity(accentColor == AccentColor.adaptive ? 0.4 : 0.8),
|
||||
iconTheme:
|
||||
WidgetStateProperty.all(IconThemeData(color: lightColors.text)),
|
||||
backgroundColor: highlightColor,
|
||||
labelTextStyle: WidgetStateProperty.all(TextStyle(
|
||||
fontSize: 13.0,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: lightColors.text.withValues(alpha: 0.8),
|
||||
color: lightColors.text.withOpacity(0.8),
|
||||
)),
|
||||
labelBehavior: NavigationDestinationLabelBehavior.alwaysShow,
|
||||
height: 76.0,
|
||||
),
|
||||
sliderTheme: SliderThemeData(
|
||||
inactiveTrackColor: accent.withValues(alpha: .3),
|
||||
inactiveTrackColor: accent.withOpacity(.3),
|
||||
),
|
||||
progressIndicatorTheme: ProgressIndicatorThemeData(color: accent),
|
||||
expansionTileTheme: ExpansionTileThemeData(iconColor: accent),
|
||||
@ -238,48 +238,48 @@ class AppTheme {
|
||||
primary: accent,
|
||||
onPrimary:
|
||||
(accent.computeLuminance() > 0.5 ? Colors.black : Colors.white)
|
||||
.withValues(alpha: .9),
|
||||
.withOpacity(.9),
|
||||
secondary: newSecondary,
|
||||
onSecondary: (newSecondary.computeLuminance() > 0.5
|
||||
? Colors.black
|
||||
: Colors.white)
|
||||
.withValues(alpha: .9),
|
||||
.withOpacity(.9),
|
||||
tertiary: newTertiary,
|
||||
onTertiary:
|
||||
(newTertiary.computeLuminance() > 0.5 ? Colors.black : Colors.white)
|
||||
.withValues(alpha: .9),
|
||||
.withOpacity(.9),
|
||||
brightness: Brightness.dark,
|
||||
error: darkColors.red,
|
||||
onError: Colors.black.withValues(alpha: .9),
|
||||
onError: Colors.black.withOpacity(.9),
|
||||
surface: highlightColor,
|
||||
onSurface: Colors.white.withValues(alpha: .9),
|
||||
onSurface: Colors.white.withOpacity(.9),
|
||||
),
|
||||
shadowColor: highlightColor.withValues(alpha: .5), //darkColors.shadow,
|
||||
shadowColor: highlightColor.withOpacity(.5), //darkColors.shadow,
|
||||
appBarTheme: AppBarTheme(backgroundColor: backgroundColor),
|
||||
indicatorColor: accent,
|
||||
iconTheme: IconThemeData(color: darkColors.text.withValues(alpha: .75)),
|
||||
iconTheme: IconThemeData(color: darkColors.text.withOpacity(.75)),
|
||||
navigationBarTheme: NavigationBarThemeData(
|
||||
indicatorColor: accent.withValues(
|
||||
alpha: accentColor == AccentColor.adaptive ? 0.4 : 0.8),
|
||||
indicatorColor:
|
||||
accent.withOpacity(accentColor == AccentColor.adaptive ? 0.4 : 0.8),
|
||||
iconTheme:
|
||||
WidgetStateProperty.all(IconThemeData(color: darkColors.text)),
|
||||
backgroundColor: highlightColor,
|
||||
labelTextStyle: WidgetStateProperty.all(TextStyle(
|
||||
fontSize: 13.0,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: darkColors.text.withValues(alpha: 0.8),
|
||||
color: darkColors.text.withOpacity(0.8),
|
||||
)),
|
||||
labelBehavior: NavigationDestinationLabelBehavior.alwaysShow,
|
||||
height: 76.0,
|
||||
),
|
||||
sliderTheme: SliderThemeData(
|
||||
inactiveTrackColor: accent.withValues(alpha: .3),
|
||||
inactiveTrackColor: accent.withOpacity(.3),
|
||||
),
|
||||
progressIndicatorTheme: ProgressIndicatorThemeData(color: accent),
|
||||
expansionTileTheme: ExpansionTileThemeData(iconColor: accent),
|
||||
cardColor: highlightColor,
|
||||
chipTheme: ChipThemeData(
|
||||
backgroundColor: accent.withValues(alpha: .2),
|
||||
backgroundColor: accent.withOpacity(.2),
|
||||
elevation: 1,
|
||||
),
|
||||
bottomNavigationBarTheme: BottomNavigationBarThemeData(
|
||||
|
@ -191,7 +191,7 @@ List<Widget> sortDateWidgets(
|
||||
width: 150.0,
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(12.0),
|
||||
color: AppColors.of(context).text.withValues(alpha: .25),
|
||||
color: AppColors.of(context).text.withOpacity(.25),
|
||||
),
|
||||
),
|
||||
),
|
||||
|
@ -178,7 +178,8 @@ Future<List<DateWidget>> getFilterWidgets(FilterType activeData,
|
||||
// Ads
|
||||
case FilterType.ads:
|
||||
if (adProvider.available) {
|
||||
items = ad_filter.getWidgets(adProvider.ads, context);
|
||||
items = ad_filter.getWidgets(
|
||||
adProvider.ads, context);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -232,8 +233,8 @@ Widget filterItemBuilder(
|
||||
BoxShadow(
|
||||
offset: const Offset(0, 21),
|
||||
blurRadius: 23.0,
|
||||
color: Theme.of(context).shadowColor.withValues(
|
||||
alpha: Theme.of(context).shadowColor.opacity *
|
||||
color: Theme.of(context).shadowColor.withOpacity(
|
||||
Theme.of(context).shadowColor.opacity *
|
||||
CurvedAnimation(
|
||||
parent: CurvedAnimation(
|
||||
parent: animation,
|
||||
|
@ -73,7 +73,7 @@ Widget _defaultItemBuilder(
|
||||
color: color,
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: color.withValues(alpha: 0.8),
|
||||
color: color.withOpacity(0.8),
|
||||
offset: const Offset(1, 2),
|
||||
blurRadius: 5)
|
||||
],
|
||||
|
@ -380,7 +380,7 @@ class FilcColorPickerState extends State<FilcColorPicker> {
|
||||
fontSize: 16.0,
|
||||
color: AppColors.of(context)
|
||||
.text
|
||||
.withValues(alpha: isAdvancedView ? 1.0 : .5),
|
||||
.withOpacity(isAdvancedView ? 1.0 : .5),
|
||||
),
|
||||
),
|
||||
],
|
||||
|
@ -210,32 +210,32 @@ class TrackPainter extends CustomPainter {
|
||||
break;
|
||||
case TrackType.red:
|
||||
final List<Color> colors = [
|
||||
hsvColor.toColor().withRed(0).withValues(alpha: 1.0),
|
||||
hsvColor.toColor().withRed(255).withValues(alpha: 1.0),
|
||||
hsvColor.toColor().withRed(0).withOpacity(1.0),
|
||||
hsvColor.toColor().withRed(255).withOpacity(1.0),
|
||||
];
|
||||
Gradient gradient = LinearGradient(colors: colors);
|
||||
canvas.drawRect(rect, Paint()..shader = gradient.createShader(rect));
|
||||
break;
|
||||
case TrackType.green:
|
||||
final List<Color> colors = [
|
||||
hsvColor.toColor().withGreen(0).withValues(alpha: 1.0),
|
||||
hsvColor.toColor().withGreen(255).withValues(alpha: 1.0),
|
||||
hsvColor.toColor().withGreen(0).withOpacity(1.0),
|
||||
hsvColor.toColor().withGreen(255).withOpacity(1.0),
|
||||
];
|
||||
Gradient gradient = LinearGradient(colors: colors);
|
||||
canvas.drawRect(rect, Paint()..shader = gradient.createShader(rect));
|
||||
break;
|
||||
case TrackType.blue:
|
||||
final List<Color> colors = [
|
||||
hsvColor.toColor().withBlue(0).withValues(alpha: 1.0),
|
||||
hsvColor.toColor().withBlue(255).withValues(alpha: 1.0),
|
||||
hsvColor.toColor().withBlue(0).withOpacity(1.0),
|
||||
hsvColor.toColor().withBlue(255).withOpacity(1.0),
|
||||
];
|
||||
Gradient gradient = LinearGradient(colors: colors);
|
||||
canvas.drawRect(rect, Paint()..shader = gradient.createShader(rect));
|
||||
break;
|
||||
case TrackType.alpha:
|
||||
final List<Color> colors = [
|
||||
hsvColor.toColor().withValues(alpha: 0.0),
|
||||
hsvColor.toColor().withValues(alpha: 1.0),
|
||||
hsvColor.toColor().withOpacity(0.0),
|
||||
hsvColor.toColor().withOpacity(1.0),
|
||||
];
|
||||
Gradient gradient = LinearGradient(colors: colors);
|
||||
canvas.drawRect(rect, Paint()..shader = gradient.createShader(rect));
|
||||
@ -390,7 +390,7 @@ class ColorPickerInputState extends State<ColorPickerInput> {
|
||||
),
|
||||
contentPadding:
|
||||
const EdgeInsets.symmetric(vertical: 8.0, horizontal: 8.0),
|
||||
fillColor: AppColors.of(context).text.withValues(alpha: .1),
|
||||
fillColor: AppColors.of(context).text.withOpacity(.1),
|
||||
),
|
||||
onChanged: (String value) {
|
||||
String input = value;
|
||||
@ -603,20 +603,20 @@ class ColorPickerSlider extends StatelessWidget {
|
||||
break;
|
||||
case TrackType.red:
|
||||
thumbOffset += (box.maxWidth - 30.0) * hsvColor.toColor().red / 0xff;
|
||||
thumbColor = hsvColor.toColor().withValues(alpha: 1.0);
|
||||
thumbColor = hsvColor.toColor().withOpacity(1.0);
|
||||
break;
|
||||
case TrackType.green:
|
||||
thumbOffset +=
|
||||
(box.maxWidth - 30.0) * hsvColor.toColor().green / 0xff;
|
||||
thumbColor = hsvColor.toColor().withValues(alpha: 1.0);
|
||||
thumbColor = hsvColor.toColor().withOpacity(1.0);
|
||||
break;
|
||||
case TrackType.blue:
|
||||
thumbOffset += (box.maxWidth - 30.0) * hsvColor.toColor().blue / 0xff;
|
||||
thumbColor = hsvColor.toColor().withValues(alpha: 1.0);
|
||||
thumbColor = hsvColor.toColor().withOpacity(1.0);
|
||||
break;
|
||||
case TrackType.alpha:
|
||||
thumbOffset += (box.maxWidth - 30.0) * hsvColor.toColor().opacity;
|
||||
thumbColor = hsvColor.toColor().withValues(alpha: hsvColor.alpha);
|
||||
thumbColor = hsvColor.toColor().withOpacity(hsvColor.alpha);
|
||||
break;
|
||||
}
|
||||
|
||||
@ -709,8 +709,8 @@ class ColorIndicator extends StatelessWidget {
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: useWhiteForeground(color)
|
||||
? Colors.white.withValues(alpha: .5)
|
||||
: Colors.black.withValues(alpha: .5),
|
||||
? Colors.white.withOpacity(.5)
|
||||
: Colors.black.withOpacity(.5),
|
||||
offset: const Offset(0, 0),
|
||||
blurRadius: 5)
|
||||
],
|
||||
|
@ -199,7 +199,7 @@ class GradeTile extends StatelessWidget {
|
||||
: Icon(
|
||||
SubjectIcon.resolveVariant(
|
||||
context: context, subject: grade.subject),
|
||||
color: AppColors.of(context).text.withValues(alpha: .5),
|
||||
color: AppColors.of(context).text.withOpacity(.5),
|
||||
),
|
||||
minLeadingWidth: isSubjectView ? 32.0 : 0,
|
||||
),
|
||||
@ -288,8 +288,7 @@ class GradeValueWidget extends StatelessWidget {
|
||||
shadows: [
|
||||
if (value.weight >= 200)
|
||||
Shadow(
|
||||
color:
|
||||
(contrast ? Colors.white : color).withValues(alpha: .4),
|
||||
color: (contrast ? Colors.white : color).withOpacity(.4),
|
||||
offset: const Offset(-4, -3),
|
||||
)
|
||||
],
|
||||
@ -313,7 +312,7 @@ class GradeValueWidget extends StatelessWidget {
|
||||
width: size * 1.4,
|
||||
height: size * 1.4,
|
||||
decoration: BoxDecoration(
|
||||
color: color.withValues(alpha: contrast ? 1.0 : .25),
|
||||
color: color.withOpacity(contrast ? 1.0 : .25),
|
||||
shape: BoxShape.circle,
|
||||
boxShadow: [
|
||||
if (shadow &&
|
||||
|
@ -75,7 +75,7 @@ class LessonTile extends StatelessWidget {
|
||||
}
|
||||
|
||||
if (lesson.isEmpty) {
|
||||
accent = AppColors.of(context).text.withValues(alpha: 0.6);
|
||||
accent = AppColors.of(context).text.withOpacity(0.6);
|
||||
}
|
||||
|
||||
if (!lesson.studentPresence) {
|
||||
@ -182,8 +182,9 @@ class LessonTile extends StatelessWidget {
|
||||
fontSize: 16.5,
|
||||
color: fill
|
||||
? accent
|
||||
: AppColors.of(context).text.withValues(
|
||||
alpha: !lesson.isEmpty ? 1.0 : 0.5),
|
||||
: AppColors.of(context)
|
||||
.text
|
||||
.withOpacity(!lesson.isEmpty ? 1.0 : 0.5),
|
||||
fontStyle: lesson.subject.isRenamed &&
|
||||
settingsProvider.renamedSubjectsItalics
|
||||
? FontStyle.italic
|
||||
@ -198,10 +199,8 @@ class LessonTile extends StatelessWidget {
|
||||
fontWeight: FontWeight.w600,
|
||||
fontSize: 14.0,
|
||||
color: fill
|
||||
? accent.withValues(alpha: .9)
|
||||
: AppColors.of(context)
|
||||
.text
|
||||
.withValues(alpha: .9),
|
||||
? accent.withOpacity(.9)
|
||||
: AppColors.of(context).text.withOpacity(.9),
|
||||
),
|
||||
),
|
||||
),
|
||||
@ -218,7 +217,7 @@ class LessonTile extends StatelessWidget {
|
||||
// color: Theme.of(context)
|
||||
// .colorScheme
|
||||
// .secondary
|
||||
// .withValues(alpha: .15),
|
||||
// .withOpacity(.15),
|
||||
// borderRadius: BorderRadius.circular(10.0),
|
||||
// ),
|
||||
// child: Text(
|
||||
@ -230,7 +229,7 @@ class LessonTile extends StatelessWidget {
|
||||
// color: Theme.of(context)
|
||||
// .colorScheme
|
||||
// .secondary
|
||||
// .withValues(alpha: .9),
|
||||
// .withOpacity(.9),
|
||||
// ),
|
||||
// ),
|
||||
// )
|
||||
@ -247,11 +246,11 @@ class LessonTile extends StatelessWidget {
|
||||
horizontal: 5.5, vertical: 3.0),
|
||||
decoration: BoxDecoration(
|
||||
color: fill
|
||||
? accent.withValues(alpha: .15)
|
||||
? accent.withOpacity(.15)
|
||||
: Theme.of(context)
|
||||
.colorScheme
|
||||
.tertiary
|
||||
.withValues(alpha: .15),
|
||||
.withOpacity(.15),
|
||||
borderRadius: BorderRadius.circular(10.0),
|
||||
),
|
||||
child: Text(
|
||||
@ -262,11 +261,11 @@ class LessonTile extends StatelessWidget {
|
||||
fontSize: 12.0,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: fill
|
||||
? accent.withValues(alpha: 0.9)
|
||||
? accent.withOpacity(0.9)
|
||||
: Theme.of(context)
|
||||
.colorScheme
|
||||
.secondary
|
||||
.withValues(alpha: .9),
|
||||
.withOpacity(.9),
|
||||
),
|
||||
),
|
||||
),
|
||||
@ -278,9 +277,7 @@ class LessonTile extends StatelessWidget {
|
||||
textAlign: TextAlign.start,
|
||||
style: TextStyle(
|
||||
fontSize: 14.0,
|
||||
color: fill
|
||||
? accent.withValues(alpha: 0.5)
|
||||
: null,
|
||||
color: fill ? accent.withOpacity(0.5) : null,
|
||||
),
|
||||
),
|
||||
],
|
||||
@ -347,7 +344,7 @@ class LessonTile extends StatelessWidget {
|
||||
? Theme.of(context)
|
||||
.colorScheme
|
||||
.secondary
|
||||
.withValues(alpha: .3)
|
||||
.withOpacity(.3)
|
||||
: const Color(0x00000000),
|
||||
borderRadius: BorderRadius.circular(12.0),
|
||||
boxShadow: [
|
||||
@ -356,7 +353,7 @@ class LessonTile extends StatelessWidget {
|
||||
color: Theme.of(context)
|
||||
.colorScheme
|
||||
.secondary
|
||||
.withValues(alpha: .25),
|
||||
.withOpacity(.25),
|
||||
blurRadius: 6.0,
|
||||
)
|
||||
],
|
||||
@ -389,7 +386,7 @@ class LessonTile extends StatelessWidget {
|
||||
// fontWeight: FontWeight.w500,
|
||||
// color: AppColors.of(context)
|
||||
// .text
|
||||
// .withValues(alpha: .75),
|
||||
// .withOpacity(.75),
|
||||
// ),
|
||||
// ),
|
||||
// ),
|
||||
@ -401,11 +398,11 @@ class LessonTile extends StatelessWidget {
|
||||
horizontal: 6.0, vertical: 3.5),
|
||||
decoration: BoxDecoration(
|
||||
color: fill
|
||||
? accent.withValues(alpha: .15)
|
||||
? accent.withOpacity(.15)
|
||||
: Theme.of(context)
|
||||
.colorScheme
|
||||
.tertiary
|
||||
.withValues(alpha: .15),
|
||||
.withOpacity(.15),
|
||||
borderRadius: BorderRadius.circular(10.0),
|
||||
),
|
||||
child: Text(
|
||||
@ -416,11 +413,11 @@ class LessonTile extends StatelessWidget {
|
||||
fontSize: 12.5,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: fill
|
||||
? accent.withValues(alpha: 0.9)
|
||||
? accent.withOpacity(0.9)
|
||||
: Theme.of(context)
|
||||
.colorScheme
|
||||
.secondary
|
||||
.withValues(alpha: .9),
|
||||
.withOpacity(.9),
|
||||
),
|
||||
),
|
||||
),
|
||||
@ -441,10 +438,10 @@ class LessonTile extends StatelessWidget {
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.w500,
|
||||
color: fill
|
||||
? accent.withValues(alpha: .9)
|
||||
? accent.withOpacity(.9)
|
||||
: AppColors.of(context)
|
||||
.text
|
||||
.withValues(alpha: .9),
|
||||
.withOpacity(.9),
|
||||
),
|
||||
),
|
||||
],
|
||||
@ -505,8 +502,8 @@ class LessonSubtile extends StatelessWidget {
|
||||
Center(
|
||||
child: SizedBox(
|
||||
width: 30.0,
|
||||
child: Icon(icon,
|
||||
color: iconColor.withValues(alpha: .75), size: 20.0),
|
||||
child:
|
||||
Icon(icon, color: iconColor.withOpacity(.75), size: 20.0),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
@ -518,8 +515,7 @@ class LessonSubtile extends StatelessWidget {
|
||||
overflow: TextOverflow.ellipsis,
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.w500,
|
||||
color:
|
||||
AppColors.of(context).text.withValues(alpha: .65)),
|
||||
color: AppColors.of(context).text.withOpacity(.65)),
|
||||
),
|
||||
),
|
||||
),
|
||||
|
@ -58,8 +58,7 @@ class MessageTile extends StatelessWidget {
|
||||
width: 105,
|
||||
height: 15,
|
||||
decoration: BoxDecoration(
|
||||
color:
|
||||
AppColors.of(context).text.withValues(alpha: .85),
|
||||
color: AppColors.of(context).text.withOpacity(.85),
|
||||
borderRadius: BorderRadius.circular(8.0),
|
||||
),
|
||||
),
|
||||
@ -90,8 +89,7 @@ class MessageTile extends StatelessWidget {
|
||||
width: 150,
|
||||
height: 10,
|
||||
decoration: BoxDecoration(
|
||||
color:
|
||||
AppColors.of(context).text.withValues(alpha: .45),
|
||||
color: AppColors.of(context).text.withOpacity(.45),
|
||||
borderRadius: BorderRadius.circular(8.0),
|
||||
),
|
||||
),
|
||||
@ -111,8 +109,7 @@ class MessageTile extends StatelessWidget {
|
||||
width: 35,
|
||||
height: 15,
|
||||
decoration: BoxDecoration(
|
||||
color:
|
||||
AppColors.of(context).text.withValues(alpha: .45),
|
||||
color: AppColors.of(context).text.withOpacity(.45),
|
||||
borderRadius: BorderRadius.circular(8.0),
|
||||
),
|
||||
),
|
||||
@ -123,7 +120,7 @@ class MessageTile extends StatelessWidget {
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.w500,
|
||||
fontSize: 14.0,
|
||||
color: AppColors.of(context).text.withValues(alpha: .75),
|
||||
color: AppColors.of(context).text.withOpacity(.75),
|
||||
),
|
||||
),
|
||||
),
|
||||
|
@ -3,7 +3,7 @@ description: "Egy nem hivatalos e-KRÉTA kliens, diákoktól diákoknak."
|
||||
homepage: https://refilc.hu
|
||||
publish_to: "none"
|
||||
|
||||
version: 5.1.3+287
|
||||
version: 5.1.0+282
|
||||
|
||||
environment:
|
||||
sdk: ^3.6.0
|
||||
@ -11,7 +11,7 @@ environment:
|
||||
dependencies:
|
||||
flutter:
|
||||
sdk: flutter
|
||||
cupertino_icons: ^1.0.8
|
||||
cupertino_icons: ^1.0.2
|
||||
|
||||
# reFilc packages
|
||||
refilc_mobile_ui:
|
||||
@ -26,59 +26,72 @@ dependencies:
|
||||
flutter_localizations:
|
||||
sdk: flutter
|
||||
i18n_extension: ^12.0.1
|
||||
sqflite: ^2.4.1
|
||||
sqflite: ^2.2.0+2
|
||||
intl: ^0.19.0
|
||||
provider: ^6.1.2
|
||||
http: ^1.3.0
|
||||
uuid: ^4.5.1
|
||||
html: ^0.15.5
|
||||
open_filex: ^4.6.0
|
||||
path_provider: ^2.1.5
|
||||
permission_handler: ^11.3.1
|
||||
share_plus: ^10.1.4
|
||||
connectivity_plus: ^6.1.3
|
||||
provider: ^6.1.1
|
||||
http: ^1.1.2
|
||||
uuid: ^4.2.1
|
||||
html: ^0.15.0
|
||||
open_filex: ^4.3.4
|
||||
# open_file:
|
||||
# git:
|
||||
# url: https://github.com/crazecoder/open_file
|
||||
# ref: master
|
||||
path_provider: ^2.0.2
|
||||
permission_handler: ^11.0.1
|
||||
share_plus: ^10.0.3
|
||||
connectivity_plus: ^6.0.3
|
||||
flutter_displaymode: ^0.6.0
|
||||
quick_actions: ^1.1.0
|
||||
animated_list_plus: ^0.5.2
|
||||
dynamic_color: ^1.7.0
|
||||
quick_actions: ^1.0.1
|
||||
animated_list_plus: ^0.5.0
|
||||
dynamic_color: ^1.2.2
|
||||
material_color_utilities: ^0.11.1
|
||||
crypto: ^3.0.6
|
||||
elegant_notification: ^2.4.1
|
||||
crypto: ^3.0.2
|
||||
elegant_notification: ^2.2.0
|
||||
flutter_feather_icons: ^2.0.0+1
|
||||
# live_activities: ^1.7.4
|
||||
animated_flip_counter: ^0.3.4
|
||||
lottie: ^3.3.1
|
||||
lottie: ^3.1.0
|
||||
rive: ^0.12.4
|
||||
animated_background: ^2.0.0
|
||||
dropdown_button2: ^2.3.9
|
||||
home_widget: ^0.7.0+1
|
||||
flutter_expandable_fab: ^2.3.0
|
||||
url_launcher: ^6.3.1
|
||||
flutter_svg: ^2.0.17
|
||||
image_picker: ^1.1.2
|
||||
animations: ^2.0.11
|
||||
background_fetch: ^1.3.7
|
||||
home_widget:
|
||||
git:
|
||||
url: https://github.com/refilc/home_widget.git
|
||||
ref: flutter-beta
|
||||
flutter_expandable_fab: ^2.0.0
|
||||
url_launcher: ^6.1.6
|
||||
# workmanager:
|
||||
# git:
|
||||
# url: https://github.com/refilc/flutter_workmanager.git
|
||||
# ref: v0.5.1
|
||||
flutter_svg: ^2.0.10+1
|
||||
image_picker: ^1.0.7
|
||||
animations: ^2.0.1
|
||||
background_fetch: ^1.1.5
|
||||
flutter_local_notifications: ^18.0.1
|
||||
package_info_plus: ^8.2.1
|
||||
package_info_plus: ^8.0.0
|
||||
screenshot: ^3.0.0
|
||||
flutter_staggered_grid_view: ^0.7.0
|
||||
# sqflite_common_ffi_web: ^0.4.0
|
||||
image_crop_plus: ^1.0.0
|
||||
googleapis: ^13.2.0
|
||||
google_sign_in: ^6.2.2
|
||||
google_sign_in: ^6.2.1
|
||||
extension_google_sign_in_as_googleapis_auth: ^2.0.12
|
||||
maps_launcher: ^3.0.0+1
|
||||
google_fonts: ^6.2.1
|
||||
get_it: ^7.7.0
|
||||
google_fonts: ^6.1.0
|
||||
# flutter_stripe: ^11.3.0
|
||||
get_it: ^7.6.7
|
||||
xml: ^6.5.0
|
||||
carousel_slider: ^5.0.0
|
||||
flutter_portal: ^1.1.4
|
||||
shake_flutter: ^17.1.0
|
||||
shake_flutter: ^17.0.0
|
||||
|
||||
dev_dependencies:
|
||||
flutter_lints: ^5.0.0
|
||||
flutter_launcher_icons: ^0.14.3
|
||||
flutter_native_splash: ^2.4.4
|
||||
sqflite_common_ffi: ^2.3.4+4
|
||||
dependency_validator: ^5.0.2
|
||||
flutter_launcher_icons: ^0.14.2
|
||||
flutter_native_splash: "^2.3.10"
|
||||
sqflite_common_ffi: ^2.0.0+3
|
||||
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
@ -172,13 +185,13 @@ flutter:
|
||||
flutter_launcher_icons:
|
||||
image_path: assets/icons/ic_android.png
|
||||
android: true
|
||||
adaptive_icon_background: "#7CA021"
|
||||
adaptive_icon_foreground: assets/icons/ic_launcher_foreground.png
|
||||
adaptive_icon_background: "#03112D"
|
||||
adaptive_icon_foreground: assets/icons/ic_android.png
|
||||
ios: false
|
||||
remove_alpha_ios: false
|
||||
|
||||
flutter_native_splash:
|
||||
color: "#7CA021"
|
||||
color: "#03112D"
|
||||
image: assets/icons/ic_splash.png
|
||||
android_12:
|
||||
image: assets/icons/ic_splash.png
|
||||
|
@ -277,13 +277,6 @@ class KretaClient {
|
||||
print("REFRESH TOKEN BELOW");
|
||||
print(refreshToken);
|
||||
|
||||
print(loginUser.accessTokenExpire);
|
||||
print(DateTime.now().toIso8601String());
|
||||
|
||||
if (!DateTime.now().isAfter(loginUser.accessTokenExpire)) {
|
||||
return 'success';
|
||||
}
|
||||
|
||||
if (refreshToken != null) {
|
||||
// print("REFRESHING LOGIN");
|
||||
Map? res = await postAPI(KretaAPI.login,
|
||||
|
@ -9,12 +9,12 @@ dependencies:
|
||||
sdk: flutter
|
||||
refilc:
|
||||
path: ../refilc/
|
||||
http: ^1.3.0
|
||||
provider: ^6.1.2
|
||||
file_picker: ^8.3.7
|
||||
http: ^1.1.2
|
||||
provider: ^6.1.1
|
||||
file_picker: ^8.0.5
|
||||
intl: ^0.19.0
|
||||
i18n_extension: ^12.0.1
|
||||
uuid: ^4.5.1
|
||||
uuid: ^4.3.3
|
||||
|
||||
dev_dependencies:
|
||||
flutter_lints: ^5.0.0
|
||||
|
@ -1,8 +1,7 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class ActionButton extends StatelessWidget {
|
||||
const ActionButton(
|
||||
{super.key, required this.label, this.activeColor, this.onTap});
|
||||
const ActionButton({super.key, required this.label, this.activeColor, this.onTap});
|
||||
|
||||
final Color? activeColor;
|
||||
final void Function()? onTap;
|
||||
@ -20,8 +19,7 @@ class ActionButton extends StatelessWidget {
|
||||
curve: Curves.easeInOut,
|
||||
height: 32.0,
|
||||
decoration: BoxDecoration(
|
||||
color: (activeColor ?? Theme.of(context).colorScheme.secondary)
|
||||
.withValues(alpha: 0.25),
|
||||
color: (activeColor ?? Theme.of(context).colorScheme.secondary).withOpacity(0.25),
|
||||
borderRadius: BorderRadius.circular(6.0),
|
||||
),
|
||||
padding: const EdgeInsets.symmetric(vertical: 6.0, horizontal: 12.0),
|
||||
@ -30,11 +28,7 @@ class ActionButton extends StatelessWidget {
|
||||
maxLines: 1,
|
||||
softWrap: false,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
style: TextStyle(
|
||||
fontSize: 15.0,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: activeColor ??
|
||||
Theme.of(context).colorScheme.secondary))),
|
||||
style: TextStyle(fontSize: 15.0, fontWeight: FontWeight.w600, color: activeColor ?? Theme.of(context).colorScheme.secondary))),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
@ -21,7 +21,7 @@ class AverageDisplay extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
Color color = average == 0.0
|
||||
? AppColors.of(context).text.withValues(alpha: .8)
|
||||
? AppColors.of(context).text.withOpacity(.8)
|
||||
: gradeColor(context: context, value: average);
|
||||
|
||||
String averageText = average.toStringAsFixed(2);
|
||||
@ -49,18 +49,16 @@ class AverageDisplay extends StatelessWidget {
|
||||
borderRadius:
|
||||
(border && dashed) ? null : BorderRadius.circular(45.0 * scale),
|
||||
border: border && !dashed
|
||||
? Border.fromBorderSide(BorderSide(
|
||||
color: color.withValues(alpha: .5), width: 1.0 * scale))
|
||||
: null,
|
||||
color: !border
|
||||
? color.withValues(alpha: average == 0.0 ? .15 : .25)
|
||||
? Border.fromBorderSide(
|
||||
BorderSide(color: color.withOpacity(.5), width: 1.0 * scale))
|
||||
: null,
|
||||
color: !border ? color.withOpacity(average == 0.0 ? .15 : .25) : null,
|
||||
),
|
||||
child: (border && dashed)
|
||||
? DottedBorder(
|
||||
strokeWidth: 1.0 * scale,
|
||||
padding: EdgeInsets.all(4.0 * scale),
|
||||
color: color.withValues(alpha: .5),
|
||||
color: color.withOpacity(.5),
|
||||
dashPattern: const [6, 6],
|
||||
radius: Radius.circular(45.0 * scale),
|
||||
borderType: BorderType.RRect,
|
||||
|
@ -25,7 +25,7 @@ class BottomCard extends StatelessWidget {
|
||||
margin: const EdgeInsets.only(top: 12.0, bottom: 4.0),
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(45.0),
|
||||
color: AppColors.of(context).text.withValues(alpha: 0.10),
|
||||
color: AppColors.of(context).text.withOpacity(0.10),
|
||||
),
|
||||
),
|
||||
if (child != null) child!,
|
||||
|
@ -38,7 +38,7 @@ class RoundedBottomSheet extends StatelessWidget {
|
||||
margin: const EdgeInsets.only(top: 12.0, bottom: 4.0),
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(45.0),
|
||||
color: AppColors.of(context).text.withValues(alpha: 0.10),
|
||||
color: AppColors.of(context).text.withOpacity(0.10),
|
||||
),
|
||||
),
|
||||
if (child != null) child!,
|
||||
|
@ -16,7 +16,7 @@ class BetaChip extends StatelessWidget {
|
||||
decoration: BoxDecoration(
|
||||
color: !disabled
|
||||
? Theme.of(context).colorScheme.secondary
|
||||
: AppColors.of(context).text.withValues(alpha: .25),
|
||||
: AppColors.of(context).text.withOpacity(.25),
|
||||
borderRadius: BorderRadius.circular(40),
|
||||
),
|
||||
child: Padding(
|
||||
@ -28,7 +28,7 @@ class BetaChip extends StatelessWidget {
|
||||
style: TextStyle(
|
||||
fontSize: 10,
|
||||
color: disabled
|
||||
? AppColors.of(context).text.withValues(alpha: .5)
|
||||
? AppColors.of(context).text.withOpacity(.5)
|
||||
: Colors.white,
|
||||
fontWeight: FontWeight.w600,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
|
@ -11,9 +11,8 @@ class NewChip extends StatelessWidget {
|
||||
Widget build(BuildContext context) {
|
||||
return Container(
|
||||
decoration: BoxDecoration(
|
||||
color: disabled
|
||||
? AppColors.of(context).text.withValues(alpha: .25)
|
||||
: Colors.red,
|
||||
color:
|
||||
disabled ? AppColors.of(context).text.withOpacity(.25) : Colors.red,
|
||||
borderRadius: BorderRadius.circular(12.0),
|
||||
),
|
||||
padding:
|
||||
@ -24,7 +23,7 @@ class NewChip extends StatelessWidget {
|
||||
Icon(
|
||||
Icons.hotel_class_rounded,
|
||||
color: disabled
|
||||
? AppColors.of(context).text.withValues(alpha: .5)
|
||||
? AppColors.of(context).text.withOpacity(.5)
|
||||
: Colors.white,
|
||||
size: 14.0,
|
||||
),
|
||||
@ -33,7 +32,7 @@ class NewChip extends StatelessWidget {
|
||||
'new'.i18n,
|
||||
style: TextStyle(
|
||||
color: disabled
|
||||
? AppColors.of(context).text.withValues(alpha: .5)
|
||||
? AppColors.of(context).text.withOpacity(.5)
|
||||
: Colors.white,
|
||||
fontSize: 12.0,
|
||||
fontWeight: FontWeight.bold,
|
||||
|
@ -24,7 +24,7 @@ SnackBar CustomSnackBar({
|
||||
color: _backgroundColor,
|
||||
borderRadius: BorderRadius.circular(6.0),
|
||||
boxShadow: [
|
||||
BoxShadow(color: Colors.black.withValues(alpha: .15), blurRadius: 4.0)
|
||||
BoxShadow(color: Colors.black.withOpacity(.15), blurRadius: 4.0)
|
||||
],
|
||||
),
|
||||
padding: const EdgeInsets.all(12.0),
|
||||
|
@ -26,7 +26,7 @@ class Detail extends StatelessWidget {
|
||||
text: description,
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.w500,
|
||||
color: AppColors.of(context).text.withValues(alpha: 0.85)),
|
||||
color: AppColors.of(context).text.withOpacity(0.85)),
|
||||
),
|
||||
],
|
||||
),
|
||||
|
@ -34,7 +34,7 @@ class Empty extends StatelessWidget {
|
||||
style: TextStyle(
|
||||
fontSize: 32.0,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: AppColors.of(context).text.withValues(alpha: .75)),
|
||||
color: AppColors.of(context).text.withOpacity(.75)),
|
||||
children: subtitle != null
|
||||
? [
|
||||
TextSpan(
|
||||
@ -42,9 +42,7 @@ class Empty extends StatelessWidget {
|
||||
style: TextStyle(
|
||||
fontSize: 18.0,
|
||||
height: 2.0,
|
||||
color: AppColors.of(context)
|
||||
.text
|
||||
.withValues(alpha: .5)))
|
||||
color: AppColors.of(context).text.withOpacity(.5)))
|
||||
]
|
||||
: [],
|
||||
),
|
||||
|
@ -56,12 +56,12 @@ class _FilterBarState extends State<FilterBar> {
|
||||
),
|
||||
labelPadding: const EdgeInsets.symmetric(horizontal: 12, vertical: 3),
|
||||
labelColor: Theme.of(context).colorScheme.secondary,
|
||||
unselectedLabelColor: AppColors.of(context).text.withValues(alpha: 0.65),
|
||||
unselectedLabelColor: AppColors.of(context).text.withOpacity(0.65),
|
||||
// indicator
|
||||
indicatorSize: TabBarIndicatorSize.tab,
|
||||
indicatorPadding: const EdgeInsets.symmetric(vertical: 8.0),
|
||||
indicator: BoxDecoration(
|
||||
color: Theme.of(context).colorScheme.tertiary.withValues(alpha: .2),
|
||||
color: Theme.of(context).colorScheme.tertiary.withOpacity(.2),
|
||||
borderRadius: BorderRadius.circular(45.0),
|
||||
),
|
||||
overlayColor: WidgetStateProperty.all(const Color(0x00000000)),
|
||||
@ -77,7 +77,7 @@ class _FilterBarState extends State<FilterBar> {
|
||||
width: e,
|
||||
height: 15,
|
||||
decoration: BoxDecoration(
|
||||
color: AppColors.of(context).text.withValues(alpha: .45),
|
||||
color: AppColors.of(context).text.withOpacity(.45),
|
||||
borderRadius: BorderRadius.circular(8.0),
|
||||
),
|
||||
),
|
||||
|
@ -79,7 +79,7 @@ class HeroScrollViewState extends State<HeroScrollView> {
|
||||
child: Row(
|
||||
children: [
|
||||
Icon(widget.icon,
|
||||
color: AppColors.of(context).text.withValues(alpha: .8)),
|
||||
color: AppColors.of(context).text.withOpacity(.8)),
|
||||
const SizedBox(width: 8.0),
|
||||
Expanded(
|
||||
child: Text(
|
||||
@ -123,7 +123,7 @@ class HeroScrollViewState extends State<HeroScrollView> {
|
||||
Theme.of(context).colorScheme.secondary,
|
||||
amount: 0.1,
|
||||
)
|
||||
.withValues(alpha: 0.4),
|
||||
.withOpacity(0.4),
|
||||
width: MediaQuery.of(context).size.width,
|
||||
fit: BoxFit.cover,
|
||||
),
|
||||
@ -135,10 +135,10 @@ class HeroScrollViewState extends State<HeroScrollView> {
|
||||
Theme.of(context).scaffoldBackgroundColor,
|
||||
Theme.of(context)
|
||||
.scaffoldBackgroundColor
|
||||
.withValues(alpha: 0.1),
|
||||
.withOpacity(0.1),
|
||||
Theme.of(context)
|
||||
.scaffoldBackgroundColor
|
||||
.withValues(alpha: 0.1),
|
||||
.withOpacity(0.1),
|
||||
Theme.of(context).scaffoldBackgroundColor,
|
||||
],
|
||||
stops: const [0.1, 0.5, 0.7, 0.98],
|
||||
@ -164,7 +164,7 @@ class HeroScrollViewState extends State<HeroScrollView> {
|
||||
Theme.of(context).colorScheme.secondary,
|
||||
amount: 0.1,
|
||||
)
|
||||
.withValues(alpha: 0.9),
|
||||
.withOpacity(0.9),
|
||||
width: 1.5,
|
||||
padding: 12.0,
|
||||
icon: Icon(
|
||||
@ -175,7 +175,7 @@ class HeroScrollViewState extends State<HeroScrollView> {
|
||||
Theme.of(context).colorScheme.secondary,
|
||||
amount: 0.1,
|
||||
)
|
||||
.withValues(alpha: 0.8),
|
||||
.withOpacity(0.8),
|
||||
),
|
||||
),
|
||||
),
|
||||
@ -192,7 +192,7 @@ class HeroScrollViewState extends State<HeroScrollView> {
|
||||
textAlign: TextAlign.center,
|
||||
style: TextStyle(
|
||||
fontSize: 26.0,
|
||||
color: AppColors.of(context).text.withValues(alpha: .8),
|
||||
color: AppColors.of(context).text.withOpacity(.8),
|
||||
fontStyle: widget.italic ? FontStyle.italic : null,
|
||||
fontWeight: FontWeight.bold,
|
||||
),
|
||||
|
@ -19,8 +19,7 @@ class MaterialActionButton extends StatelessWidget {
|
||||
return RawMaterialButton(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 16.0),
|
||||
shape: const StadiumBorder(),
|
||||
fillColor:
|
||||
backgroundColor ?? AppColors.of(context).text.withValues(alpha: .15),
|
||||
fillColor: backgroundColor ?? AppColors.of(context).text.withOpacity(.15),
|
||||
elevation: 0,
|
||||
highlightElevation: 0,
|
||||
onPressed: onPressed,
|
||||
|
@ -24,8 +24,7 @@ class OutlinedRoundButton extends StatelessWidget {
|
||||
decoration: BoxDecoration(
|
||||
color: Theme.of(context).colorScheme.surface,
|
||||
border: Border.all(
|
||||
color:
|
||||
Theme.of(context).colorScheme.secondary.withValues(alpha: 0.1),
|
||||
color: Theme.of(context).colorScheme.secondary.withOpacity(0.1),
|
||||
width: 1.1,
|
||||
),
|
||||
borderRadius: BorderRadius.circular(8.0),
|
||||
|
@ -67,7 +67,7 @@ class PanelTitle extends StatelessWidget {
|
||||
child: DefaultTextStyle(
|
||||
style: Theme.of(context).textTheme.titleMedium!.copyWith(
|
||||
fontWeight: FontWeight.w600,
|
||||
color: AppColors.of(context).text.withValues(alpha: 0.65)),
|
||||
color: AppColors.of(context).text.withOpacity(0.65)),
|
||||
child: title,
|
||||
),
|
||||
);
|
||||
|
@ -23,28 +23,18 @@ class PanelActionButton extends StatelessWidget {
|
||||
padding: padding,
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(8.0),
|
||||
side: BorderSide(
|
||||
color:
|
||||
Theme.of(context).colorScheme.secondary.withValues(alpha: .6),
|
||||
width: 2),
|
||||
side: BorderSide(color: Theme.of(context).colorScheme.secondary.withOpacity(.6), width: 2),
|
||||
),
|
||||
child: ListTile(
|
||||
leading: leading != null
|
||||
? Theme(
|
||||
data: Theme.of(context).copyWith(
|
||||
iconTheme: IconThemeData(
|
||||
color: Theme.of(context).colorScheme.secondary)),
|
||||
data: Theme.of(context).copyWith(iconTheme: IconThemeData(color: Theme.of(context).colorScheme.secondary)),
|
||||
child: leading!,
|
||||
)
|
||||
: null,
|
||||
trailing: trailing,
|
||||
title: title != null
|
||||
? DefaultTextStyle(
|
||||
style: Theme.of(context)
|
||||
.textTheme
|
||||
.titleMedium!
|
||||
.copyWith(fontWeight: FontWeight.w500, fontSize: 15.0),
|
||||
child: title!)
|
||||
? DefaultTextStyle(style: Theme.of(context).textTheme.titleMedium!.copyWith(fontWeight: FontWeight.w500, fontSize: 15.0), child: title!)
|
||||
: null,
|
||||
contentPadding: EdgeInsets.zero,
|
||||
visualDensity: VisualDensity.compact,
|
||||
|
@ -36,8 +36,7 @@ class PanelButton extends StatelessWidget {
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: borderRadius ?? BorderRadius.circular(12.0)),
|
||||
fillColor: background
|
||||
? Colors.white.withValues(
|
||||
alpha:
|
||||
? Colors.white.withOpacity(
|
||||
Theme.of(context).brightness == Brightness.light ? .35 : .2)
|
||||
: null,
|
||||
child: ListTile(
|
||||
@ -58,7 +57,7 @@ class PanelButton extends StatelessWidget {
|
||||
width: 2.0,
|
||||
height: 32.0,
|
||||
decoration: BoxDecoration(
|
||||
color: AppColors.of(context).text.withValues(alpha: .15),
|
||||
color: AppColors.of(context).text.withOpacity(.15),
|
||||
borderRadius: BorderRadius.circular(45.0),
|
||||
),
|
||||
),
|
||||
|
@ -44,7 +44,7 @@ class _EmptyCardState extends State<EmptyCard> {
|
||||
if (Provider.of<SettingsProvider>(context, listen: false)
|
||||
.shadowEffect)
|
||||
BoxShadow(
|
||||
color: Colors.black.withValues(alpha: 0.08),
|
||||
color: Colors.black.withOpacity(0.08),
|
||||
offset: const Offset(0, 5),
|
||||
blurRadius: 20,
|
||||
spreadRadius: 10,
|
||||
@ -52,7 +52,7 @@ class _EmptyCardState extends State<EmptyCard> {
|
||||
],
|
||||
),
|
||||
child: DottedBorder(
|
||||
color: Colors.black.withValues(alpha: 0.9),
|
||||
color: Colors.black.withOpacity(0.9),
|
||||
dashPattern: const [12, 12],
|
||||
padding:
|
||||
const EdgeInsets.only(top: 20, bottom: 20, left: 20, right: 20),
|
||||
@ -60,7 +60,7 @@ class _EmptyCardState extends State<EmptyCard> {
|
||||
child: Text(
|
||||
widget.text,
|
||||
style: TextStyle(
|
||||
color: Colors.white.withValues(alpha: 0.9),
|
||||
color: Colors.white.withOpacity(0.9),
|
||||
),
|
||||
),
|
||||
),
|
||||
|
@ -301,7 +301,7 @@ class _PersonalityCardState extends State<PersonalityCard> {
|
||||
style: TextStyle(
|
||||
fontSize: 16,
|
||||
height: 1.2,
|
||||
color: Colors.white.withValues(alpha: 0.8),
|
||||
color: Colors.white.withOpacity(0.8),
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 25),
|
||||
@ -354,7 +354,7 @@ class _PersonalityCardState extends State<PersonalityCard> {
|
||||
borderRadius: const BorderRadius.all(Radius.circular(5)),
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: Colors.black.withValues(alpha: 0.08),
|
||||
color: Colors.black.withOpacity(0.08),
|
||||
offset: const Offset(0, 5),
|
||||
blurRadius: 20,
|
||||
spreadRadius: 10,
|
||||
@ -362,7 +362,7 @@ class _PersonalityCardState extends State<PersonalityCard> {
|
||||
],
|
||||
),
|
||||
child: DottedBorder(
|
||||
color: Colors.black.withValues(alpha: 0.9),
|
||||
color: Colors.black.withOpacity(0.9),
|
||||
dashPattern: const [12, 12],
|
||||
padding:
|
||||
const EdgeInsets.only(top: 20, bottom: 20, left: 20, right: 20),
|
||||
|
@ -91,10 +91,10 @@ class _ProfileImageState extends State<ProfileImage> {
|
||||
clipBehavior: Clip.hardEdge,
|
||||
shape: const CircleBorder(),
|
||||
color: widget.name != null && widget.name! == 'Rendszerüzenet'
|
||||
? widget.backgroundColor?.withValues(alpha: 0.8) ??
|
||||
AppColors.of(context).text.withValues(alpha: 0.5)
|
||||
? widget.backgroundColor?.withOpacity(0.8) ??
|
||||
AppColors.of(context).text.withOpacity(0.5)
|
||||
: widget.backgroundColor ??
|
||||
AppColors.of(context).text.withValues(alpha: .15),
|
||||
AppColors.of(context).text.withOpacity(.15),
|
||||
child: InkWell(
|
||||
onTap: widget.onTap,
|
||||
onDoubleTap: widget.onDoubleTap,
|
||||
@ -114,7 +114,7 @@ class _ProfileImageState extends State<ProfileImage> {
|
||||
width: 15,
|
||||
height: 15,
|
||||
decoration: BoxDecoration(
|
||||
color: color.withValues(alpha: .5),
|
||||
color: color.withOpacity(.5),
|
||||
borderRadius: BorderRadius.circular(8.0),
|
||||
),
|
||||
)
|
||||
@ -206,7 +206,7 @@ class _ProfileImageState extends State<ProfileImage> {
|
||||
color: profilePicture != null
|
||||
? Colors.transparent
|
||||
: widget.backgroundColor ??
|
||||
AppColors.of(context).text.withValues(alpha: .15),
|
||||
AppColors.of(context).text.withOpacity(.15),
|
||||
child: AnimatedContainer(
|
||||
duration: const Duration(milliseconds: 200),
|
||||
height: widget.radius * 2,
|
||||
|
@ -2,10 +2,7 @@ import 'package:flutter/material.dart';
|
||||
|
||||
class ProgressBar extends StatelessWidget {
|
||||
const ProgressBar(
|
||||
{super.key,
|
||||
required this.value,
|
||||
this.backgroundColor,
|
||||
this.height = 8.0});
|
||||
{super.key, required this.value, this.backgroundColor, this.height = 8.0});
|
||||
|
||||
final double value;
|
||||
final Color? backgroundColor;
|
||||
@ -19,8 +16,8 @@ class ProgressBar extends StatelessWidget {
|
||||
Container(
|
||||
decoration: BoxDecoration(
|
||||
color: Theme.of(context).brightness == Brightness.light
|
||||
? Colors.black.withValues(alpha: 0.1)
|
||||
: Colors.white.withValues(alpha: 0.1),
|
||||
? Colors.black.withOpacity(0.1)
|
||||
: Colors.white.withOpacity(0.1),
|
||||
borderRadius: BorderRadius.circular(45.0),
|
||||
),
|
||||
width: double.infinity,
|
||||
|
@ -19,7 +19,7 @@ class RoundBorderIcon extends StatelessWidget {
|
||||
decoration: BoxDecoration(
|
||||
border: Border.all(
|
||||
color: color ??
|
||||
Theme.of(context).colorScheme.secondary.withValues(alpha: 0.25),
|
||||
Theme.of(context).colorScheme.secondary.withOpacity(0.25),
|
||||
width: width),
|
||||
borderRadius: BorderRadius.circular(50.0),
|
||||
),
|
||||
|
@ -56,7 +56,7 @@ class SplittedPanel extends StatelessWidget {
|
||||
color: Theme.of(context)
|
||||
.colorScheme
|
||||
.secondary
|
||||
.withValues(alpha: .25),
|
||||
.withOpacity(.25),
|
||||
width: 1.0)
|
||||
: null,
|
||||
),
|
||||
@ -121,7 +121,7 @@ class SplittedPanelTitle extends StatelessWidget {
|
||||
child: DefaultTextStyle(
|
||||
style: Theme.of(context).textTheme.titleMedium!.copyWith(
|
||||
fontWeight: FontWeight.w600,
|
||||
color: AppColors.of(context).text.withValues(alpha: 0.65)),
|
||||
color: AppColors.of(context).text.withOpacity(0.65)),
|
||||
child: title,
|
||||
),
|
||||
);
|
||||
|
@ -15,7 +15,7 @@ class AbsenceDisplay extends StatelessWidget {
|
||||
padding: const EdgeInsets.only(top: 5.0),
|
||||
// padding: const EdgeInsets.symmetric(vertical: 4.0, horizontal: 6.0),
|
||||
// decoration: BoxDecoration(
|
||||
// color: Theme.of(context).scaffoldBackgroundColor.withValues(alpha: .2),
|
||||
// color: Theme.of(context).scaffoldBackgroundColor.withOpacity(.2),
|
||||
// borderRadius: BorderRadius.circular(12.0),
|
||||
// ),
|
||||
child: Row(children: [
|
||||
|
@ -81,7 +81,7 @@ class AbsenceSubjectTile extends StatelessWidget {
|
||||
// fontFamily: "monospace",
|
||||
color:
|
||||
getColorByPercentage(percentage, context: context)
|
||||
.withValues(alpha: 0.8),
|
||||
.withOpacity(0.8),
|
||||
fontSize: 16.0,
|
||||
fontWeight: FontWeight.w500,
|
||||
),
|
||||
@ -109,5 +109,5 @@ Color getColorByPercentage(double percentage, {required BuildContext context}) {
|
||||
color = AppColors.of(context).yellow;
|
||||
}
|
||||
|
||||
return color.withValues(alpha: .8);
|
||||
return color.withOpacity(.8);
|
||||
}
|
||||
|
@ -57,7 +57,7 @@ class AbsenceTile extends StatelessWidget {
|
||||
width: 39,
|
||||
decoration: BoxDecoration(
|
||||
shape: BoxShape.circle,
|
||||
color: !group ? color.withValues(alpha: .25) : null,
|
||||
color: !group ? color.withOpacity(.25) : null,
|
||||
),
|
||||
child: Center(
|
||||
child: Icon(justificationIcon(absence.state), color: color)),
|
||||
|
@ -51,7 +51,7 @@ class AbsenceView extends StatelessWidget {
|
||||
height: 44.0,
|
||||
decoration: BoxDecoration(
|
||||
shape: BoxShape.circle,
|
||||
color: color.withValues(alpha: .25),
|
||||
color: color.withOpacity(.25),
|
||||
),
|
||||
child: Center(
|
||||
child: Icon(
|
||||
|
@ -41,13 +41,14 @@ class AbsenceGroupTile extends StatelessWidget {
|
||||
const EdgeInsets.symmetric(horizontal: 12.0, vertical: 0),
|
||||
tileColor: Colors.transparent,
|
||||
duration: const Duration(milliseconds: 250),
|
||||
trailingDuration: 0.5,
|
||||
trailing: const Icon(FeatherIcons.chevronDown),
|
||||
leading: Container(
|
||||
width: 39.0,
|
||||
height: 39.0,
|
||||
decoration: BoxDecoration(
|
||||
shape: BoxShape.circle,
|
||||
color: color.withValues(alpha: .25),
|
||||
color: color.withOpacity(.25),
|
||||
),
|
||||
child: Center(
|
||||
child: Icon(AbsenceTile.justificationIcon(state),
|
||||
@ -75,9 +76,7 @@ class AbsenceGroupTile extends StatelessWidget {
|
||||
.format(context, weekday: true),
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.w500,
|
||||
color: AppColors.of(context)
|
||||
.text
|
||||
.withValues(alpha: 0.8)),
|
||||
color: AppColors.of(context).text.withOpacity(0.8)),
|
||||
)
|
||||
: null,
|
||||
children: absences,
|
||||
|
@ -32,7 +32,7 @@ class AdTile extends StatelessWidget {
|
||||
style: TextStyle(
|
||||
fontSize: 14.5,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: AppColors.of(context).text.withValues(alpha: 0.7),
|
||||
color: AppColors.of(context).text.withOpacity(0.7),
|
||||
),
|
||||
),
|
||||
],
|
||||
|