init() async {
39 | if (startedInit) return;
40 | startedInit = true;
41 | sharedPreferences = await SharedPreferences.getInstance();
42 | if (sharedPreferences.getBool("ice") == true) {
43 | sessionManager.set("iCanteenEnabled", true);
44 | }
45 | progress = 0.1;
46 | loaderText = local!.loadCredentials;
47 | setState(() {});
48 | if (!await EP2Data.getInstance().init(
49 | onProgressUpdate: (text, prog) {
50 | setState(() {
51 | loaderText = text;
52 | progress = prog;
53 | });
54 | },
55 | local: local!)) {
56 | gotoLogin();
57 | } else {
58 | widget.loadedCallback();
59 | }
60 | }
61 |
62 | void gotoLogin([String? err]) async {
63 | Navigator.push(
64 | context,
65 | MaterialPageRoute(
66 | builder: (context) => SetupScreen(err: err ?? "")))
67 | .then((value) => {
68 | setState(() {
69 | startedInit = false;
70 | })
71 | });
72 | }
73 |
74 | @override
75 | Widget build(BuildContext context) {
76 | if (!startedInit) {
77 | sessionManager = widget.sessionManager;
78 | local = AppLocalizations.of(context);
79 | init();
80 | }
81 | return Column(
82 | children: [
83 | LinearProgressIndicator(
84 | value: progress,
85 | ),
86 | const Spacer(),
87 | const CircularProgressIndicator(),
88 | Text("\n$loaderText"),
89 | const Spacer(),
90 | ],
91 | );
92 | }
93 | }
94 |
--------------------------------------------------------------------------------
/SECURITY.md:
--------------------------------------------------------------------------------
1 | # Security Policy
2 |
3 | ## Supported Versions
4 |
5 | ### App versions
6 |
7 | | Version | API | Supported | Remote patches \* | Changelog |
8 | | ------------- | --- | ------------------ | ------------------ | ----------------------------------------------------------------------------------- |
9 | | 1.8.2 | v1 | :white_check_mark: | :white_check_mark: | [1.8.0...1.8.2](https://github.com/DislikesSchool/EduPage2/compare/v1.8.0...v1.8.2) |
10 | | 1.8.0 | β14 | :x: | :white_check_mark: | [1.7.9...1.8.0](https://github.com/DislikesSchool/EduPage2/compare/v1.7.9...v1.8.0) |
11 | | 1.7.3 - 1.7.9 | β13 | :x: | :white_check_mark: | [1.7.3...1.7.9](https://github.com/DislikesSchool/EduPage2/compare/v1.7.1...v1.7.9) |
12 | | 1.7.1 - 1.7.3 | β13 | :x: | :x: | [1.7.1...1.7.3](https://github.com/DislikesSchool/EduPage2/compare/v1.7.1...v1.7.3) |
13 | | 1.7.1 | β13 | :x: | :x: | [1.7.0...1.7.1](https://github.com/DislikesSchool/EduPage2/compare/v1.7.0...v1.7.1) |
14 | | 1.7.0 | β12 | :x: | :x: | [1.6.0...1.7.0](https://github.com/DislikesSchool/EduPage2/compare/v1.6.0...v1.7.0) |
15 | | 1.6.0 | β12 | :x: | :x: | [1.5.2...1.6.0](https://github.com/DislikesSchool/EduPage2/compare/v1.5.2...v1.6.0) |
16 | | 1.5.x | β11 | :x: | :x: | [1.5.0...1.5.2](https://github.com/DislikesSchool/EduPage2/compare/v1.5.0...v1.5.2) |
17 | | < 1.5 | | :x: | :x: | |
18 |
19 | \* Remote patches allow us to quickly push patches and bug fixes directly to your device without you having to redownload the app
20 |
21 | ### API version
22 |
23 | | Version | Supported | New features in version |
24 | | ------- | ------------------ | ----------------------- |
25 | | v1 | :white_check_mark: | Complete rewrite |
26 | | β14 | :x: | |
27 | | β13 | :x: | |
28 | | β12 | :x: | |
29 | | β11 | :x: | iCanteen setup |
30 | | < β11 | :x: | |
31 |
32 | :white_check_mark: - Version running on server
33 |
34 | :warning: - Version no longer running on server, newer version uses same basic routes
35 |
36 | :x: - Version no longer running on server, newer version uses different routes
37 |
38 | ## Reporting a Vulnerability
39 |
40 | Any security vulnerabilities can be reported on GiHub by going to [issues](https://github.com/DislikesSchool/EduPage2/issues) > New Issue > Report a security vulnerability
41 |
42 | Or on our [discord](https://discord.gg/3cxZtQ3fAd)
43 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing to EduPage2
2 | We love your input! We want to make contributing to this project as easy and transparent as possible, whether it's:
3 |
4 | - Reporting a bug
5 | - Discussing the current state of the code
6 | - Submitting a fix
7 | - Proposing new features
8 | - Becoming a maintainer
9 |
10 | ## We Develop with Github
11 | We use github to host code, to track issues and feature requests, as well as accept pull requests.
12 |
13 | ## We Use [Github Flow](https://docs.github.com/en/get-started/quickstart/github-flow), So All Code Changes Happen Through Pull Requests
14 | Pull requests are the best way to propose changes to the codebase (we use [Github Flow](https://docs.github.com/en/get-started/quickstart/github-flow)). We actively welcome your pull requests:
15 |
16 | 1. Fork the repo and create your branch from `master`.
17 | 2. If you've added code that should be tested, add tests.
18 | 3. If you've changed APIs, update the documentation.
19 | 4. Ensure the test suite passes.
20 | 5. Make sure your code lints.
21 | 6. Issue that pull request!
22 |
23 | ## Any contributions you make will be under the GPL-3.0 Software License
24 | In short, when you submit code changes, your submissions are understood to be under the same [GPL-3.0 License](https://choosealicense.com/licenses/gpl-3.0/) that covers the project. Feel free to contact the maintainers if that's a concern.
25 |
26 | ## Report bugs using Github's [issues](https://github.com/DislikesSchool/EduPage2/issues)
27 | We use GitHub issues to track public bugs. Report a bug by [opening a new issue](); it's that easy!
28 |
29 | ## Write bug reports with detail, background, and sample code
30 | [This is an example](http://stackoverflow.com/q/12488905/180626) of a bug report I wrote, and I think it's not a bad model. Here's [another example from Craig Hockenberry](http://www.openradar.me/11905408), an app developer whom I greatly respect.
31 |
32 | **Great Bug Reports** tend to have:
33 |
34 | - A quick summary and/or background
35 | - Steps to reproduce
36 | - Be specific!
37 | - Give sample code if you can. [My stackoverflow question](http://stackoverflow.com/q/12488905/180626) includes sample code that *anyone* with a base R setup can run to reproduce what I was seeing
38 | - What you expected would happen
39 | - What actually happens
40 | - Notes (possibly including why you think this might be happening, or stuff you tried that didn't work)
41 |
42 | People *love* thorough bug reports. I'm not even kidding.
43 |
44 | ## Use a Consistent Coding Style
45 | I'm again borrowing these from [Facebook's Guidelines](https://github.com/facebook/draft-js/blob/a9316a723f9e918afde44dea68b5f9f39b7d9b00/CONTRIBUTING.md)
46 |
47 | * 2 spaces for indentation rather than tabs
48 | * You can try running `flutter analyze` for style unification
49 |
50 | ## License
51 | By contributing, you agree that your contributions will be licensed under its MIT License.
52 |
53 | ## References
54 | This document was adapted from the open-source contribution guidelines for [Facebook's Draft](https://github.com/facebook/draft-js/blob/a9316a723f9e918afde44dea68b5f9f39b7d9b00/CONTRIBUTING.md)
55 |
--------------------------------------------------------------------------------
/linux/flutter/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | # This file controls Flutter-level build steps. It should not be edited.
2 | cmake_minimum_required(VERSION 3.10)
3 |
4 | set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral")
5 |
6 | # Configuration provided via flutter tool.
7 | include(${EPHEMERAL_DIR}/generated_config.cmake)
8 |
9 | # TODO: Move the rest of this into files in ephemeral. See
10 | # https://github.com/flutter/flutter/issues/57146.
11 |
12 | # Serves the same purpose as list(TRANSFORM ... PREPEND ...),
13 | # which isn't available in 3.10.
14 | function(list_prepend LIST_NAME PREFIX)
15 | set(NEW_LIST "")
16 | foreach(element ${${LIST_NAME}})
17 | list(APPEND NEW_LIST "${PREFIX}${element}")
18 | endforeach(element)
19 | set(${LIST_NAME} "${NEW_LIST}" PARENT_SCOPE)
20 | endfunction()
21 |
22 | # === Flutter Library ===
23 | # System-level dependencies.
24 | find_package(PkgConfig REQUIRED)
25 | pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0)
26 | pkg_check_modules(GLIB REQUIRED IMPORTED_TARGET glib-2.0)
27 | pkg_check_modules(GIO REQUIRED IMPORTED_TARGET gio-2.0)
28 |
29 | set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/libflutter_linux_gtk.so")
30 |
31 | # Published to parent scope for install step.
32 | set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE)
33 | set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE)
34 | set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE)
35 | set(AOT_LIBRARY "${PROJECT_DIR}/build/lib/libapp.so" PARENT_SCOPE)
36 |
37 | list(APPEND FLUTTER_LIBRARY_HEADERS
38 | "fl_basic_message_channel.h"
39 | "fl_binary_codec.h"
40 | "fl_binary_messenger.h"
41 | "fl_dart_project.h"
42 | "fl_engine.h"
43 | "fl_json_message_codec.h"
44 | "fl_json_method_codec.h"
45 | "fl_message_codec.h"
46 | "fl_method_call.h"
47 | "fl_method_channel.h"
48 | "fl_method_codec.h"
49 | "fl_method_response.h"
50 | "fl_plugin_registrar.h"
51 | "fl_plugin_registry.h"
52 | "fl_standard_message_codec.h"
53 | "fl_standard_method_codec.h"
54 | "fl_string_codec.h"
55 | "fl_value.h"
56 | "fl_view.h"
57 | "flutter_linux.h"
58 | )
59 | list_prepend(FLUTTER_LIBRARY_HEADERS "${EPHEMERAL_DIR}/flutter_linux/")
60 | add_library(flutter INTERFACE)
61 | target_include_directories(flutter INTERFACE
62 | "${EPHEMERAL_DIR}"
63 | )
64 | target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}")
65 | target_link_libraries(flutter INTERFACE
66 | PkgConfig::GTK
67 | PkgConfig::GLIB
68 | PkgConfig::GIO
69 | )
70 | add_dependencies(flutter flutter_assemble)
71 |
72 | # === Flutter tool backend ===
73 | # _phony_ is a non-existent file to force this command to run every time,
74 | # since currently there's no way to get a full input/output list from the
75 | # flutter tool.
76 | add_custom_command(
77 | OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS}
78 | ${CMAKE_CURRENT_BINARY_DIR}/_phony_
79 | COMMAND ${CMAKE_COMMAND} -E env
80 | ${FLUTTER_TOOL_ENVIRONMENT}
81 | "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.sh"
82 | ${FLUTTER_TARGET_PLATFORM} ${CMAKE_BUILD_TYPE}
83 | VERBATIM
84 | )
85 | add_custom_target(flutter_assemble DEPENDS
86 | "${FLUTTER_LIBRARY}"
87 | ${FLUTTER_LIBRARY_HEADERS}
88 | )
89 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "size" : "20x20",
5 | "idiom" : "iphone",
6 | "filename" : "Icon-App-20x20@2x.png",
7 | "scale" : "2x"
8 | },
9 | {
10 | "size" : "20x20",
11 | "idiom" : "iphone",
12 | "filename" : "Icon-App-20x20@3x.png",
13 | "scale" : "3x"
14 | },
15 | {
16 | "size" : "29x29",
17 | "idiom" : "iphone",
18 | "filename" : "Icon-App-29x29@1x.png",
19 | "scale" : "1x"
20 | },
21 | {
22 | "size" : "29x29",
23 | "idiom" : "iphone",
24 | "filename" : "Icon-App-29x29@2x.png",
25 | "scale" : "2x"
26 | },
27 | {
28 | "size" : "29x29",
29 | "idiom" : "iphone",
30 | "filename" : "Icon-App-29x29@3x.png",
31 | "scale" : "3x"
32 | },
33 | {
34 | "size" : "40x40",
35 | "idiom" : "iphone",
36 | "filename" : "Icon-App-40x40@2x.png",
37 | "scale" : "2x"
38 | },
39 | {
40 | "size" : "40x40",
41 | "idiom" : "iphone",
42 | "filename" : "Icon-App-40x40@3x.png",
43 | "scale" : "3x"
44 | },
45 | {
46 | "size" : "60x60",
47 | "idiom" : "iphone",
48 | "filename" : "Icon-App-60x60@2x.png",
49 | "scale" : "2x"
50 | },
51 | {
52 | "size" : "60x60",
53 | "idiom" : "iphone",
54 | "filename" : "Icon-App-60x60@3x.png",
55 | "scale" : "3x"
56 | },
57 | {
58 | "size" : "20x20",
59 | "idiom" : "ipad",
60 | "filename" : "Icon-App-20x20@1x.png",
61 | "scale" : "1x"
62 | },
63 | {
64 | "size" : "20x20",
65 | "idiom" : "ipad",
66 | "filename" : "Icon-App-20x20@2x.png",
67 | "scale" : "2x"
68 | },
69 | {
70 | "size" : "29x29",
71 | "idiom" : "ipad",
72 | "filename" : "Icon-App-29x29@1x.png",
73 | "scale" : "1x"
74 | },
75 | {
76 | "size" : "29x29",
77 | "idiom" : "ipad",
78 | "filename" : "Icon-App-29x29@2x.png",
79 | "scale" : "2x"
80 | },
81 | {
82 | "size" : "40x40",
83 | "idiom" : "ipad",
84 | "filename" : "Icon-App-40x40@1x.png",
85 | "scale" : "1x"
86 | },
87 | {
88 | "size" : "40x40",
89 | "idiom" : "ipad",
90 | "filename" : "Icon-App-40x40@2x.png",
91 | "scale" : "2x"
92 | },
93 | {
94 | "size" : "76x76",
95 | "idiom" : "ipad",
96 | "filename" : "Icon-App-76x76@1x.png",
97 | "scale" : "1x"
98 | },
99 | {
100 | "size" : "76x76",
101 | "idiom" : "ipad",
102 | "filename" : "Icon-App-76x76@2x.png",
103 | "scale" : "2x"
104 | },
105 | {
106 | "size" : "83.5x83.5",
107 | "idiom" : "ipad",
108 | "filename" : "Icon-App-83.5x83.5@2x.png",
109 | "scale" : "2x"
110 | },
111 | {
112 | "size" : "1024x1024",
113 | "idiom" : "ios-marketing",
114 | "filename" : "Icon-App-1024x1024@1x.png",
115 | "scale" : "1x"
116 | }
117 | ],
118 | "info" : {
119 | "version" : 1,
120 | "author" : "xcode"
121 | }
122 | }
123 |
--------------------------------------------------------------------------------
/PRIVACY_POLICY.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | Privacy Policy
4 | vyPal built the EduPage2 app as a open source app. This SERVICE is provided by vyPal at no cost and is intended
5 | for use as is.
6 | This page is used to inform website visitors regarding my policies with the collection, use, and
7 | disclosure of Personal Information if anyone decided to use my Service.
8 |
9 | Information Collection and Use
10 | The app does use third party services that may collect information used to identify you.
11 |
12 |
Log Data
13 | I want to inform you that whenever you use my Service, in case of an error in the app I collect
14 | data and information (through third party products) on your phone called Log Data. This Log Data
15 | may include information such as your devices’s Internet Protocol (“IP”) address, device name,
16 | operating system version, configuration of the app when utilising my Service, the time and date
17 | of your use of the Service, and other statistics.
18 |
19 | Service Providers
20 | I may employ third-party companies and individuals due to the following reasons:
21 |
22 | - To facilitate our Service;
23 | - To provide the Service on our behalf;
24 | - To perform Service-related services; or
25 | - To assist us in analyzing how our Service is used.
26 |
27 | I want to inform users of this Service that these third parties have access to your Personal
28 | Information. The reason is to perform the tasks assigned to them on our behalf. However, they
29 | are obligated not to disclose or use the information for any other purpose.
30 |
31 | Security
32 | I value your trust in providing us your Personal Information, thus we are striving to use
33 | commercially acceptable means of protecting it. But remember that no method of transmission over
34 | the internet, or method of electronic storage is 100% secure and reliable, and I cannot
35 | guarantee its absolute security.
36 |
37 | Links to Other Sites
38 | This Service may contain links to other sites. If you click on a third-party link, you will be
39 | directed to that site. Note that these external sites are not operated by me. Therefore, I
40 | strongly advise you to review the Privacy Policy of these websites. I have no control over, and
41 | assume no responsibility for the content, privacy policies, or practices of any third-party
42 | sites or services.
43 |
44 | Changes to This Privacy Policy
45 | I may update our Privacy Policy from time to time. Thus, you are advised to review this page
46 | periodically for any changes. I will notify you of any changes by posting the new Privacy Policy
47 | on this page. These changes are effective immediately, after they are posted on this page.
48 |
49 | Contact Us
50 | If you have any questions or suggestions about my Privacy Policy, do not hesitate to contact
51 | me.
52 | This Privacy Policy page was created at privacypolicytemplate.net.
54 |
55 |
--------------------------------------------------------------------------------
/lib/firebase_options.dart:
--------------------------------------------------------------------------------
1 | // File generated by FlutterFire CLI.
2 | // ignore_for_file: lines_longer_than_80_chars, avoid_classes_with_only_static_members
3 | import 'package:firebase_core/firebase_core.dart' show FirebaseOptions;
4 | import 'package:flutter/foundation.dart'
5 | show defaultTargetPlatform, kIsWeb, TargetPlatform;
6 |
7 | /// Default [FirebaseOptions] for use with your Firebase apps.
8 | ///
9 | /// Example:
10 | /// ```dart
11 | /// import 'firebase_options.dart';
12 | /// // ...
13 | /// await Firebase.initializeApp(
14 | /// options: DefaultFirebaseOptions.currentPlatform,
15 | /// );
16 | /// ```
17 | class DefaultFirebaseOptions {
18 | static FirebaseOptions get currentPlatform {
19 | if (kIsWeb) {
20 | return web;
21 | }
22 | switch (defaultTargetPlatform) {
23 | case TargetPlatform.android:
24 | return android;
25 | case TargetPlatform.iOS:
26 | return ios;
27 | case TargetPlatform.macOS:
28 | return macos;
29 | case TargetPlatform.windows:
30 | throw UnsupportedError(
31 | 'DefaultFirebaseOptions have not been configured for windows - '
32 | 'you can reconfigure this by running the FlutterFire CLI again.',
33 | );
34 | case TargetPlatform.linux:
35 | throw UnsupportedError(
36 | 'DefaultFirebaseOptions have not been configured for linux - '
37 | 'you can reconfigure this by running the FlutterFire CLI again.',
38 | );
39 | default:
40 | throw UnsupportedError(
41 | 'DefaultFirebaseOptions are not supported for this platform.',
42 | );
43 | }
44 | }
45 |
46 | static const FirebaseOptions web = FirebaseOptions(
47 | apiKey: 'AIzaSyBo5DcGq2EHwN0XN7l32Mj5ltXGq0HYRrY',
48 | appId: '1:515530161188:web:909c45a64e928723586cb1',
49 | messagingSenderId: '515530161188',
50 | projectId: 'cool-beanbag-355116',
51 | authDomain: 'cool-beanbag-355116.firebaseapp.com',
52 | storageBucket: 'cool-beanbag-355116.appspot.com',
53 | measurementId: 'G-DBG4CSJZ0G',
54 | );
55 |
56 | static const FirebaseOptions android = FirebaseOptions(
57 | apiKey: 'AIzaSyAaOabatY2bheZOiD8YnI_D8loaDOF6WqM',
58 | appId: '1:515530161188:android:b2eab7f36d46ae03586cb1',
59 | messagingSenderId: '515530161188',
60 | projectId: 'cool-beanbag-355116',
61 | storageBucket: 'cool-beanbag-355116.appspot.com',
62 | );
63 |
64 | static const FirebaseOptions ios = FirebaseOptions(
65 | apiKey: 'AIzaSyA6i2BCZjYxKNYaB7lM-6G4bgjn2IAElGA',
66 | appId: '1:515530161188:ios:77048f79240d7c52586cb1',
67 | messagingSenderId: '515530161188',
68 | projectId: 'cool-beanbag-355116',
69 | storageBucket: 'cool-beanbag-355116.appspot.com',
70 | iosClientId:
71 | '515530161188-6em8bou6f47mqqlukre85q7vmet5lkbr.apps.googleusercontent.com',
72 | iosBundleId: 'com.example.eduapge2',
73 | );
74 |
75 | static const FirebaseOptions macos = FirebaseOptions(
76 | apiKey: 'AIzaSyA6i2BCZjYxKNYaB7lM-6G4bgjn2IAElGA',
77 | appId: '1:515530161188:ios:77048f79240d7c52586cb1',
78 | messagingSenderId: '515530161188',
79 | projectId: 'cool-beanbag-355116',
80 | storageBucket: 'cool-beanbag-355116.appspot.com',
81 | iosClientId:
82 | '515530161188-6em8bou6f47mqqlukre85q7vmet5lkbr.apps.googleusercontent.com',
83 | iosBundleId: 'com.example.eduapge2',
84 | );
85 | }
86 |
--------------------------------------------------------------------------------
/.github/workflows/build-patch.yml:
--------------------------------------------------------------------------------
1 | name: build-patch-android
2 | run-name: Builds a patch and uploads to shorebird
3 | permissions:
4 | contents: write
5 | packages: write
6 | deployments: write
7 | issues: write
8 | pull-requests: write
9 | repository-projects: write
10 | security-events: write
11 | statuses: write
12 | on: workflow_dispatch
13 | jobs:
14 | build:
15 | runs-on: ubuntu-latest
16 | steps:
17 | - uses: actions/checkout@v3
18 | with:
19 | fetch-depth: 0
20 | - uses: actions/setup-java@v2
21 | with:
22 | distribution: "zulu"
23 | java-version: "17"
24 | - uses: subosito/flutter-action@v2
25 | with:
26 | channel: "stable"
27 | cache: true
28 | cache-key: "flutter-:os:-:channel:-:version:" # optional, change this to force refresh cache
29 | architecture: x64
30 | - name: 🐦 Setup Shorebird
31 | uses: shorebirdtech/setup-shorebird@v0
32 | - name: Create the Keystore
33 | env:
34 | KEYSTORE_B64: ${{ secrets.KEYSTORE_B64 }}
35 | run: |
36 | # import keystore from secrets
37 | echo $KEYSTORE_B64 | base64 -d > $RUNNER_TEMP/keystore.jks
38 | - name: Create key.properties
39 | env:
40 | KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASS }}
41 | KEY_ALIAS: ${{ secrets.KEYSTORE_ALIAS }}
42 | KEY_PASSWORD: ${{ secrets.KEY_PASS }}
43 | run: |
44 | echo -e "storePassword=$KEYSTORE_PASSWORD\nkeyPassword=$KEY_PASSWORD\nkeyAlias=$KEY_ALIAS\nstoreFile=$RUNNER_TEMP/keystore.jks" > android/key.properties
45 | - name: "Get Previous tag"
46 | id: previoustag
47 | uses: "WyriHaximus/github-action-get-previous-tag@v1"
48 | with:
49 | fallback: 1.0.0
50 | - name: Extract version from tag
51 | uses: damienaicheh/extract-version-from-tag-action@v1.1.0
52 | - name: Trim v prefix
53 | id: trimv
54 | run: |
55 | prefix="v"
56 | string="${{ steps.previoustag.outputs.tag }}"
57 | echo "VERSION=${string#"$prefix"}" >> $GITHUB_OUTPUT
58 | - name: Update pubspec.yaml
59 | uses: fjogeleit/yaml-update-action@main
60 | with:
61 | valueFile: "pubspec.yaml"
62 | propertyPath: "version"
63 | value: "${{ steps.trimv.outputs.VERSION }}"
64 | commitChange: false
65 | - name: Decrement versionCode in version.properties
66 | run: |
67 | FILE="android/app/version.properties"
68 | if [ -f "$FILE" ]; then
69 | currentVersion=$(grep -E '^versionCode=' "$FILE" | cut -d'=' -f2)
70 | if [ -z "$currentVersion" ]; then
71 | echo "versionCode not found in $FILE" && exit 1
72 | fi
73 | newVersion=$(( currentVersion - 1 ))
74 | sed -i "s/versionCode=$currentVersion/versionCode=$newVersion/" "$FILE"
75 | echo "versionCode updated from $currentVersion to $newVersion in $FILE"
76 | else
77 | echo "$FILE does not exist!" && exit 1
78 | fi
79 | - run: flutter pub get
80 | - run: flutter gen-l10n
81 | - name: 🚀 Shorebird Patch
82 | run: shorebird patch android --dart-define=BVS="Patch ${{ steps.previoustag.outputs.tag }}+${{ env.NUMBER_OF_COMMITS_SINCE_TAG }} ShoreBird"
83 | env:
84 | SHOREBIRD_TOKEN: ${{ secrets.SHOREBIRD_TOKEN }}
85 |
--------------------------------------------------------------------------------
/.github/workflows/build-preview-apk.yml:
--------------------------------------------------------------------------------
1 | name: build-preview-android
2 | run-name: Building a preview version apk file
3 | permissions:
4 | contents: write
5 | packages: write
6 | deployments: write
7 | issues: write
8 | pull-requests: write
9 | repository-projects: write
10 | security-events: write
11 | statuses: write
12 | on: workflow_dispatch
13 | jobs:
14 | build:
15 | if: contains(toJSON(github.event.head_commit.message), 'Merge pull request ') == false
16 | runs-on: ubuntu-latest
17 | steps:
18 | - uses: actions/checkout@v3
19 | with:
20 | fetch-depth: 0
21 | - uses: actions/setup-java@v2
22 | with:
23 | distribution: "zulu"
24 | java-version: "17"
25 | - uses: subosito/flutter-action@v2
26 | with:
27 | channel: "stable"
28 | cache: true
29 | cache-key: "flutter-:os:-:channel:-:version:" # optional, change this to force refresh cache
30 | architecture: x64
31 | - name: Create the Keystore
32 | env:
33 | KEYSTORE_B64: ${{ secrets.KEYSTORE_B64 }}
34 | run: |
35 | # import keystore from secrets
36 | echo $KEYSTORE_B64 | base64 -d > $RUNNER_TEMP/keystore.jks
37 | - name: Create key.properties
38 | env:
39 | KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASS }}
40 | KEY_ALIAS: ${{ secrets.KEYSTORE_ALIAS }}
41 | KEY_PASSWORD: ${{ secrets.KEY_PASS }}
42 | run: |
43 | echo -e "storePassword=$KEYSTORE_PASSWORD\nkeyPassword=$KEY_PASSWORD\nkeyAlias=$KEY_ALIAS\nstoreFile=$RUNNER_TEMP/keystore.jks" > android/key.properties
44 | - uses: paulhatch/semantic-version@v5.0.2
45 | id: semver
46 | with:
47 | # The prefix to use to identify tags
48 | tag_prefix: "v"
49 | # A string which, if present in a git commit, indicates that a change represents a
50 | # major (breaking) change, supports regular expressions wrapped with '/'
51 | major_pattern: "(MAJOR)"
52 | # A string which indicates the flags used by the `major_pattern` regular expression. Supported flags: idgs
53 | major_regexp_flags: ""
54 | # Same as above except indicating a minor change, supports regular expressions wrapped with '/'
55 | minor_pattern: "(MINOR)"
56 | # A string which indicates the flags used by the `minor_pattern` regular expression. Supported flags: idgs
57 | minor_regexp_flags: ""
58 | # A string to determine the format of the version output
59 | version_format: "${major}.${minor}.${patch}+${increment}"
60 | bump_each_commit: false
61 | - run: flutter pub get
62 | - run: flutter gen-l10n
63 | - run: flutter build apk --build-name ${{ steps.semver.outputs.version }} --dart-define=BVS="Preview ${{ steps.semver.outputs.version }} ${{ github.ref_name }} GitHub"
64 | - run: cp "build/app/outputs/apk/release/app-release.apk" "EduPage2-v${{ steps.semver.outputs.version }}.apk"
65 | - uses: "marvinpinto/action-automatic-releases@latest"
66 | with:
67 | repo_token: "${{ secrets.GITHUB_TOKEN }}"
68 | automatic_release_tag: "v${{ steps.semver.outputs.version }}-${{ github.ref_name }}"
69 | prerelease: true
70 | title: "EduPage2 Preview v${{ steps.semver.outputs.version }} ${{ github.ref_name }}"
71 | files: |
72 | EduPage2-v${{ steps.semver.outputs.version }}.apk
73 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
37 |
38 |
39 |
40 |
41 |
42 |
52 |
54 |
60 |
61 |
62 |
63 |
69 |
71 |
77 |
78 |
79 |
80 |
82 |
83 |
86 |
87 |
88 |
--------------------------------------------------------------------------------
/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
37 |
38 |
39 |
40 |
41 |
42 |
52 |
54 |
60 |
61 |
62 |
63 |
69 |
71 |
77 |
78 |
79 |
80 |
82 |
83 |
86 |
87 |
88 |
--------------------------------------------------------------------------------
/windows/runner/Runner.rc:
--------------------------------------------------------------------------------
1 | // Microsoft Visual C++ generated resource script.
2 | //
3 | #pragma code_page(65001)
4 | #include "resource.h"
5 |
6 | #define APSTUDIO_READONLY_SYMBOLS
7 | /////////////////////////////////////////////////////////////////////////////
8 | //
9 | // Generated from the TEXTINCLUDE 2 resource.
10 | //
11 | #include "winres.h"
12 |
13 | /////////////////////////////////////////////////////////////////////////////
14 | #undef APSTUDIO_READONLY_SYMBOLS
15 |
16 | /////////////////////////////////////////////////////////////////////////////
17 | // English (United States) resources
18 |
19 | #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
20 | LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
21 |
22 | #ifdef APSTUDIO_INVOKED
23 | /////////////////////////////////////////////////////////////////////////////
24 | //
25 | // TEXTINCLUDE
26 | //
27 |
28 | 1 TEXTINCLUDE
29 | BEGIN
30 | "resource.h\0"
31 | END
32 |
33 | 2 TEXTINCLUDE
34 | BEGIN
35 | "#include ""winres.h""\r\n"
36 | "\0"
37 | END
38 |
39 | 3 TEXTINCLUDE
40 | BEGIN
41 | "\r\n"
42 | "\0"
43 | END
44 |
45 | #endif // APSTUDIO_INVOKED
46 |
47 |
48 | /////////////////////////////////////////////////////////////////////////////
49 | //
50 | // Icon
51 | //
52 |
53 | // Icon with lowest ID value placed first to ensure application icon
54 | // remains consistent on all systems.
55 | IDI_APP_ICON ICON "resources\\app_icon.ico"
56 |
57 |
58 | /////////////////////////////////////////////////////////////////////////////
59 | //
60 | // Version
61 | //
62 |
63 | #if defined(FLUTTER_VERSION_MAJOR) && defined(FLUTTER_VERSION_MINOR) && defined(FLUTTER_VERSION_PATCH) && defined(FLUTTER_VERSION_BUILD)
64 | #define VERSION_AS_NUMBER FLUTTER_VERSION_MAJOR,FLUTTER_VERSION_MINOR,FLUTTER_VERSION_PATCH,FLUTTER_VERSION_BUILD
65 | #else
66 | #define VERSION_AS_NUMBER 1,0,0,0
67 | #endif
68 |
69 | #if defined(FLUTTER_VERSION)
70 | #define VERSION_AS_STRING FLUTTER_VERSION
71 | #else
72 | #define VERSION_AS_STRING "1.0.0"
73 | #endif
74 |
75 | VS_VERSION_INFO VERSIONINFO
76 | FILEVERSION VERSION_AS_NUMBER
77 | PRODUCTVERSION VERSION_AS_NUMBER
78 | FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
79 | #ifdef _DEBUG
80 | FILEFLAGS VS_FF_DEBUG
81 | #else
82 | FILEFLAGS 0x0L
83 | #endif
84 | FILEOS VOS__WINDOWS32
85 | FILETYPE VFT_APP
86 | FILESUBTYPE 0x0L
87 | BEGIN
88 | BLOCK "StringFileInfo"
89 | BEGIN
90 | BLOCK "040904e4"
91 | BEGIN
92 | VALUE "CompanyName", "com.example" "\0"
93 | VALUE "FileDescription", "eduapge2" "\0"
94 | VALUE "FileVersion", VERSION_AS_STRING "\0"
95 | VALUE "InternalName", "eduapge2" "\0"
96 | VALUE "LegalCopyright", "Copyright (C) 2023 com.example. All rights reserved." "\0"
97 | VALUE "OriginalFilename", "eduapge2.exe" "\0"
98 | VALUE "ProductName", "eduapge2" "\0"
99 | VALUE "ProductVersion", VERSION_AS_STRING "\0"
100 | END
101 | END
102 | BLOCK "VarFileInfo"
103 | BEGIN
104 | VALUE "Translation", 0x409, 1252
105 | END
106 | END
107 |
108 | #endif // English (United States) resources
109 | /////////////////////////////////////////////////////////////////////////////
110 |
111 |
112 |
113 | #ifndef APSTUDIO_INVOKED
114 | /////////////////////////////////////////////////////////////////////////////
115 | //
116 | // Generated from the TEXTINCLUDE 3 resource.
117 | //
118 |
119 |
120 | /////////////////////////////////////////////////////////////////////////////
121 | #endif // not APSTUDIO_INVOKED
122 |
--------------------------------------------------------------------------------
/android/app/.cxx/RelWithDebInfo/366w3j3f/x86/CMakeFiles/3.22.1-g37088a8/CMakeCCompiler.cmake:
--------------------------------------------------------------------------------
1 | set(CMAKE_C_COMPILER "/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/bin/clang")
2 | set(CMAKE_C_COMPILER_ARG1 "")
3 | set(CMAKE_C_COMPILER_ID "Clang")
4 | set(CMAKE_C_COMPILER_VERSION "18.0.1")
5 | set(CMAKE_C_COMPILER_VERSION_INTERNAL "")
6 | set(CMAKE_C_COMPILER_WRAPPER "")
7 | set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "17")
8 | set(CMAKE_C_EXTENSIONS_COMPUTED_DEFAULT "ON")
9 | set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert;c_std_17;c_std_23")
10 | set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes")
11 | set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros")
12 | set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert")
13 | set(CMAKE_C17_COMPILE_FEATURES "c_std_17")
14 | set(CMAKE_C23_COMPILE_FEATURES "c_std_23")
15 |
16 | set(CMAKE_C_PLATFORM_ID "Linux")
17 | set(CMAKE_C_SIMULATE_ID "")
18 | set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU")
19 | set(CMAKE_C_SIMULATE_VERSION "")
20 |
21 |
22 |
23 |
24 | set(CMAKE_AR "/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar")
25 | set(CMAKE_C_COMPILER_AR "/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar")
26 | set(CMAKE_RANLIB "/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib")
27 | set(CMAKE_C_COMPILER_RANLIB "/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib")
28 | set(CMAKE_LINKER "/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/bin/ld.lld")
29 | set(CMAKE_MT "")
30 | set(CMAKE_COMPILER_IS_GNUCC )
31 | set(CMAKE_C_COMPILER_LOADED 1)
32 | set(CMAKE_C_COMPILER_WORKS TRUE)
33 | set(CMAKE_C_ABI_COMPILED TRUE)
34 |
35 | set(CMAKE_C_COMPILER_ENV_VAR "CC")
36 |
37 | set(CMAKE_C_COMPILER_ID_RUN 1)
38 | set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m)
39 | set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
40 | set(CMAKE_C_LINKER_PREFERENCE 10)
41 |
42 | # Save compiler ABI information.
43 | set(CMAKE_C_SIZEOF_DATA_PTR "4")
44 | set(CMAKE_C_COMPILER_ABI "ELF")
45 | set(CMAKE_C_BYTE_ORDER "LITTLE_ENDIAN")
46 | set(CMAKE_C_LIBRARY_ARCHITECTURE "")
47 |
48 | if(CMAKE_C_SIZEOF_DATA_PTR)
49 | set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}")
50 | endif()
51 |
52 | if(CMAKE_C_COMPILER_ABI)
53 | set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}")
54 | endif()
55 |
56 | if(CMAKE_C_LIBRARY_ARCHITECTURE)
57 | set(CMAKE_LIBRARY_ARCHITECTURE "")
58 | endif()
59 |
60 | set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "")
61 | if(CMAKE_C_CL_SHOWINCLUDES_PREFIX)
62 | set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}")
63 | endif()
64 |
65 |
66 |
67 |
68 |
69 | set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/include;/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/i686-linux-android;/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include")
70 | set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "-l:libunwind.a;dl;c;-l:libunwind.a;dl")
71 | set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/lib/linux/i386;/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/i686-linux-android/21;/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/i686-linux-android;/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib")
72 | set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
73 |
--------------------------------------------------------------------------------
/android/app/.cxx/RelWithDebInfo/366w3j3f/x86_64/CMakeFiles/3.22.1-g37088a8/CMakeCCompiler.cmake:
--------------------------------------------------------------------------------
1 | set(CMAKE_C_COMPILER "/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/bin/clang")
2 | set(CMAKE_C_COMPILER_ARG1 "")
3 | set(CMAKE_C_COMPILER_ID "Clang")
4 | set(CMAKE_C_COMPILER_VERSION "18.0.1")
5 | set(CMAKE_C_COMPILER_VERSION_INTERNAL "")
6 | set(CMAKE_C_COMPILER_WRAPPER "")
7 | set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "17")
8 | set(CMAKE_C_EXTENSIONS_COMPUTED_DEFAULT "ON")
9 | set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert;c_std_17;c_std_23")
10 | set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes")
11 | set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros")
12 | set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert")
13 | set(CMAKE_C17_COMPILE_FEATURES "c_std_17")
14 | set(CMAKE_C23_COMPILE_FEATURES "c_std_23")
15 |
16 | set(CMAKE_C_PLATFORM_ID "Linux")
17 | set(CMAKE_C_SIMULATE_ID "")
18 | set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU")
19 | set(CMAKE_C_SIMULATE_VERSION "")
20 |
21 |
22 |
23 |
24 | set(CMAKE_AR "/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar")
25 | set(CMAKE_C_COMPILER_AR "/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar")
26 | set(CMAKE_RANLIB "/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib")
27 | set(CMAKE_C_COMPILER_RANLIB "/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib")
28 | set(CMAKE_LINKER "/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/bin/ld.lld")
29 | set(CMAKE_MT "")
30 | set(CMAKE_COMPILER_IS_GNUCC )
31 | set(CMAKE_C_COMPILER_LOADED 1)
32 | set(CMAKE_C_COMPILER_WORKS TRUE)
33 | set(CMAKE_C_ABI_COMPILED TRUE)
34 |
35 | set(CMAKE_C_COMPILER_ENV_VAR "CC")
36 |
37 | set(CMAKE_C_COMPILER_ID_RUN 1)
38 | set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m)
39 | set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
40 | set(CMAKE_C_LINKER_PREFERENCE 10)
41 |
42 | # Save compiler ABI information.
43 | set(CMAKE_C_SIZEOF_DATA_PTR "8")
44 | set(CMAKE_C_COMPILER_ABI "ELF")
45 | set(CMAKE_C_BYTE_ORDER "LITTLE_ENDIAN")
46 | set(CMAKE_C_LIBRARY_ARCHITECTURE "")
47 |
48 | if(CMAKE_C_SIZEOF_DATA_PTR)
49 | set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}")
50 | endif()
51 |
52 | if(CMAKE_C_COMPILER_ABI)
53 | set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}")
54 | endif()
55 |
56 | if(CMAKE_C_LIBRARY_ARCHITECTURE)
57 | set(CMAKE_LIBRARY_ARCHITECTURE "")
58 | endif()
59 |
60 | set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "")
61 | if(CMAKE_C_CL_SHOWINCLUDES_PREFIX)
62 | set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}")
63 | endif()
64 |
65 |
66 |
67 |
68 |
69 | set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/include;/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/x86_64-linux-android;/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include")
70 | set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "-l:libunwind.a;dl;c;-l:libunwind.a;dl")
71 | set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/lib/linux/x86_64;/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/x86_64-linux-android/21;/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/x86_64-linux-android;/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib")
72 | set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
73 |
--------------------------------------------------------------------------------
/android/app/.cxx/RelWithDebInfo/366w3j3f/arm64-v8a/CMakeFiles/3.22.1-g37088a8/CMakeCCompiler.cmake:
--------------------------------------------------------------------------------
1 | set(CMAKE_C_COMPILER "/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/bin/clang")
2 | set(CMAKE_C_COMPILER_ARG1 "")
3 | set(CMAKE_C_COMPILER_ID "Clang")
4 | set(CMAKE_C_COMPILER_VERSION "18.0.1")
5 | set(CMAKE_C_COMPILER_VERSION_INTERNAL "")
6 | set(CMAKE_C_COMPILER_WRAPPER "")
7 | set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "17")
8 | set(CMAKE_C_EXTENSIONS_COMPUTED_DEFAULT "ON")
9 | set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert;c_std_17;c_std_23")
10 | set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes")
11 | set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros")
12 | set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert")
13 | set(CMAKE_C17_COMPILE_FEATURES "c_std_17")
14 | set(CMAKE_C23_COMPILE_FEATURES "c_std_23")
15 |
16 | set(CMAKE_C_PLATFORM_ID "Linux")
17 | set(CMAKE_C_SIMULATE_ID "")
18 | set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU")
19 | set(CMAKE_C_SIMULATE_VERSION "")
20 |
21 |
22 |
23 |
24 | set(CMAKE_AR "/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar")
25 | set(CMAKE_C_COMPILER_AR "/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar")
26 | set(CMAKE_RANLIB "/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib")
27 | set(CMAKE_C_COMPILER_RANLIB "/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib")
28 | set(CMAKE_LINKER "/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/bin/ld.lld")
29 | set(CMAKE_MT "")
30 | set(CMAKE_COMPILER_IS_GNUCC )
31 | set(CMAKE_C_COMPILER_LOADED 1)
32 | set(CMAKE_C_COMPILER_WORKS TRUE)
33 | set(CMAKE_C_ABI_COMPILED TRUE)
34 |
35 | set(CMAKE_C_COMPILER_ENV_VAR "CC")
36 |
37 | set(CMAKE_C_COMPILER_ID_RUN 1)
38 | set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m)
39 | set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
40 | set(CMAKE_C_LINKER_PREFERENCE 10)
41 |
42 | # Save compiler ABI information.
43 | set(CMAKE_C_SIZEOF_DATA_PTR "8")
44 | set(CMAKE_C_COMPILER_ABI "ELF")
45 | set(CMAKE_C_BYTE_ORDER "LITTLE_ENDIAN")
46 | set(CMAKE_C_LIBRARY_ARCHITECTURE "")
47 |
48 | if(CMAKE_C_SIZEOF_DATA_PTR)
49 | set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}")
50 | endif()
51 |
52 | if(CMAKE_C_COMPILER_ABI)
53 | set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}")
54 | endif()
55 |
56 | if(CMAKE_C_LIBRARY_ARCHITECTURE)
57 | set(CMAKE_LIBRARY_ARCHITECTURE "")
58 | endif()
59 |
60 | set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "")
61 | if(CMAKE_C_CL_SHOWINCLUDES_PREFIX)
62 | set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}")
63 | endif()
64 |
65 |
66 |
67 |
68 |
69 | set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/include;/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/aarch64-linux-android;/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include")
70 | set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "-l:libunwind.a;dl;c;-l:libunwind.a;dl")
71 | set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/lib/linux/aarch64;/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/21;/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android;/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib")
72 | set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
73 |
--------------------------------------------------------------------------------
/android/app/.cxx/RelWithDebInfo/366w3j3f/armeabi-v7a/CMakeFiles/3.22.1-g37088a8/CMakeCCompiler.cmake:
--------------------------------------------------------------------------------
1 | set(CMAKE_C_COMPILER "/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/bin/clang")
2 | set(CMAKE_C_COMPILER_ARG1 "")
3 | set(CMAKE_C_COMPILER_ID "Clang")
4 | set(CMAKE_C_COMPILER_VERSION "18.0.1")
5 | set(CMAKE_C_COMPILER_VERSION_INTERNAL "")
6 | set(CMAKE_C_COMPILER_WRAPPER "")
7 | set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "17")
8 | set(CMAKE_C_EXTENSIONS_COMPUTED_DEFAULT "ON")
9 | set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert;c_std_17;c_std_23")
10 | set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes")
11 | set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros")
12 | set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert")
13 | set(CMAKE_C17_COMPILE_FEATURES "c_std_17")
14 | set(CMAKE_C23_COMPILE_FEATURES "c_std_23")
15 |
16 | set(CMAKE_C_PLATFORM_ID "Linux")
17 | set(CMAKE_C_SIMULATE_ID "")
18 | set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU")
19 | set(CMAKE_C_SIMULATE_VERSION "")
20 |
21 |
22 |
23 |
24 | set(CMAKE_AR "/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar")
25 | set(CMAKE_C_COMPILER_AR "/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar")
26 | set(CMAKE_RANLIB "/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib")
27 | set(CMAKE_C_COMPILER_RANLIB "/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib")
28 | set(CMAKE_LINKER "/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/bin/ld.lld")
29 | set(CMAKE_MT "")
30 | set(CMAKE_COMPILER_IS_GNUCC )
31 | set(CMAKE_C_COMPILER_LOADED 1)
32 | set(CMAKE_C_COMPILER_WORKS TRUE)
33 | set(CMAKE_C_ABI_COMPILED TRUE)
34 |
35 | set(CMAKE_C_COMPILER_ENV_VAR "CC")
36 |
37 | set(CMAKE_C_COMPILER_ID_RUN 1)
38 | set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m)
39 | set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
40 | set(CMAKE_C_LINKER_PREFERENCE 10)
41 |
42 | # Save compiler ABI information.
43 | set(CMAKE_C_SIZEOF_DATA_PTR "4")
44 | set(CMAKE_C_COMPILER_ABI "ELF")
45 | set(CMAKE_C_BYTE_ORDER "LITTLE_ENDIAN")
46 | set(CMAKE_C_LIBRARY_ARCHITECTURE "")
47 |
48 | if(CMAKE_C_SIZEOF_DATA_PTR)
49 | set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}")
50 | endif()
51 |
52 | if(CMAKE_C_COMPILER_ABI)
53 | set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}")
54 | endif()
55 |
56 | if(CMAKE_C_LIBRARY_ARCHITECTURE)
57 | set(CMAKE_LIBRARY_ARCHITECTURE "")
58 | endif()
59 |
60 | set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "")
61 | if(CMAKE_C_CL_SHOWINCLUDES_PREFIX)
62 | set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}")
63 | endif()
64 |
65 |
66 |
67 |
68 |
69 | set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/include;/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/arm-linux-androideabi;/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include")
70 | set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "-l:libunwind.a;dl;c;-l:libunwind.a;dl")
71 | set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/lib/clang/18/lib/linux/arm;/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/arm-linux-androideabi/21;/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/arm-linux-androideabi;/opt/android-sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib")
72 | set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
73 |
--------------------------------------------------------------------------------
/android/app/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id "com.android.application"
3 | id "kotlin-android"
4 | id "dev.flutter.flutter-gradle-plugin"
5 | id "com.google.gms.google-services"
6 | }
7 |
8 | def localProperties = new Properties()
9 | def localPropertiesFile = rootProject.file('local.properties')
10 | if (localPropertiesFile.exists()) {
11 | localPropertiesFile.withReader('UTF-8') { reader ->
12 | localProperties.load(reader)
13 | }
14 | }
15 |
16 | def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
17 | if (flutterVersionCode == null) {
18 | flutterVersionCode = '1'
19 | }
20 |
21 | def flutterVersionName = localProperties.getProperty('flutter.versionName')
22 | if (flutterVersionName == null) {
23 | flutterVersionName = '1.0'
24 | }
25 |
26 | def keystoreProperties = new Properties()
27 | def keystorePropertiesFile = rootProject.file('key.properties')
28 | if (keystorePropertiesFile.exists()) {
29 | keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
30 | }
31 |
32 | def versionPropertiesFile = file('version.properties')
33 |
34 | def versionProperties = new Properties()
35 |
36 | if (versionPropertiesFile.canRead()) {
37 | versionProperties.load(new FileInputStream(versionPropertiesFile))
38 | }
39 |
40 | def appVersionCode = (versionProperties['versionCode'] ?: "1").toInteger()
41 |
42 | task incrementVersionCode {
43 | doLast {
44 | versionProperties['versionCode'] = (appVersionCode + 1).toString()
45 | versionProperties.store(versionPropertiesFile.newWriter(), null)
46 | }
47 | }
48 |
49 | android {
50 | namespace "com.vypal.eduapge2"
51 | compileSdkVersion 36
52 | ndkVersion "28.2.13676358"
53 |
54 | compileOptions {
55 | sourceCompatibility JavaVersion.VERSION_17
56 | targetCompatibility JavaVersion.VERSION_17
57 | }
58 |
59 | kotlinOptions {
60 | jvmTarget = '17'
61 | }
62 |
63 | sourceSets {
64 | main.java.srcDirs += 'src/main/kotlin'
65 | }
66 |
67 | defaultConfig {
68 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
69 | applicationId "com.vypal.eduapge2"
70 | // You can update the following values to match your application needs.
71 | // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
72 | versionCode appVersionCode
73 | versionName flutterVersionName
74 | targetSdkVersion 36
75 | minSdkVersion flutter.minSdkVersion
76 | compileSdkVersion 36
77 | multiDexEnabled true
78 | }
79 |
80 | signingConfigs {
81 | release {
82 | keyAlias keystoreProperties['keyAlias']
83 | keyPassword keystoreProperties['keyPassword']
84 | storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
85 | storePassword keystoreProperties['storePassword']
86 | }
87 | }
88 |
89 | buildTypes {
90 | release {
91 | minifyEnabled true
92 | shrinkResources true
93 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt')
94 | signingConfig signingConfigs.release
95 | }
96 | }
97 |
98 | tasks.whenTaskAdded { task ->
99 | if (task.name == 'assembleRelease') {
100 | task.dependsOn incrementVersionCode
101 | }
102 | }
103 | }
104 |
105 | flutter {
106 | source '../..'
107 | }
108 |
109 | dependencies {
110 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.7.10"
111 | implementation 'com.android.support:multidex:1.0.3'
112 | }
113 |
--------------------------------------------------------------------------------
/.devcontainer/Dockerfile:
--------------------------------------------------------------------------------
1 | #-------------------------------------------------------------------------------------------------------------
2 | # Flutter Dev Container - Lucas Hilleshein dos Santos.
3 | # Licensed under the MIT License.
4 | # See https://github.com/lucashilles/flutter-dev-container/blob/master/LICENSE for license information.
5 | #-------------------------------------------------------------------------------------------------------------
6 |
7 | FROM ubuntu:latest
8 |
9 | #Locale
10 | ENV LANG C.UTF-8
11 |
12 |
13 |
14 | # This Dockerfile adds a non-root user with sudo access. Use the "remoteUser"
15 | # property in devcontainer.json to use it. On Linux, the container user's GID/UIDs
16 | # will be updated to match your local UID/GID (when using the dockerFile property).
17 | # See https://aka.ms/vscode-remote/containers/non-root-user for details.
18 | ARG USERNAME=vscode
19 | ARG USER_UID=1000
20 | ARG USER_GID=$USER_UID
21 |
22 | #
23 | # Install needed packages, setup user anda clean up.
24 | RUN apt update \
25 | && apt install -y sudo \
26 | && apt install -y openjdk-11-jdk-headless --no-install-recommends \
27 | && apt install -y wget curl git xz-utils zip unzip --no-install-recommends
28 |
29 | # Clean Up
30 | RUN apt-get autoremove -y \
31 | && apt-get clean -y \
32 | && rm -rf /var/lib/apt/lists/*
33 | # Create a non-root user to use if preferred - see https://aka.ms/vscode-remote/containers/non-root-user.
34 | # [Optional] Add sudo support for the non-root user
35 | RUN groupadd --gid $USER_GID $USERNAME \
36 | && useradd -s /bin/bash --uid $USER_UID --gid $USER_GID -m $USERNAME \
37 | && echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME \
38 | && chmod 0440 /etc/sudoers.d/$USERNAME \
39 | && su $USERNAME \
40 | && cd $HOME
41 |
42 |
43 |
44 | #
45 | # Android SDK
46 | # https://developer.android.com/studio#downloads
47 | ENV ANDROID_SDK_TOOLS_VERSION=8512546
48 | ENV ANDROID_PLATFORM_VERSION=33
49 | ENV ANDROID_BUILD_TOOLS_VERSION=33.0.0
50 | ENV ANDROID_HOME=~/android-sdk-linux
51 | ENV ANDROID_SDK_ROOT="$ANDROID_HOME"
52 | ENV PATH=${PATH}:${ANDROID_HOME}/cmdline-tools/cmdline-tools/bin:${ANDROID_HOME}/platform-tools:${ANDROID_HOME}/emulator
53 |
54 | #
55 | # Flutter SDK
56 | # https://flutter.dev/docs/development/tools/sdk/releases?tab=linux
57 | ENV FLUTTER_CHANNEL="stable"
58 | ENV FLUTTER_VERSION="3.3.4"
59 | # Make sure to use the needed channel and version for this.
60 | ENV FLUTTER_HOME=~/flutter
61 | ENV PATH=${PATH}:${FLUTTER_HOME}/bin
62 |
63 |
64 | #
65 | # Android SDK
66 | RUN curl -C - --output android-sdk-tools.zip https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_SDK_TOOLS_VERSION}_latest.zip \
67 | && mkdir -p ${ANDROID_HOME}/ \
68 | && unzip -q android-sdk-tools.zip -d ${ANDROID_HOME}/cmdline-tools/ \
69 | && rm android-sdk-tools.zip \
70 | && yes | sdkmanager --licenses \
71 | && touch $HOME/.android/repositories.cfg \
72 | && sdkmanager platform-tools \
73 | && sdkmanager emulator \
74 | && sdkmanager "platforms;android-${ANDROID_PLATFORM_VERSION}" "build-tools;$ANDROID_BUILD_TOOLS_VERSION" \
75 | && sdkmanager --install "cmdline-tools;latest"
76 | # create emulator android
77 | RUN sdkmanager "system-images;android-${ANDROID_PLATFORM_VERSION};google_apis;x86_64" \
78 | && avdmanager create avd -n Android${ANDROID_PLATFORM_VERSION} -k "system-images;android-${ANDROID_PLATFORM_VERSION};google_apis;x86_64"
79 |
80 |
81 | #
82 | # Flutter SDK
83 | RUN curl -C - --output flutter.tar.xz https://storage.googleapis.com/flutter_infra_release/releases/${FLUTTER_CHANNEL}/linux/flutter_linux_${FLUTTER_VERSION}-${FLUTTER_CHANNEL}.tar.xz \
84 | && tar -xf flutter.tar.xz -C ~ \
85 | && rm flutter.tar.xz \
86 | && flutter config --android-sdk "${ANDROID_SDK_ROOT}" \
87 | && yes | flutter doctor --android-licenses \
88 | && flutter config --no-analytics \
89 | && flutter update-packages
--------------------------------------------------------------------------------