diff --git a/.env.example b/.env.example index b9ee1bf..b6d758a 100644 --- a/.env.example +++ b/.env.example @@ -1,2 +1,2 @@ -BASE_URL_DEV = -BASE_URL_PROD = \ No newline at end of file +BASE_URL_DEV = +BASE_URL_PROD = "" \ No newline at end of file diff --git a/.github/workflows/config.yml b/.github/workflows/config.yml index 7a6aa06..8d0969d 100644 --- a/.github/workflows/config.yml +++ b/.github/workflows/config.yml @@ -21,7 +21,7 @@ jobs: - uses: subosito/flutter-action@v1 with: channel: "stable" - flutter-version: '3.0.5' + flutter-version: '3.10.5' - run: | flutter doctor flutter pub get diff --git a/.github/workflows/firebase-hosting-production-pull-request.yml b/.github/workflows/firebase-hosting-production-pull-request.yml deleted file mode 100644 index aebf27f..0000000 --- a/.github/workflows/firebase-hosting-production-pull-request.yml +++ /dev/null @@ -1,26 +0,0 @@ -# This file was auto-generated by the Firebase CLI -# https://github.com/firebase/firebase-tools - -name: Deploy to Firebase Hosting on PR -'on': - pull_request: - branches: - - main - -jobs: - build_and_preview: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - run: >- - echo "${{ secrets.ENV }}" | base64 --decode > ${{ github.workspace }}/.env && - sudo snap install flutter --classic && flutter - config --enable-web && flutter pub get && flutter pub run build_runner build --delete-conflicting-outputs && - flutter build web -t lib/main_production.dart - - uses: FirebaseExtended/action-hosting-deploy@v0 - with: - repoToken: '${{ secrets.GITHUB_TOKEN }}' - firebaseServiceAccount: '${{ secrets.FIREBASE_SERVICE_ACCOUNT_ULAS_KELAS }}' - projectId: ulas-kelas - env: - FIREBASE_CLI_PREVIEWS: hostingchannels diff --git a/.github/workflows/firebase-hosting-pull-request.yml b/.github/workflows/firebase-hosting-pull-request.yml deleted file mode 100644 index acba522..0000000 --- a/.github/workflows/firebase-hosting-pull-request.yml +++ /dev/null @@ -1,27 +0,0 @@ -# This file was auto-generated by the Firebase CLI -# https://github.com/firebase/firebase-tools - -name: Deploy to Firebase Hosting on PR -'on': - pull_request: - branches: - - development - -jobs: - build_and_preview: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - run: >- - echo "${{ secrets.ENV }}" | base64 --decode > ${{ github.workspace }}/.env && - sudo snap install flutter --classic && - flutter config --enable-web && flutter pub get && - flutter pub run build_runner build --delete-conflicting-outputs && - flutter build web -t lib/main_development.dart - - uses: FirebaseExtended/action-hosting-deploy@v0 - with: - repoToken: '${{ secrets.GITHUB_TOKEN }}' - firebaseServiceAccount: '${{ secrets.FIREBASE_SERVICE_ACCOUNT_ULAS_KELAS }}' - projectId: ulas-kelas - env: - FIREBASE_CLI_PREVIEWS: hostingchannels diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8859de9..bb7d712 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -8,6 +8,10 @@ This document briefly describes some guidance on how you can contribute to this 1. **[lib/main_development.dart](lib/main_development.dart)**: The entry of Project. +## PR + +Please PR on the development branch first :smile: + While creating PR, below materials could be helpful: * [Effective Dart](https://www.dartlang.org/guides/language/effective-dart) diff --git a/README.md b/README.md index 8241a7a..7a35544 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # 👨‍💻 Ulas Kelas -[![Generic badge](https://img.shields.io/badge/Flutter-v3.0.5-blue)](https://flutter.dev/docs) -[![Generic badge](https://img.shields.io/badge/Dart-v2.13.4-blue)](https://dart.dev/guides) +[![Generic badge](https://img.shields.io/badge/Flutter-v3.10.5-blue)](https://flutter.dev/docs) +[![Generic badge](https://img.shields.io/badge/Dart-v3.0.6-blue)](https://dart.dev/guides) [![test](https://github.com/RistekCSUI/ulaskelas-frontend/actions/workflows/config.yml/badge.svg)](https://github.com/RistekCSUI/ulaskelas-frontend/actions/workflows/config.yml) [![Deploy Web](https://github.com/RistekCSUI/ulaskelas-frontend/actions/workflows/firebase-hosting-merge.yml/badge.svg)](https://github.com/RistekCSUI/ulaskelas-frontend/actions/workflows/firebase-hosting-merge.yml) [![codecov](https://codecov.io/gh/RistekCSUI/ulaskelas-frontend/branch/main/graph/badge.svg?token=SHFALBJG9U)](https://codecov.io/gh/RistekCSUI/ulaskelas-frontend) @@ -12,38 +12,34 @@ Ulas Kelas app ## ⚡️ Getting Started -### 🚚 How to run, drive, and build Apk +### 🚚 How to run -Example how to run release development app +Make sure you have [Backend](https://github.com/ristekoss/ulaskelas-backend) running on your local's + +Update .env.example with your local's url, for example: ``` -flutter clean -flutter pub get -flutter run -t lib/main_development.dart --release --flavor development +BASE_URL_DEV = localhost:3000 +BASE_URL_PROD = "" ``` -Example how to build release development app +Add key.properties to /android ``` -flutter clean -flutter pub get -flutter build apk -t lib/main_development.dart --release --no-shrink --flavor development --split-per-abi +storePassword= +storePasswordDevelopment= +keyPassword= +keyPasswordDevelopment= +keyAlias= +keyAliasDevelopment= +storeFile= +storeFileDevelopment= ``` -Example how to build bundle release production app +Example how to run development app ``` flutter clean flutter pub get -flutter build appbundle -t lib/main_production.dart --release --no-shrink --flavor production -``` - -Example how to run flutter web app -``` -flutter run -t lib/main_development.dart -d chrome -``` - -Example how to drive automation test on development environment -note that automation test doesn't support release mode -``` -flutter drive -t test_driver/app.dart --flavor development +dart run build_runner build --delete-conflicting-outputs +flutter run -t lib/main_development.dart --flavor development ``` ### ⚙️ Supported Flavor @@ -112,7 +108,7 @@ examples: feat: Form Login ci: refactor analysis job -before push +### before push 1. flutter analyze 2. flutter test diff --git a/analysis_options.yaml b/analysis_options.yaml index 6f5c2e5..09e0ea0 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -1,4 +1,4 @@ -include: package:very_good_analysis/analysis_options.2.4.0.yaml +include: package:very_good_analysis/analysis_options.5.0.0.yaml analyzer: # We should disable linter for generated code @@ -9,13 +9,13 @@ analyzer: - lib/**/*.freezed.dart - test/**/*.mocks.dart - strong-mode: - implicit-casts: true - implicit-dynamic: true - errors: # Allow having TODOs in the code. todo: ignore + language: + strict-casts: false + strict-inference: false + strict-raw-types: false # LINTER Preferences # diff --git a/android/app/build.gradle b/android/app/build.gradle index 929c27c..69f8d85 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -34,7 +34,7 @@ if (keystorePropertiesFile.exists()) { } android { - compileSdkVersion 31 + compileSdkVersion 33 sourceSets { main.java.srcDirs += 'src/main/kotlin' diff --git a/android/build.gradle b/android/build.gradle index f181675..a6a3803 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,13 +1,13 @@ buildscript { - ext.kotlin_version = '1.5.10' + ext.kotlin_version = '1.8.20' repositories { google() jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:4.1.0' - classpath 'com.google.gms:google-services:4.3.10' + classpath 'com.android.tools.build:gradle:7.3.0' + classpath 'com.google.gms:google-services:4.3.14' classpath 'com.google.firebase:firebase-crashlytics-gradle:2.7.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } @@ -26,6 +26,6 @@ subprojects { project.evaluationDependsOn(':app') } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index bc6a58a..6b66533 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip diff --git a/lib/app.dart b/lib/app.dart index 7efebd0..72d50d4 100644 --- a/lib/app.dart +++ b/lib/app.dart @@ -1,17 +1,16 @@ // Created by Muhamad Fauzi Ridwan on 23/08/21. import 'package:firebase_analytics/firebase_analytics.dart'; -import 'package:firebase_analytics/observer.dart'; import 'package:flutter/material.dart'; import 'package:states_rebuilder/states_rebuilder.dart'; import 'package:ulaskelas/app_wrapper.dart'; import 'package:ulaskelas/core/bases/states/_states.dart'; import 'package:ulaskelas/core/constants/_constants.dart'; -FirebaseAnalytics analytics = FirebaseAnalytics(); +FirebaseAnalytics analytics = FirebaseAnalytics.instance; class App extends StatelessWidget { - const App({Key? key}) : super(key: key); + const App({super.key}); @override Widget build(BuildContext context) { diff --git a/lib/app_wrapper.dart b/lib/app_wrapper.dart index 9b762ec..9a1f9f4 100644 --- a/lib/app_wrapper.dart +++ b/lib/app_wrapper.dart @@ -15,7 +15,7 @@ import 'package:ulaskelas/services/versioning/check_version.dart'; import 'core/environment/_environment.dart'; class AppWrapper extends StatefulWidget { - const AppWrapper({Key? key}) : super(key: key); + const AppWrapper({super.key}); @override _AppWrapperState createState() => _AppWrapperState(); diff --git a/lib/authentication_page.dart b/lib/authentication_page.dart index c0507c1..36d49e7 100644 --- a/lib/authentication_page.dart +++ b/lib/authentication_page.dart @@ -10,7 +10,7 @@ import 'core/constants/_constants.dart'; import 'core/theme/_theme.dart'; class AuthenticationPage extends StatelessWidget { - const AuthenticationPage({Key? key}) : super(key: key); + const AuthenticationPage({super.key}); @override Widget build(BuildContext context) { diff --git a/lib/core/bases/states/auth_state.dart b/lib/core/bases/states/auth_state.dart index 6b57b06..623b084 100644 --- a/lib/core/bases/states/auth_state.dart +++ b/lib/core/bases/states/auth_state.dart @@ -91,7 +91,7 @@ class AuthState { path: '/static.html', ); - final url = '${Endpoints.sso}/?redirect_url=${redirectUri.toString()}'; + final url = '${Endpoints.sso}/?redirect_url=$redirectUri'; Logger().w(Uri.parse(url).query); Logger().w(redirectUri.toString()); diff --git a/lib/core/bases/states/global_state.dart b/lib/core/bases/states/global_state.dart index c51ddcb..4dda723 100644 --- a/lib/core/bases/states/global_state.dart +++ b/lib/core/bases/states/global_state.dart @@ -2,12 +2,12 @@ part of '_states.dart'; /// Top level injection final searchCourseRM = RM.inject( - () => SearchCourseState(), + SearchCourseState.new, autoDisposeWhenNotUsed: false, ); final filterRM = RM.inject( - () => FilterState(), + FilterState.new, autoDisposeWhenNotUsed: false, ); @@ -17,66 +17,66 @@ final filterRM = RM.inject( // ); final reviewFormRM = RM.inject( - () => ReviewCourseFormState(), + ReviewCourseFormState.new, autoDisposeWhenNotUsed: false, ); final searchTagRM = RM.inject( - () => SearchTagState(), + SearchTagState.new, ); final bookmarkRM = RM.inject( - () => BookmarkState(), + BookmarkState.new, autoDisposeWhenNotUsed: false, ); final authRM = RM.inject( - () => AuthState(), + AuthState.new, autoDisposeWhenNotUsed: false, ); final progressWebView = RM.inject( - () => ProgressWebViewState(), + ProgressWebViewState.new, ); final currentTermCourseRM = RM.inject( - () => CurrentTermCourseState(), + CurrentTermCourseState.new, autoDisposeWhenNotUsed: false, ); final profileRM = RM.inject( - () => ProfileState(), + ProfileState.new, autoDisposeWhenNotUsed: false, ); final reviewCourseRM = RM.inject( - () => ReviewCourseState(), + ReviewCourseState.new, autoDisposeWhenNotUsed: false, ); final reviewHistoryRM = RM.inject( - () => ReviewHistoryState(), + ReviewHistoryState.new, autoDisposeWhenNotUsed: false, ); final courseDetailRM = RM.inject( - () => CourseDetailState(), + CourseDetailState.new, ); final leaderboardRM = RM.inject( - () => LeaderboardState(), + LeaderboardState.new, ); final calculatorRM = RM.inject( - () => CalculatorState(), + CalculatorState.new, ); final componentRM = RM.inject( - () => ComponentState(), + ComponentState.new, ); final componentFormRM = RM.inject( - () => ComponentFormState(), + ComponentFormState.new, autoDisposeWhenNotUsed: false, ); @@ -91,25 +91,25 @@ class GlobalState { ), ), ), - Inject(() => NavigationServiceState()), - Inject(() => FilterState()), - Inject(() => SearchCourseState()), + Inject(NavigationServiceState.new), + Inject(FilterState.new), + Inject(SearchCourseState.new), // Inject(() => ReviewState()), - Inject(() => SearchTagState()), - Inject(() => BookmarkState()), - Inject(() => CalculatorState()), + Inject(SearchTagState.new), + Inject(BookmarkState.new), + Inject(CalculatorState.new), ]; } static List injectData = [ - Inject(() => ThemeState()), - Inject(() => NavigationServiceState()), - Inject(() => FilterState()), - Inject(() => SearchCourseState()), + Inject(ThemeState.new), + Inject(NavigationServiceState.new), + Inject(FilterState.new), + Inject(SearchCourseState.new), // Inject(() => ReviewState()), - Inject(() => SearchTagState()), - Inject(() => BookmarkState()), - Inject(() => CalculatorState()), + Inject(SearchTagState.new), + Inject(BookmarkState.new), + Inject(CalculatorState.new), ]; static ReactiveModel theme() { diff --git a/lib/core/bases/states/state_initializer.dart b/lib/core/bases/states/state_initializer.dart index 6fee015..95d4901 100644 --- a/lib/core/bases/states/state_initializer.dart +++ b/lib/core/bases/states/state_initializer.dart @@ -45,7 +45,7 @@ class StateInitializer { } } -//todo(fauzi) recheck this class +// TODO(fauzi): recheck this class // class SlightInitializer { // ReactiveModel rm; // String ck; diff --git a/lib/core/bases/widgets/confirmation_modal_dialog.dart b/lib/core/bases/widgets/confirmation_modal_dialog.dart index 2c75d7f..a3aba6c 100644 --- a/lib/core/bases/widgets/confirmation_modal_dialog.dart +++ b/lib/core/bases/widgets/confirmation_modal_dialog.dart @@ -56,7 +56,7 @@ class ConfirmationModalDialog extends DialogBox { padding: const EdgeInsets.all(8), child: Text( noLabel, - style: theme.textTheme.button?.copyWith( + style: theme.textTheme.labelLarge?.copyWith( color: BaseColors.mineShaft, ), textAlign: TextAlign.center, diff --git a/lib/core/bases/widgets/empty_view.dart b/lib/core/bases/widgets/empty_view.dart index c7b2aa3..444d8a0 100644 --- a/lib/core/bases/widgets/empty_view.dart +++ b/lib/core/bases/widgets/empty_view.dart @@ -5,11 +5,9 @@ import 'package:ulaskelas/core/theme/_theme.dart'; class EmptyView extends StatelessWidget { const EmptyView({ - Key? key, - required this.title, - required this.description, + required this.title, required this.description, super.key, this.padTop, - }) : super(key: key); + }); final String title; final String description; @@ -18,13 +16,12 @@ class EmptyView extends StatelessWidget { @override Widget build(BuildContext context) { final size = MediaQuery.of(context).size; - final _padTop = padTop ?? size.height * .1; return Padding( padding: const EdgeInsets.all(20), child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ - HeightSpace(_padTop), + HeightSpace(padTop ?? size.height * .1), Image.asset( Ilustration.notfound, width: size.width * .6, @@ -39,7 +36,7 @@ class EmptyView extends StatelessWidget { const HeightSpace(10), Text( description, - style: Theme.of(context).textTheme.caption, + style: Theme.of(context).textTheme.bodySmall, textAlign: TextAlign.center, ), const HeightSpace(40), diff --git a/lib/core/bases/widgets/svg_image.dart b/lib/core/bases/widgets/svg_image.dart index f32eaf9..ad125f1 100644 --- a/lib/core/bases/widgets/svg_image.dart +++ b/lib/core/bases/widgets/svg_image.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; - +// ignore_for_file: deprecated_member_use // TODO(Any): next update class SVGImage extends SvgPicture { diff --git a/lib/core/client/api_call.dart b/lib/core/client/api_call.dart index 2c2e03f..3bad4c8 100644 --- a/lib/core/client/api_call.dart +++ b/lib/core/client/api_call.dart @@ -7,8 +7,8 @@ Future> apiCall(Future t) async { final futureCall = await t; return Right(futureCall); } on DioError catch (e) { - Logger().wtf(e.error.runtimeType); - Logger().wtf(e.error.toString()); + Logger().f(e.error.runtimeType); + Logger().f(e.error.toString()); if (e.error is ArgumentError) { final error = e.error as ArgumentError; return Left(GeneralFailure(message: error.message)); diff --git a/lib/core/client/dio.dart b/lib/core/client/dio.dart index b4d9b02..018a18b 100644 --- a/lib/core/client/dio.dart +++ b/lib/core/client/dio.dart @@ -7,11 +7,11 @@ Future getIt( if (kDebugMode) { Logger().i({'url': url, 'headers': '${Pref.getHeaders()}'}); } - final _getHeaders = headers ?? Pref.getHeaders(); + final getHeaders = headers ?? Pref.getHeaders(); final resp = await Dio().get( url, options: Options( - headers: _getHeaders, + headers: getHeaders, receiveTimeout: 5000, sendTimeout: 6000, ), @@ -35,12 +35,12 @@ Future postIt( 'model': '$model', }); } - final _getHeaders = headers ?? Pref.getHeaders(); + final getHeaders = headers ?? Pref.getHeaders(); final resp = await Dio().post( url, data: json.encode(model), options: Options( - headers: _getHeaders, + headers: getHeaders, receiveTimeout: 5000, sendTimeout: 6000, ), @@ -64,12 +64,12 @@ Future putIt( 'model': '$model', }); } - final _getHeaders = headers ?? Pref.getHeaders(); + final getHeaders = headers ?? Pref.getHeaders(); final resp = await Dio().put( url, data: model, options: Options( - headers: _getHeaders, + headers: getHeaders, receiveTimeout: 5000, sendTimeout: 6000, ), @@ -93,12 +93,12 @@ Future deleteIt( 'model': '$model', }); } - final _getHeaders = headers ?? Pref.getHeaders(); + final getHeaders = headers ?? Pref.getHeaders(); final resp = await Dio().delete( url, data: model, options: Options( - headers: _getHeaders, + headers: getHeaders, receiveTimeout: 5000, sendTimeout: 6000, ), diff --git a/lib/core/constants/error_codes_const.dart b/lib/core/constants/error_codes_const.dart index 5cd23f3..b6f8f0c 100644 --- a/lib/core/constants/error_codes_const.dart +++ b/lib/core/constants/error_codes_const.dart @@ -1,4 +1,4 @@ // Created by Muhamad Fauzi Ridwan on 11/08/21. -//todo list of errorCode +// TODO(any): list of errorCode class ErrorCode {} diff --git a/lib/core/constants/notification_type_const.dart b/lib/core/constants/notification_type_const.dart index 3671d78..264bac2 100644 --- a/lib/core/constants/notification_type_const.dart +++ b/lib/core/constants/notification_type_const.dart @@ -2,5 +2,5 @@ part of '_constants.dart'; -//todo notification type +// TODO(any): notification type class NotificationType {} diff --git a/lib/core/constants/route_name_const.dart b/lib/core/constants/route_name_const.dart index 66bd2f3..cb18d2c 100644 --- a/lib/core/constants/route_name_const.dart +++ b/lib/core/constants/route_name_const.dart @@ -2,7 +2,7 @@ part of '_constants.dart'; -//todo routeName +// TODO(any): routeName class RouteName { static const String mainPage = 'main'; static const String onboardingPage = 'onboarding'; diff --git a/lib/core/environment/config.dart b/lib/core/environment/config.dart index b9adace..0f82190 100644 --- a/lib/core/environment/config.dart +++ b/lib/core/environment/config.dart @@ -20,7 +20,7 @@ class Config { appName = flavor.value; assetsPath = baseConfig.assetAbsolutePath; packageName = 'com.ristek.ulaskelas'; - //todo grouping + // TODO(any): grouping imagesPath = '${assetsPath!}/images'; iconsPath = '${assetsPath!}/icons'; @@ -74,8 +74,7 @@ class Config { class BaseConfig { const BaseConfig({ - this.assetAbsolutePath = Constants.assetPath, - required this.endpoints, + required this.endpoints, this.assetAbsolutePath = Constants.assetPath, }); final String assetAbsolutePath; final BaseEndpoints endpoints; diff --git a/lib/core/environment/secrets.dart b/lib/core/environment/secrets.dart index 5ec8b61..1319010 100644 --- a/lib/core/environment/secrets.dart +++ b/lib/core/environment/secrets.dart @@ -1,9 +1,11 @@ -import 'package:envify/envify.dart'; +import 'package:envied/envied.dart'; part 'secrets.g.dart'; -@Envify(name: 'Secret') +@Envied(name: 'Secret', path: '.env.example') abstract class Secret { - static const baseUrlDev = _Secret.baseUrlDev; - static const baseUrlProd = _Secret.baseUrlProd; + @EnviedField(varName: 'BASE_URL_DEV') + static const String baseUrlDev = _Secret.baseUrlDev; + @EnviedField(varName: 'BASE_URL_PROD') + static const String baseUrlProd = _Secret.baseUrlProd; } diff --git a/lib/core/error/failures.dart b/lib/core/error/failures.dart index 3984aee..bea208c 100644 --- a/lib/core/error/failures.dart +++ b/lib/core/error/failures.dart @@ -21,22 +21,16 @@ class DioFailure implements Exception { switch (dioError.type) { case DioErrorType.cancel: message = 'Request to API server was cancelled'; - break; case DioErrorType.connectTimeout: message = 'Connection timeout with API server'; - break; case DioErrorType.other: message = 'Connection to API server failed due to internet connection'; - break; case DioErrorType.receiveTimeout: message = 'Receive timeout in connection with API server'; - break; case DioErrorType.sendTimeout: message = 'Send timeout in connection with API server'; - break; case DioErrorType.response: message = _handleResponseError(dioError.response); - break; } } @@ -67,69 +61,59 @@ class DioFailure implements Exception { class NetworkFailure extends Failure { NetworkFailure({ - String? code, - String? message, + super.code, + super.message, }) : super( - code: code, - message: message, title: 'Network Failure', ); } class NotFoundFailure extends Failure { NotFoundFailure({ - String? code, - String? message, + super.code, + super.message, }) : super( - code: code, - message: message, title: 'Not Found Failure', ); } class BadRequestFailure extends Failure { BadRequestFailure({ - String? code, - String? message, + super.code, + super.message, }) : super( - code: code, - message: message, title: 'Bad Request Failure', ); } class GeneralFailure extends Failure { GeneralFailure({ - String? message, + super.message, }) : super( - message: message, title: 'General Failure', ); } class TimeoutFailure extends Failure { TimeoutFailure({ - String? message, + super.message, }) : super( - message: message, title: 'Timeout Failure', ); } class ArgumentFailure extends Failure { ArgumentFailure({ - String? message, + super.message, }) : super( - message: message, title: 'Argument Failure', ); } class UnAuthorizeFailure extends Failure { UnAuthorizeFailure({ - String? message, + super.message, }) : super( - message: message, title: 'UnAuthorize Failure', ); } diff --git a/lib/core/theme/ulaskelas_theme.dart b/lib/core/theme/ulaskelas_theme.dart index 75f0ed4..b7daecf 100644 --- a/lib/core/theme/ulaskelas_theme.dart +++ b/lib/core/theme/ulaskelas_theme.dart @@ -14,8 +14,8 @@ class UlaskelasThemeImpl implements UlaskelasTheme { secondaryHeaderColor: BaseColors.goldenrod, shadowColor: BaseColors.gray5, textTheme: TextTheme( - caption: FontTheme.poppins12w400black(), - button: FontTheme.poppins14w700black().copyWith( + bodySmall: FontTheme.poppins12w400black(), + labelLarge: FontTheme.poppins14w700black().copyWith( fontWeight: FontWeight.w600, ), ), diff --git a/lib/features/home/presentation/pages/home_daftar_matkul_page.dart b/lib/features/home/presentation/pages/home_daftar_matkul_page.dart index 4a1ede9..37a8e9a 100644 --- a/lib/features/home/presentation/pages/home_daftar_matkul_page.dart +++ b/lib/features/home/presentation/pages/home_daftar_matkul_page.dart @@ -2,8 +2,8 @@ part of '_pages.dart'; class HomeCourseListPage extends StatefulWidget { const HomeCourseListPage({ - Key? key, - }) : super(key: key); + super.key, + }); @override _HomeCourseListPageState createState() => _HomeCourseListPageState(); diff --git a/lib/features/home/presentation/pages/home_daftar_ulasan_page.dart b/lib/features/home/presentation/pages/home_daftar_ulasan_page.dart index bce6b41..0edbbcd 100644 --- a/lib/features/home/presentation/pages/home_daftar_ulasan_page.dart +++ b/lib/features/home/presentation/pages/home_daftar_ulasan_page.dart @@ -2,8 +2,8 @@ part of '_pages.dart'; class HomeDaftarUlasanPage extends StatefulWidget { const HomeDaftarUlasanPage({ - Key? key, - }) : super(key: key); + super.key, + }); @override _HomeDaftarUlasanPageState createState() => _HomeDaftarUlasanPageState(); @@ -38,8 +38,8 @@ class _HomeDaftarUlasanPageState extends BaseStateful { onRefresh: retrieveData, child: OnBuilder.all( listenTo: reviewHistoryRM, - onIdle: () => WaitingView(), - onWaiting: () => WaitingView(), + onIdle: WaitingView.new, + onWaiting: WaitingView.new, onError: (dynamic error, refresh) => Text(error.toString()), onData: (data) { if (data.reviewHistories.isEmpty) { diff --git a/lib/features/home/presentation/pages/home_page.dart b/lib/features/home/presentation/pages/home_page.dart index 265c8d0..92f13a6 100644 --- a/lib/features/home/presentation/pages/home_page.dart +++ b/lib/features/home/presentation/pages/home_page.dart @@ -5,8 +5,8 @@ part of '_pages.dart'; class HomePage extends StatefulWidget { const HomePage({ required this.onSeeAllCourse, - Key? key, - }) : super(key: key); + super.key, + }); final VoidCallback onSeeAllCourse; diff --git a/lib/features/home/presentation/states/current_semester_matkul_state.dart b/lib/features/home/presentation/states/current_semester_matkul_state.dart index 25457b3..19e6075 100644 --- a/lib/features/home/presentation/states/current_semester_matkul_state.dart +++ b/lib/features/home/presentation/states/current_semester_matkul_state.dart @@ -4,11 +4,11 @@ part of '_states.dart'; class CurrentTermCourseState { CurrentTermCourseState() { - final _remoteDataSource = CourseRemoteDataSourceImpl(); - final _localDataSource = CourseLocalDataSourceImpl(); + final remoteDataSource = CourseRemoteDataSourceImpl(); + final localDataSource = CourseLocalDataSourceImpl(); _repo = CourseRepositoryImpl( - _remoteDataSource, - _localDataSource, + remoteDataSource, + localDataSource, ); } diff --git a/lib/features/home/presentation/states/review_history_state.dart b/lib/features/home/presentation/states/review_history_state.dart index af1ef3d..eb2c63c 100644 --- a/lib/features/home/presentation/states/review_history_state.dart +++ b/lib/features/home/presentation/states/review_history_state.dart @@ -4,11 +4,11 @@ part of '_states.dart'; class ReviewHistoryState { ReviewHistoryState() { - final _remoteDataSource = ReviewRemoteDataSourceImpl(); - final _localDataSource = ReviewLocalDataSourceImpl(); + final remoteDataSource = ReviewRemoteDataSourceImpl(); + final localDataSource = ReviewLocalDataSourceImpl(); _repo = ReviewRepositoryImpl( - _remoteDataSource, - _localDataSource, + remoteDataSource, + localDataSource, ); } diff --git a/lib/features/home/presentation/widgets/card_matkul_home.dart b/lib/features/home/presentation/widgets/card_matkul_home.dart index a9a1da2..90ff109 100644 --- a/lib/features/home/presentation/widgets/card_matkul_home.dart +++ b/lib/features/home/presentation/widgets/card_matkul_home.dart @@ -2,10 +2,9 @@ part of '_widgets.dart'; class CardMatkulHome extends StatelessWidget { const CardMatkulHome({ - Key? key, - required this.model, + required this.model, super.key, this.onTap, - }) : super(key: key); + }); final MatkulModelHome model; final VoidCallback? onTap; diff --git a/lib/features/home/presentation/widgets/card_matkul_review.dart b/lib/features/home/presentation/widgets/card_matkul_review.dart index 6104251..1621114 100644 --- a/lib/features/home/presentation/widgets/card_matkul_review.dart +++ b/lib/features/home/presentation/widgets/card_matkul_review.dart @@ -2,10 +2,9 @@ part of '_widgets.dart'; class CardMatkulReview extends StatelessWidget { const CardMatkulReview({ - Key? key, - required this.review, + required this.review, super.key, this.onTap, - }) : super(key: key); + }); final ReviewModel review; final VoidCallback? onTap; diff --git a/lib/features/kalkulator/presentation/pages/edit_komponen_page.dart b/lib/features/kalkulator/presentation/pages/edit_komponen_page.dart index f7ffcb0..f1f41a8 100644 --- a/lib/features/kalkulator/presentation/pages/edit_komponen_page.dart +++ b/lib/features/kalkulator/presentation/pages/edit_komponen_page.dart @@ -2,7 +2,6 @@ part of '_pages.dart'; class EditComponentPage extends StatefulWidget { const EditComponentPage({ - Key? key, required this.id, required this.calculatorId, required this.courseName, @@ -11,7 +10,8 @@ class EditComponentPage extends StatefulWidget { required this.componentName, required this.componentScore, required this.componentWeight, - }) : super(key: key); + super.key, + }); final int id; final int calculatorId; @@ -81,12 +81,12 @@ class _EditComponentPageState extends BaseStateful { ), ); nav.replaceToComponentPage( - calculatorId: widget.calculatorId, - courseName: widget.courseName, - totalScore: widget.totalScore - - (widget.componentScore * widget.componentWeight / 100), - totalPercentage: - widget.totalPercentage - widget.componentWeight, + calculatorId: widget.calculatorId, + courseName: widget.courseName, + totalScore: widget.totalScore - + (widget.componentScore * widget.componentWeight / 100), + totalPercentage: + widget.totalPercentage - widget.componentWeight, ); }, child: Text( diff --git a/lib/features/kalkulator/presentation/pages/kalkulator_page.dart b/lib/features/kalkulator/presentation/pages/kalkulator_page.dart index 49bfacb..32c3809 100644 --- a/lib/features/kalkulator/presentation/pages/kalkulator_page.dart +++ b/lib/features/kalkulator/presentation/pages/kalkulator_page.dart @@ -2,8 +2,8 @@ part of '_pages.dart'; class CalculatorPage extends StatefulWidget { const CalculatorPage({ - Key? key, - }) : super(key: key); + super.key, + }); @override _CalculatorPageState createState() => _CalculatorPageState(); @@ -45,8 +45,8 @@ class _CalculatorPageState extends BaseStateful { onRefresh: retrieveData, child: OnBuilder.all( listenTo: calculatorRM, - onIdle: () => WaitingView(), - onWaiting: () => WaitingView(), + onIdle: WaitingView.new, + onWaiting: WaitingView.new, onError: (dynamic error, refresh) => const Text('error'), onData: (data) { final calculators = data.calculators; @@ -74,7 +74,7 @@ class _CalculatorPageState extends BaseStateful { Text( ''' Kamu Belum memiliki kalkulator nilai tersimpan. Silakan tambahkan terlebih dahulu.''', - style: Theme.of(context).textTheme.caption, + style: Theme.of(context).textTheme.bodySmall, textAlign: TextAlign.center, ), const HeightSpace(30), diff --git a/lib/features/kalkulator/presentation/pages/komponen_form_page.dart b/lib/features/kalkulator/presentation/pages/komponen_form_page.dart index 883ae20..f6979ba 100644 --- a/lib/features/kalkulator/presentation/pages/komponen_form_page.dart +++ b/lib/features/kalkulator/presentation/pages/komponen_form_page.dart @@ -2,12 +2,12 @@ part of '_pages.dart'; class ComponentFormPage extends StatefulWidget { const ComponentFormPage({ - Key? key, required this.calculatorId, required this.courseName, required this.totalScore, required this.totalPercentage, - }) : super(key: key); + super.key, + }); final int calculatorId; final String courseName; @@ -71,9 +71,9 @@ class _ComponentFormPageState extends BaseStateful { } double _temporaryUpdateScore( - double newScore, - double newWeight, - ) { + double newScore, + double newWeight, + ) { return widget.totalScore + (newScore * newWeight / 100); } @@ -103,7 +103,8 @@ class _ComponentFormPageState extends BaseStateful { componentFormRM.state.formData.weight!, ), totalPercentage: _temporaryUpdateWeight( - componentFormRM.state.formData.weight!,), + componentFormRM.state.formData.weight!, + ), ); componentFormRM.state.cleanForm(); return; diff --git a/lib/features/kalkulator/presentation/pages/komponen_kalkulator_page.dart b/lib/features/kalkulator/presentation/pages/komponen_kalkulator_page.dart index 02fc697..ac8777f 100644 --- a/lib/features/kalkulator/presentation/pages/komponen_kalkulator_page.dart +++ b/lib/features/kalkulator/presentation/pages/komponen_kalkulator_page.dart @@ -2,12 +2,12 @@ part of '_pages.dart'; class CalculatorComponentPage extends StatefulWidget { const CalculatorComponentPage({ - Key? key, required this.calculatorId, required this.courseName, required this.totalScore, required this.totalPercentage, - }) : super(key: key); + super.key, + }); final int calculatorId; final String courseName; diff --git a/lib/features/kalkulator/presentation/pages/search_course_calculator.dart b/lib/features/kalkulator/presentation/pages/search_course_calculator.dart index 33743b0..5df0c04 100644 --- a/lib/features/kalkulator/presentation/pages/search_course_calculator.dart +++ b/lib/features/kalkulator/presentation/pages/search_course_calculator.dart @@ -2,8 +2,8 @@ part of '_pages.dart'; class SearchCourseCalculator extends StatefulWidget { const SearchCourseCalculator({ - Key? key, - }) : super(key: key); + super.key, + }); @override _SearchCourseCalculatorState createState() => _SearchCourseCalculatorState(); diff --git a/lib/features/kalkulator/presentation/states/calculator_state.dart b/lib/features/kalkulator/presentation/states/calculator_state.dart index 28b120b..a043b23 100644 --- a/lib/features/kalkulator/presentation/states/calculator_state.dart +++ b/lib/features/kalkulator/presentation/states/calculator_state.dart @@ -2,8 +2,8 @@ part of '_states.dart'; class CalculatorState { CalculatorState() { - final _remoteDataSource = CalculatorRemoteDataSourceImpl(); - _repo = CalculatorRepositoryImpl(_remoteDataSource); + final remoteDataSource = CalculatorRemoteDataSourceImpl(); + _repo = CalculatorRepositoryImpl(remoteDataSource); } late CalculatorRepository _repo; diff --git a/lib/features/kalkulator/presentation/states/component_form_state.dart b/lib/features/kalkulator/presentation/states/component_form_state.dart index 2979be0..b21397c 100644 --- a/lib/features/kalkulator/presentation/states/component_form_state.dart +++ b/lib/features/kalkulator/presentation/states/component_form_state.dart @@ -2,9 +2,9 @@ part of '_states.dart'; class ComponentFormState { ComponentFormState() { - final _remoteDataSource = ComponentRemoteDataSourceImpl(); + final remoteDataSource = ComponentRemoteDataSourceImpl(); _repo = ComponentRepositoryImpl( - _remoteDataSource, + remoteDataSource, ); } diff --git a/lib/features/kalkulator/presentation/states/component_state.dart b/lib/features/kalkulator/presentation/states/component_state.dart index 6c1e230..44b4fbe 100644 --- a/lib/features/kalkulator/presentation/states/component_state.dart +++ b/lib/features/kalkulator/presentation/states/component_state.dart @@ -2,8 +2,8 @@ part of '_states.dart'; class ComponentState{ ComponentState() { - final _remoteDataSource = ComponentRemoteDataSourceImpl(); - _repo = ComponentRepositoryImpl(_remoteDataSource); + final remoteDataSource = ComponentRemoteDataSourceImpl(); + _repo = ComponentRepositoryImpl(remoteDataSource); } late ComponentRepository _repo; diff --git a/lib/features/kalkulator/presentation/widgets/card_calculator.dart b/lib/features/kalkulator/presentation/widgets/card_calculator.dart index 597337d..422bf7d 100644 --- a/lib/features/kalkulator/presentation/widgets/card_calculator.dart +++ b/lib/features/kalkulator/presentation/widgets/card_calculator.dart @@ -2,10 +2,9 @@ part of '_widgets.dart'; class CardCalculator extends StatelessWidget { const CardCalculator({ - Key? key, - required this.model, + required this.model, super.key, this.onTap, - }) : super(key: key); + }); final CalculatorModel model; final VoidCallback? onTap; diff --git a/lib/features/kalkulator/presentation/widgets/card_component.dart b/lib/features/kalkulator/presentation/widgets/card_component.dart index 64f36e5..8634819 100644 --- a/lib/features/kalkulator/presentation/widgets/card_component.dart +++ b/lib/features/kalkulator/presentation/widgets/card_component.dart @@ -2,13 +2,13 @@ part of '_widgets.dart'; class CardCompononent extends StatelessWidget { const CardCompononent({ - Key? key, - this.onTap, required this.id, required this.name, required this.score, required this.weight, - }) : super(key: key); + super.key, + this.onTap, + }); final int id; final String name; @@ -47,13 +47,15 @@ class CardCompononent extends StatelessWidget { ), ), Expanded( - child: Text(score.toStringAsFixed(2), + child: Text( + score.toStringAsFixed(2), style: FontTheme.poppins12w400black(), textAlign: TextAlign.right, ), ), Expanded( - child: Text('${weight.toStringAsFixed(1)}%', + child: Text( + '${weight.toStringAsFixed(1)}%', style: FontTheme.poppins12w400black(), textAlign: TextAlign.right, ), diff --git a/lib/features/kalkulator/presentation/widgets/card_course_simplified.dart b/lib/features/kalkulator/presentation/widgets/card_course_simplified.dart index 5dcf731..e68b6fa 100644 --- a/lib/features/kalkulator/presentation/widgets/card_course_simplified.dart +++ b/lib/features/kalkulator/presentation/widgets/card_course_simplified.dart @@ -2,10 +2,9 @@ part of '_widgets.dart'; class CardCourseSimplified extends StatelessWidget { const CardCourseSimplified({ - Key? key, - required this.model, + required this.model, super.key, this.onTap, - }) : super(key: key); + }); final CourseModel model; final VoidCallback? onTap; diff --git a/lib/features/kalkulator/presentation/widgets/search_list_view_simplified.dart b/lib/features/kalkulator/presentation/widgets/search_list_view_simplified.dart index 756bf91..61477de 100644 --- a/lib/features/kalkulator/presentation/widgets/search_list_view_simplified.dart +++ b/lib/features/kalkulator/presentation/widgets/search_list_view_simplified.dart @@ -2,12 +2,12 @@ part of '_widgets.dart'; class SearchListViewSimplified extends StatelessWidget { const SearchListViewSimplified({ - Key? key, required this.refreshIndicatorKey, required this.scrollController, required this.onScroll, required this.onRefresh, - }) : super(key: key); + super.key, + }); final GlobalKey refreshIndicatorKey; final ScrollController scrollController; @@ -86,8 +86,9 @@ Mata kuliah yang kamu cari tidak ada di aplikasi. Silakan coba lagi dengan kata model: course, onTap: () { nav.pop(); - calculatorRM.setState((s) => - s.postCalculator(course.code!),); + calculatorRM.setState( + (s) => s.postCalculator(course.code!), + ); }, ); }, diff --git a/lib/features/kalkulator/presentation/widgets/simpan_button.dart b/lib/features/kalkulator/presentation/widgets/simpan_button.dart index 8cc7f78..20271e2 100644 --- a/lib/features/kalkulator/presentation/widgets/simpan_button.dart +++ b/lib/features/kalkulator/presentation/widgets/simpan_button.dart @@ -2,11 +2,9 @@ part of '_widgets.dart'; class SimpanButton extends StatelessWidget { const SimpanButton({ - Key? key, - required this.onTap, - required this.text, + required this.onTap, required this.text, super.key, this.isLoading = false, - }) : super(key: key); + }); final VoidCallback onTap; final String text; diff --git a/lib/features/leaderboard/presentation/pages/guideline_page.dart b/lib/features/leaderboard/presentation/pages/guideline_page.dart index fe03fc1..e015104 100644 --- a/lib/features/leaderboard/presentation/pages/guideline_page.dart +++ b/lib/features/leaderboard/presentation/pages/guideline_page.dart @@ -1,7 +1,7 @@ part of '_pages.dart'; class GuidelinePage extends StatelessWidget { - const GuidelinePage({Key? key}) : super(key: key); + const GuidelinePage({super.key}); @override Widget build(BuildContext context) { diff --git a/lib/features/leaderboard/presentation/pages/leaderboard_page.dart b/lib/features/leaderboard/presentation/pages/leaderboard_page.dart index 6424cc6..c578c40 100644 --- a/lib/features/leaderboard/presentation/pages/leaderboard_page.dart +++ b/lib/features/leaderboard/presentation/pages/leaderboard_page.dart @@ -1,7 +1,7 @@ part of '_pages.dart'; class LeaderboardPage extends StatefulWidget { - const LeaderboardPage({Key? key}) : super(key: key); + const LeaderboardPage({super.key}); @override _LeaderboardPageState createState() => _LeaderboardPageState(); diff --git a/lib/features/leaderboard/presentation/states/leaderboard_state.dart b/lib/features/leaderboard/presentation/states/leaderboard_state.dart index e455731..b77f39c 100644 --- a/lib/features/leaderboard/presentation/states/leaderboard_state.dart +++ b/lib/features/leaderboard/presentation/states/leaderboard_state.dart @@ -2,9 +2,9 @@ part of '_states.dart'; class LeaderboardState { LeaderboardState() { - final _remoteDataSource = LeaderboardRemoteDataSourceImpl(); + final remoteDataSource = LeaderboardRemoteDataSourceImpl(); _repo = LeaderboardRepositoryImpl( - _remoteDataSource, + remoteDataSource, ); } diff --git a/lib/features/leaderboard/presentation/widgets/leaderboard_card.dart b/lib/features/leaderboard/presentation/widgets/leaderboard_card.dart index ac9a1df..34acc71 100644 --- a/lib/features/leaderboard/presentation/widgets/leaderboard_card.dart +++ b/lib/features/leaderboard/presentation/widgets/leaderboard_card.dart @@ -2,10 +2,8 @@ part of '_widgets.dart'; class LeaderboardCard extends StatelessWidget { const LeaderboardCard({ - Key? key, - required this.rank, - required this.model, - }) : super(key: key); + required this.rank, required this.model, super.key, + }); final int rank; final LeaderboardModel model; diff --git a/lib/features/leaderboard/presentation/widgets/leaderboard_tag.dart b/lib/features/leaderboard/presentation/widgets/leaderboard_tag.dart index a4c3fcd..1cb5cbf 100644 --- a/lib/features/leaderboard/presentation/widgets/leaderboard_tag.dart +++ b/lib/features/leaderboard/presentation/widgets/leaderboard_tag.dart @@ -4,10 +4,10 @@ part of '_widgets.dart'; class TagLeaderboard extends StatelessWidget { /// Creates Tag Widget const TagLeaderboard({ - Key? key, + super.key, this.label = 'Kamu', this.rank, - }) : super(key: key); + }); /// Specify the label text final String label; diff --git a/lib/features/leaderboard/presentation/widgets/skeleton_card_leaderboard.dart b/lib/features/leaderboard/presentation/widgets/skeleton_card_leaderboard.dart index 0762a31..d033d27 100644 --- a/lib/features/leaderboard/presentation/widgets/skeleton_card_leaderboard.dart +++ b/lib/features/leaderboard/presentation/widgets/skeleton_card_leaderboard.dart @@ -1,7 +1,7 @@ part of '_widgets.dart'; class SkeletonCardLeaderboard extends StatelessWidget { - const SkeletonCardLeaderboard({Key? key}) : super(key: key); + const SkeletonCardLeaderboard({super.key}); @override Widget build(BuildContext context) { diff --git a/lib/features/matkul/bookmarks/presentation/pages/bookmarks_page.dart b/lib/features/matkul/bookmarks/presentation/pages/bookmarks_page.dart index 8b6c357..fd012b7 100644 --- a/lib/features/matkul/bookmarks/presentation/pages/bookmarks_page.dart +++ b/lib/features/matkul/bookmarks/presentation/pages/bookmarks_page.dart @@ -4,8 +4,8 @@ part of '_pages.dart'; class BookmarksPage extends StatefulWidget { const BookmarksPage({ - Key? key, - }) : super(key: key); + super.key, + }); @override _BookmarksPageState createState() => _BookmarksPageState(); @@ -44,8 +44,8 @@ class _BookmarksPageState extends BaseStateful { onRefresh: retrieveData, child: OnBuilder.all( listenTo: bookmarkRM, - onIdle: () => WaitingView(), - onWaiting: () => WaitingView(), + onIdle: WaitingView.new, + onWaiting: WaitingView.new, onError: (dynamic error, refresh) => const Text('error'), onData: (data) { final bookmarks = data.bookmarks; @@ -71,7 +71,7 @@ class _BookmarksPageState extends BaseStateful { Text( ''' Kamu Belum memiliki Mata kuliah tersimpan. Silakan tambahkan terlebih dahulu.''', - style: Theme.of(context).textTheme.caption, + style: Theme.of(context).textTheme.bodySmall, textAlign: TextAlign.center, ), const HeightSpace(40), diff --git a/lib/features/matkul/bookmarks/presentation/states/bookmark_state.dart b/lib/features/matkul/bookmarks/presentation/states/bookmark_state.dart index e0187b4..fed6de8 100644 --- a/lib/features/matkul/bookmarks/presentation/states/bookmark_state.dart +++ b/lib/features/matkul/bookmarks/presentation/states/bookmark_state.dart @@ -2,11 +2,11 @@ part of '_states.dart'; class BookmarkState { BookmarkState() { - final _remoteDataSource = BookmarkRemoteDataSourceImpl(); - final _localDataSource = BookmarkLocalDataSourceImpl(); + final remoteDataSource = BookmarkRemoteDataSourceImpl(); + final localDataSource = BookmarkLocalDataSourceImpl(); _repo = BookmarkRepositoryImpl( - _remoteDataSource, - _localDataSource, + remoteDataSource, + localDataSource, ); } diff --git a/lib/features/matkul/bookmarks/presentation/widgets/card_bookmark.dart b/lib/features/matkul/bookmarks/presentation/widgets/card_bookmark.dart index fa3b33d..58b4293 100644 --- a/lib/features/matkul/bookmarks/presentation/widgets/card_bookmark.dart +++ b/lib/features/matkul/bookmarks/presentation/widgets/card_bookmark.dart @@ -2,10 +2,9 @@ part of '_widgets.dart'; class CardBookmark extends StatelessWidget { const CardBookmark({ - Key? key, - required this.model, + required this.model, super.key, this.onTap, - }) : super(key: key); + }); final BookmarkModel model; final VoidCallback? onTap; diff --git a/lib/features/matkul/detail/presentation/pages/all_review_matkul_page.dart b/lib/features/matkul/detail/presentation/pages/all_review_matkul_page.dart index b177f2b..fae547a 100644 --- a/lib/features/matkul/detail/presentation/pages/all_review_matkul_page.dart +++ b/lib/features/matkul/detail/presentation/pages/all_review_matkul_page.dart @@ -2,10 +2,8 @@ part of '_pages.dart'; class AllReviewMatkulPage extends StatefulWidget { const AllReviewMatkulPage({ - Key? key, - required this.courseId, - required this.courseCode, - }) : super(key: key); + required this.courseId, required this.courseCode, super.key, + }); final int courseId; final String courseCode; @@ -102,8 +100,8 @@ class _AllReviewMatkulPageState extends BaseStateful { onRefresh: retrieveData, child: OnBuilder.all( listenTo: courseDetailRM, - onIdle: () => WaitingView(), - onWaiting: () => WaitingView(), + onIdle: WaitingView.new, + onWaiting: WaitingView.new, onError: (dynamic error, refresh) => const Text('error'), onData: (data) { final course = data.detailCourse; diff --git a/lib/features/matkul/detail/presentation/pages/detail_matkul_page.dart b/lib/features/matkul/detail/presentation/pages/detail_matkul_page.dart index e8def52..9e83d0d 100644 --- a/lib/features/matkul/detail/presentation/pages/detail_matkul_page.dart +++ b/lib/features/matkul/detail/presentation/pages/detail_matkul_page.dart @@ -8,10 +8,8 @@ part of '_pages.dart'; /// ```; class DetailMatkulPage extends StatefulWidget { const DetailMatkulPage({ - Key? key, - required this.courseId, - required this.courseCode, - }) : super(key: key); + required this.courseId, required this.courseCode, super.key, + }); final int courseId; final String courseCode; @@ -103,8 +101,8 @@ class _DetailMatkulPageState extends BaseStateful { onRefresh: retrieveData, child: OnBuilder.all( listenTo: courseDetailRM, - onIdle: () => WaitingView(), - onWaiting: () => WaitingView(), + onIdle: WaitingView.new, + onWaiting: WaitingView.new, onError: (dynamic error, refresh) => const Text('error'), onData: (data) { final course = data.detailCourse; @@ -168,16 +166,16 @@ class _DetailMatkulPageState extends BaseStateful { } Widget _buildMatkulTag(CourseModel course) { - return Row( + return Wrap( children: course.tags! .map( (e) => Padding( - padding: const EdgeInsets.only(right: 8), - child: Tag( - label: e, - ), - ), - ) + padding: const EdgeInsets.only(right: 8, bottom: 8), + child: Tag( + label: e, + ), + ), + ) .toList(), ); } @@ -246,7 +244,7 @@ class _DetailMatkulPageState extends BaseStateful { children: [ Center( child: Text( - '${course.ratingAverage ?? 0.0}', + (course.ratingAverage ?? 0.0).toStringAsFixed(1), style: FontTheme.poppins36w700black(), ), ), diff --git a/lib/features/matkul/detail/presentation/pages/review_matkul_page.dart b/lib/features/matkul/detail/presentation/pages/review_matkul_page.dart index 922d52d..87d243a 100644 --- a/lib/features/matkul/detail/presentation/pages/review_matkul_page.dart +++ b/lib/features/matkul/detail/presentation/pages/review_matkul_page.dart @@ -3,7 +3,7 @@ part of '_pages.dart'; class ReviewMatkulPage extends StatefulWidget { - const ReviewMatkulPage({Key? key}) : super(key: key); + const ReviewMatkulPage({super.key}); @override _ReviewMatkulPageState createState() => _ReviewMatkulPageState(); diff --git a/lib/features/matkul/detail/presentation/states/course_detail_state.dart b/lib/features/matkul/detail/presentation/states/course_detail_state.dart index 425e389..4e5ad81 100644 --- a/lib/features/matkul/detail/presentation/states/course_detail_state.dart +++ b/lib/features/matkul/detail/presentation/states/course_detail_state.dart @@ -5,11 +5,11 @@ import 'package:ulaskelas/features/matkul/search/data/models/_models.dart'; class CourseDetailState { CourseDetailState() { - final _remoteDataSource = CourseRemoteDataSourceImpl(); - final _localDataSource = CourseLocalDataSourceImpl(); + final remoteDataSource = CourseRemoteDataSourceImpl(); + final localDataSource = CourseLocalDataSourceImpl(); _repo = CourseRepositoryImpl( - _remoteDataSource, - _localDataSource, + remoteDataSource, + localDataSource, ); } diff --git a/lib/features/matkul/detail/presentation/widgets/review_card.dart b/lib/features/matkul/detail/presentation/widgets/review_card.dart index 9e022f8..8a078bd 100644 --- a/lib/features/matkul/detail/presentation/widgets/review_card.dart +++ b/lib/features/matkul/detail/presentation/widgets/review_card.dart @@ -2,12 +2,11 @@ part of '_widgets.dart'; class ReviewCard extends StatelessWidget { const ReviewCard({ - Key? key, - required this.review, + required this.review, super.key, this.imgUrl, this.onLiked, this.status, - }) : super(key: key); + }); final ReviewModel review; final String? imgUrl; @@ -188,11 +187,9 @@ class ReviewCard extends StatelessWidget { class PopupMenu extends StatelessWidget { const PopupMenu({ - Key? key, - required this.username, - required this.reviewId, + required this.username, required this.reviewId, super.key, this.isAnonymous = false, - }) : super(key: key); + }); final String username; final bool isAnonymous; @@ -250,7 +247,6 @@ class PopupMenu extends StatelessWidget { Report User Content for ${isAnonymous ? 'Review id $reviewId' : username}''', 'enter report message', ); - break; default: } } diff --git a/lib/features/matkul/detail/presentation/widgets/star_rating.dart b/lib/features/matkul/detail/presentation/widgets/star_rating.dart index 728d6b0..440043a 100644 --- a/lib/features/matkul/detail/presentation/widgets/star_rating.dart +++ b/lib/features/matkul/detail/presentation/widgets/star_rating.dart @@ -8,13 +8,13 @@ class StarRating extends StatelessWidget { final double paddingSize; const StarRating({ - Key? key, + super.key, this.starCount = 5, this.rating = .0, this.onRatingChanged, this.starSize = 16, this.paddingSize = 0, - }) : super(key: key); + }); Widget buildStar(BuildContext context, int index) { Widget icon; @@ -64,11 +64,10 @@ class _HalfFilledIcon extends StatelessWidget { final Color color; const _HalfFilledIcon({ - Key? key, required this.icon, required this.size, required this.color, - }): super(key: key); + }); @override Widget build(BuildContext context) { diff --git a/lib/features/matkul/detail/presentation/widgets/title_and_bookmark.dart b/lib/features/matkul/detail/presentation/widgets/title_and_bookmark.dart index 739aa5c..7f05731 100644 --- a/lib/features/matkul/detail/presentation/widgets/title_and_bookmark.dart +++ b/lib/features/matkul/detail/presentation/widgets/title_and_bookmark.dart @@ -2,9 +2,8 @@ part of '_widgets.dart'; class TitleAndBookMark extends StatelessWidget { const TitleAndBookMark({ - Key? key, - required this.course, - }) : super(key: key); + required this.course, super.key, + }); final CourseModel course; diff --git a/lib/features/matkul/detail/presentation/widgets/tulis_ulasan_button.dart b/lib/features/matkul/detail/presentation/widgets/tulis_ulasan_button.dart index 5fe1ef8..d1aa8d6 100644 --- a/lib/features/matkul/detail/presentation/widgets/tulis_ulasan_button.dart +++ b/lib/features/matkul/detail/presentation/widgets/tulis_ulasan_button.dart @@ -2,11 +2,10 @@ part of '_widgets.dart'; class TulisUlasanButton extends StatelessWidget { const TulisUlasanButton({ - Key? key, - required this.onTap, + required this.onTap, super.key, this.isLoading = false, this.text = 'Tulis Ulasan', - }) : super(key: key); + }); final VoidCallback onTap; final bool isLoading; diff --git a/lib/features/matkul/form/data/models/tag_model.dart b/lib/features/matkul/form/data/models/tag_model.dart index 2e28ae1..2f133ec 100644 --- a/lib/features/matkul/form/data/models/tag_model.dart +++ b/lib/features/matkul/form/data/models/tag_model.dart @@ -2,8 +2,7 @@ part of '_models.dart'; class TagModel { TagModel({ - this.id, - required this.name, + required this.name, this.id, }); TagModel.fromJson(Map json) { diff --git a/lib/features/matkul/form/presentation/pages/add_review_matkul_tag_page.dart b/lib/features/matkul/form/presentation/pages/add_review_matkul_tag_page.dart index 598df81..2d24f6b 100644 --- a/lib/features/matkul/form/presentation/pages/add_review_matkul_tag_page.dart +++ b/lib/features/matkul/form/presentation/pages/add_review_matkul_tag_page.dart @@ -3,7 +3,7 @@ part of '_pages.dart'; class AddReviewMatkulTagPage extends StatefulWidget { - const AddReviewMatkulTagPage({Key? key}) : super(key: key); + const AddReviewMatkulTagPage({super.key}); @override _AddReviewMatkulTagPageState createState() => _AddReviewMatkulTagPageState(); @@ -128,8 +128,8 @@ Pilih maksimal 3 kategori yang menurutmu dapat\nmerepresentasikan mata kuliah in onRefresh: retrieveData, child: OnBuilder.all( listenTo: searchTagRM, - onIdle: () => WaitingView(), - onWaiting: () => WaitingView(), + onIdle: WaitingView.new, + onWaiting: WaitingView.new, onError: (dynamic error, refresh) => const Text('error'), onData: (data) { final matkulTags = data.tags; diff --git a/lib/features/matkul/form/presentation/pages/review_matkul_form_page.dart b/lib/features/matkul/form/presentation/pages/review_matkul_form_page.dart index 3a430a5..bbcfb8f 100644 --- a/lib/features/matkul/form/presentation/pages/review_matkul_form_page.dart +++ b/lib/features/matkul/form/presentation/pages/review_matkul_form_page.dart @@ -4,9 +4,8 @@ part of '_pages.dart'; class ReviewMatkulFormPage extends StatefulWidget { const ReviewMatkulFormPage({ - Key? key, - required this.course, - }) : super(key: key); + required this.course, super.key, + }); final CourseModel course; diff --git a/lib/features/matkul/form/presentation/pages/success_form_page.dart b/lib/features/matkul/form/presentation/pages/success_form_page.dart index e858b8d..d4aeb0f 100644 --- a/lib/features/matkul/form/presentation/pages/success_form_page.dart +++ b/lib/features/matkul/form/presentation/pages/success_form_page.dart @@ -1,7 +1,7 @@ part of '_pages.dart'; class SuccessFormPage extends StatefulWidget { - const SuccessFormPage({Key? key}) : super(key: key); + const SuccessFormPage({super.key}); @override _SuccessFormPageState createState() => _SuccessFormPageState(); diff --git a/lib/features/matkul/form/presentation/states/review_course_form_state.dart b/lib/features/matkul/form/presentation/states/review_course_form_state.dart index 973d86a..eb567e9 100644 --- a/lib/features/matkul/form/presentation/states/review_course_form_state.dart +++ b/lib/features/matkul/form/presentation/states/review_course_form_state.dart @@ -4,11 +4,11 @@ part of '_states.dart'; class ReviewCourseFormState { ReviewCourseFormState() { - final _remoteDataSource = ReviewRemoteDataSourceImpl(); - final _localDataSource = ReviewLocalDataSourceImpl(); + final remoteDataSource = ReviewRemoteDataSourceImpl(); + final localDataSource = ReviewLocalDataSourceImpl(); _repo = ReviewRepositoryImpl( - _remoteDataSource, - _localDataSource, + remoteDataSource, + localDataSource, ); } diff --git a/lib/features/matkul/form/presentation/states/review_course_state.dart b/lib/features/matkul/form/presentation/states/review_course_state.dart index d4a1d03..634ff3a 100644 --- a/lib/features/matkul/form/presentation/states/review_course_state.dart +++ b/lib/features/matkul/form/presentation/states/review_course_state.dart @@ -4,14 +4,14 @@ part of '_states.dart'; class ReviewCourseState { ReviewCourseState() { - final _remoteDataSource = ReviewRemoteDataSourceImpl(); - final _localDataSource = ReviewLocalDataSourceImpl(); + final remoteDataSource = ReviewRemoteDataSourceImpl(); + final localDataSource = ReviewLocalDataSourceImpl(); _repo = ReviewRepositoryImpl( - _remoteDataSource, - _localDataSource, + remoteDataSource, + localDataSource, ); - final _likeRemoteDataSource = LikeRemoteDataSourceImpl(); - _likeRepo = LikeRepositoryImpl(_likeRemoteDataSource); + final likeRemoteDataSource = LikeRemoteDataSourceImpl(); + _likeRepo = LikeRepositoryImpl(likeRemoteDataSource); } late ReviewRepository _repo; diff --git a/lib/features/matkul/form/presentation/states/search_tag_state.dart b/lib/features/matkul/form/presentation/states/search_tag_state.dart index 76475c1..c5c02c0 100644 --- a/lib/features/matkul/form/presentation/states/search_tag_state.dart +++ b/lib/features/matkul/form/presentation/states/search_tag_state.dart @@ -2,11 +2,11 @@ part of '_states.dart'; class SearchTagState implements FutureState { SearchTagState() { - final _remoteDataSource = TagRemoteDataSourceImpl(); - final _localDataSource = TagLocalDataSourceImpl(); + final remoteDataSource = TagRemoteDataSourceImpl(); + final localDataSource = TagLocalDataSourceImpl(); _repo = TagRepositoryImpl( - _remoteDataSource, - _localDataSource, + remoteDataSource, + localDataSource, ); } diff --git a/lib/features/matkul/form/presentation/widgets/form_rating_component.dart b/lib/features/matkul/form/presentation/widgets/form_rating_component.dart index 150889b..2d66b52 100644 --- a/lib/features/matkul/form/presentation/widgets/form_rating_component.dart +++ b/lib/features/matkul/form/presentation/widgets/form_rating_component.dart @@ -2,10 +2,8 @@ part of '_widgets.dart'; class RatingComponent extends StatelessWidget { const RatingComponent({ - Key? key, - required this.text, - required this.starRating, - }) : super(key: key); + required this.text, required this.starRating, super.key, + }); final String text; final StarRating starRating; diff --git a/lib/features/matkul/form/presentation/widgets/guideline_card.dart b/lib/features/matkul/form/presentation/widgets/guideline_card.dart index 42340c2..02e097a 100644 --- a/lib/features/matkul/form/presentation/widgets/guideline_card.dart +++ b/lib/features/matkul/form/presentation/widgets/guideline_card.dart @@ -1,7 +1,7 @@ part of '_widgets.dart'; class GuidelineCard extends StatelessWidget { - const GuidelineCard({Key? key}) : super(key: key); + const GuidelineCard({super.key}); @override Widget build(BuildContext context) { diff --git a/lib/features/matkul/search/presentation/pages/filter_page.dart b/lib/features/matkul/search/presentation/pages/filter_page.dart index 77e23a2..8ae1db8 100644 --- a/lib/features/matkul/search/presentation/pages/filter_page.dart +++ b/lib/features/matkul/search/presentation/pages/filter_page.dart @@ -4,8 +4,8 @@ part of '_pages.dart'; class FilterPage extends StatefulWidget { const FilterPage({ - Key? key, - }) : super(key: key); + super.key, + }); @override _FilterPageState createState() => _FilterPageState(); diff --git a/lib/features/matkul/search/presentation/pages/search_course_page.dart b/lib/features/matkul/search/presentation/pages/search_course_page.dart index 8b29b1c..4b9f101 100644 --- a/lib/features/matkul/search/presentation/pages/search_course_page.dart +++ b/lib/features/matkul/search/presentation/pages/search_course_page.dart @@ -4,8 +4,8 @@ part of '_pages.dart'; class SearchCoursePage extends StatefulWidget { const SearchCoursePage({ - Key? key, - }) : super(key: key); + super.key, + }); @override _SearchCoursePageState createState() => _SearchCoursePageState(); diff --git a/lib/features/matkul/search/presentation/states/search_course_state.dart b/lib/features/matkul/search/presentation/states/search_course_state.dart index fb0c394..ff5e80d 100644 --- a/lib/features/matkul/search/presentation/states/search_course_state.dart +++ b/lib/features/matkul/search/presentation/states/search_course_state.dart @@ -5,11 +5,11 @@ part of '_states.dart'; class SearchCourseState implements FutureState { SearchCourseState() { - final _remoteDataSource = CourseRemoteDataSourceImpl(); - final _localDataSource = CourseLocalDataSourceImpl(); + final remoteDataSource = CourseRemoteDataSourceImpl(); + final localDataSource = CourseLocalDataSourceImpl(); _repo = CourseRepositoryImpl( - _remoteDataSource, - _localDataSource, + remoteDataSource, + localDataSource, ); } diff --git a/lib/features/matkul/search/presentation/widgets/base_app_bar.dart b/lib/features/matkul/search/presentation/widgets/base_app_bar.dart index 500926d..37a1daf 100644 --- a/lib/features/matkul/search/presentation/widgets/base_app_bar.dart +++ b/lib/features/matkul/search/presentation/widgets/base_app_bar.dart @@ -4,16 +4,15 @@ part of '_widgets.dart'; class BaseAppBar extends AppBar { BaseAppBar({ - Key? key, + super.key, Function()? onBackPress, String? label, - List? actions, + super.actions, bool hasLeading = true, - bool centerTitle = true, + bool super.centerTitle = true, double? elevation, Color? color, }) : super( - key: key, elevation: elevation ?? 1, shadowColor: Colors.grey[300], backgroundColor: color ?? BaseColors.white, @@ -28,11 +27,9 @@ class BaseAppBar extends AppBar { onPressed: onBackPress ?? () => nav.pop(), ) : null, - centerTitle: centerTitle, title: Text( label.toString(), style: FontTheme.poppins14w700black(), ), - actions: actions, ); } diff --git a/lib/features/matkul/search/presentation/widgets/card_course.dart b/lib/features/matkul/search/presentation/widgets/card_course.dart index 1a11b93..3dcb7c6 100644 --- a/lib/features/matkul/search/presentation/widgets/card_course.dart +++ b/lib/features/matkul/search/presentation/widgets/card_course.dart @@ -4,10 +4,9 @@ part of '_widgets.dart'; class CardCourse extends StatelessWidget { const CardCourse({ - Key? key, - required this.model, + required this.model, super.key, this.onTap, - }) : super(key: key); + }); final CourseModel model; final VoidCallback? onTap; diff --git a/lib/features/matkul/search/presentation/widgets/empty_view.dart b/lib/features/matkul/search/presentation/widgets/empty_view.dart index 308dcdd..6ba6041 100644 --- a/lib/features/matkul/search/presentation/widgets/empty_view.dart +++ b/lib/features/matkul/search/presentation/widgets/empty_view.dart @@ -4,11 +4,9 @@ part of '_widgets.dart'; class DetailView extends StatelessWidget { const DetailView({ - Key? key, - required this.title, - required this.description, + required this.title, required this.description, super.key, this.isEmptyView = false, - }) : super(key: key); + }); final String title; final String description; @@ -40,7 +38,7 @@ class DetailView extends StatelessWidget { const HeightSpace(10), Text( description, - style: Theme.of(context).textTheme.caption, + style: Theme.of(context).textTheme.bodySmall, textAlign: TextAlign.center, ), const HeightSpace(20), diff --git a/lib/features/matkul/search/presentation/widgets/search_list_view.dart b/lib/features/matkul/search/presentation/widgets/search_list_view.dart index 7e81129..ffc6ef3 100644 --- a/lib/features/matkul/search/presentation/widgets/search_list_view.dart +++ b/lib/features/matkul/search/presentation/widgets/search_list_view.dart @@ -4,12 +4,12 @@ part of '_widgets.dart'; class SearchListView extends StatelessWidget { const SearchListView({ - Key? key, required this.refreshIndicatorKey, required this.scrollController, required this.onScroll, required this.onRefresh, - }) : super(key: key); + super.key, + }); final GlobalKey refreshIndicatorKey; final ScrollController scrollController; diff --git a/lib/features/matkul/search/presentation/widgets/skeleton_card_course.dart b/lib/features/matkul/search/presentation/widgets/skeleton_card_course.dart index 960ae14..629ef73 100644 --- a/lib/features/matkul/search/presentation/widgets/skeleton_card_course.dart +++ b/lib/features/matkul/search/presentation/widgets/skeleton_card_course.dart @@ -4,7 +4,7 @@ import 'package:shimmer/shimmer.dart'; import 'package:ulaskelas/core/theme/_theme.dart'; class SkeletonCardCourse extends StatelessWidget { - const SkeletonCardCourse({Key? key}) : super(key: key); + const SkeletonCardCourse({super.key}); @override Widget build(BuildContext context) { diff --git a/lib/features/profile/presentation/pages/profile_page.dart b/lib/features/profile/presentation/pages/profile_page.dart index 9526493..d8bdfca 100644 --- a/lib/features/profile/presentation/pages/profile_page.dart +++ b/lib/features/profile/presentation/pages/profile_page.dart @@ -11,8 +11,8 @@ import 'package:ulaskelas/features/profile/presentation/widgets/profile_data.dar class ProfilePage extends StatefulWidget { const ProfilePage({ - Key? key, - }) : super(key: key); + super.key, + }); @override _ProfilePageState createState() => _ProfilePageState(); diff --git a/lib/features/profile/presentation/states/profile_state.dart b/lib/features/profile/presentation/states/profile_state.dart index d61f05d..53ec667 100644 --- a/lib/features/profile/presentation/states/profile_state.dart +++ b/lib/features/profile/presentation/states/profile_state.dart @@ -7,11 +7,11 @@ import 'package:ulaskelas/features/profile/domain/entities/profile_repository.da class ProfileState { ProfileState() { - final _remoteDataSource = ProfileRemoteDataSourceImpl(); - final _localDataSource = ProfileLocalDataSourceImpl(); + final remoteDataSource = ProfileRemoteDataSourceImpl(); + final localDataSource = ProfileLocalDataSourceImpl(); _repo = ProfileRepositoryImpl( - _remoteDataSource, - _localDataSource, + remoteDataSource, + localDataSource, ); } ProfileRepository? _repo; diff --git a/lib/features/profile/presentation/widgets/keluar_button.dart b/lib/features/profile/presentation/widgets/keluar_button.dart index 0a84f76..85634ca 100644 --- a/lib/features/profile/presentation/widgets/keluar_button.dart +++ b/lib/features/profile/presentation/widgets/keluar_button.dart @@ -3,7 +3,7 @@ import 'package:google_fonts/google_fonts.dart'; import 'package:ulaskelas/core/theme/_theme.dart'; class KeluarButton extends StatelessWidget { - const KeluarButton(this.handler, {Key? key}) : super(key: key); + const KeluarButton(this.handler, {super.key}); final Function() handler; @override diff --git a/lib/features/profile/presentation/widgets/profile_data.dart b/lib/features/profile/presentation/widgets/profile_data.dart index 667047d..0cb25e0 100644 --- a/lib/features/profile/presentation/widgets/profile_data.dart +++ b/lib/features/profile/presentation/widgets/profile_data.dart @@ -2,8 +2,10 @@ import 'package:flutter/material.dart'; import 'package:ulaskelas/core/theme/_theme.dart'; class ProfileData extends StatelessWidget { - const ProfileData(this.title, this.data, {Key? key}) : super(key: key); - final String title, data; + final String title; + final String data; + const ProfileData(this.title, this.data, {super.key}); + @override Widget build(BuildContext context) { diff --git a/lib/features/sso/presentation/pages/sso_web_page.dart b/lib/features/sso/presentation/pages/sso_web_page.dart index 1d73adb..cb2b4e0 100644 --- a/lib/features/sso/presentation/pages/sso_web_page.dart +++ b/lib/features/sso/presentation/pages/sso_web_page.dart @@ -3,7 +3,7 @@ part of '_pages.dart'; class SSOWebPage extends StatefulWidget { - const SSOWebPage({Key? key}) : super(key: key); + const SSOWebPage({super.key}); @override _SSOWebPageState createState() => _SSOWebPageState(); @@ -17,7 +17,7 @@ class _SSOWebPageState extends BaseStateful { @override void init() { - if (Platform.isAndroid) WebView.platform = SurfaceAndroidWebView(); + if (Platform.isAndroid) WebView.platform = AndroidWebView(); } @override diff --git a/lib/main_page.dart b/lib/main_page.dart index e0ee79e..600e94e 100644 --- a/lib/main_page.dart +++ b/lib/main_page.dart @@ -10,7 +10,7 @@ import 'features/matkul/search/presentation/pages/_pages.dart'; import 'features/profile/presentation/pages/profile_page.dart'; class MainPage extends StatefulWidget { - const MainPage({Key? key}) : super(key: key); + const MainPage({super.key}); @override _MainPageState createState() => _MainPageState(); diff --git a/lib/onboarding_page.dart b/lib/onboarding_page.dart index 2fdb909..6a867bc 100644 --- a/lib/onboarding_page.dart +++ b/lib/onboarding_page.dart @@ -10,8 +10,8 @@ import 'core/constants/_constants.dart'; class OnboardingPage extends StatefulWidget { const OnboardingPage({ - Key? key, - }) : super(key: key); + super.key, + }); @override _OnboardingPageState createState() => _OnboardingPageState(); @@ -146,14 +146,14 @@ Kamu juga dapat memberikan ulasan terhadap mata kuliah yang sudah kamu ambil. Ul class OnboardingPageBody extends StatelessWidget { const OnboardingPageBody({ - Key? key, required this.index, required this.height, required this.width, required this.title, required this.description, required this.image, - }) : super(key: key); + super.key, + }); final int index; final double height; diff --git a/pubspec.lock b/pubspec.lock index 166ebb2..0642794 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,310 +5,330 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - url: "https://pub.dartlang.org" + sha256: ae92f5d747aee634b87f89d9946000c2de774be1d6ac3e58268224348cd0101a + url: "https://pub.dev" source: hosted - version: "31.0.0" + version: "61.0.0" + _flutterfire_internals: + dependency: transitive + description: + name: _flutterfire_internals + sha256: "5dce45a06d386358334eb1689108db6455d90ceb0d75848d5f4819283d4ee2b8" + url: "https://pub.dev" + source: hosted + version: "1.3.4" analyzer: dependency: transitive description: name: analyzer - url: "https://pub.dartlang.org" + sha256: ea3d8652bda62982addfd92fdc2d0214e5f82e43325104990d4f4c4a2a313562 + url: "https://pub.dev" source: hosted - version: "2.8.0" + version: "5.13.0" another_flushbar: dependency: transitive description: name: another_flushbar - url: "https://pub.dartlang.org" - source: hosted - version: "1.12.29" - archive: - dependency: transitive - description: - name: archive - url: "https://pub.dartlang.org" + sha256: "19bf9520230ec40b300aaf9dd2a8fefcb277b25ecd1c4838f530566965befc2a" + url: "https://pub.dev" source: hosted - version: "3.1.11" + version: "1.12.30" args: dependency: transitive description: name: args - url: "https://pub.dartlang.org" + sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596 + url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.4.2" async: dependency: transitive description: name: async - url: "https://pub.dartlang.org" + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + url: "https://pub.dev" source: hosted - version: "2.8.2" + version: "2.11.0" boolean_selector: dependency: transitive description: name: boolean_selector - url: "https://pub.dartlang.org" + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" build: dependency: transitive description: name: build - url: "https://pub.dartlang.org" + sha256: "80184af8b6cb3e5c1c4ec6d8544d27711700bc3e6d2efad04238c7b5290889f0" + url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.4.1" build_config: dependency: transitive description: name: build_config - url: "https://pub.dartlang.org" + sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1 + url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.1" build_daemon: dependency: transitive description: name: build_daemon - url: "https://pub.dartlang.org" + sha256: "5f02d73eb2ba16483e693f80bee4f088563a820e47d1027d4cdfe62b5bb43e65" + url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "4.0.0" build_resolvers: dependency: transitive description: name: build_resolvers - url: "https://pub.dartlang.org" + sha256: "6c4dd11d05d056e76320b828a1db0fc01ccd376922526f8e9d6c796a5adbac20" + url: "https://pub.dev" source: hosted - version: "2.0.6" + version: "2.2.1" build_runner: dependency: "direct dev" description: name: build_runner - url: "https://pub.dartlang.org" + sha256: "10c6bcdbf9d049a0b666702cf1cee4ddfdc38f02a19d35ae392863b47519848b" + url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.4.6" build_runner_core: dependency: transitive description: name: build_runner_core - url: "https://pub.dartlang.org" + sha256: "6d6ee4276b1c5f34f21fdf39425202712d2be82019983d52f351c94aafbc2c41" + url: "https://pub.dev" source: hosted - version: "7.2.4" + version: "7.2.10" built_collection: dependency: transitive description: name: built_collection - url: "https://pub.dartlang.org" + sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100" + url: "https://pub.dev" source: hosted version: "5.1.1" built_value: dependency: transitive description: name: built_value - url: "https://pub.dartlang.org" + sha256: "598a2a682e2a7a90f08ba39c0aaa9374c5112340f0a2e275f61b59389543d166" + url: "https://pub.dev" source: hosted - version: "8.4.1" + version: "8.6.1" characters: dependency: transitive description: name: characters - url: "https://pub.dartlang.org" + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.3.0" charcode: dependency: transitive description: name: charcode - url: "https://pub.dartlang.org" + sha256: fb98c0f6d12c920a02ee2d998da788bca066ca5f148492b7085ee23372b12306 + url: "https://pub.dev" source: hosted version: "1.3.1" checked_yaml: dependency: transitive description: name: checked_yaml - url: "https://pub.dartlang.org" + sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff + url: "https://pub.dev" source: hosted - version: "2.0.1" - cli_util: - dependency: transitive - description: - name: cli_util - url: "https://pub.dartlang.org" - source: hosted - version: "0.3.5" + version: "2.0.3" clock: dependency: transitive description: name: clock - url: "https://pub.dartlang.org" + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.1" code_builder: dependency: transitive description: name: code_builder - url: "https://pub.dartlang.org" + sha256: "4ad01d6e56db961d29661561effde45e519939fdaeb46c351275b182eac70189" + url: "https://pub.dev" source: hosted - version: "4.3.0" + version: "4.5.0" collection: dependency: transitive description: name: collection - url: "https://pub.dartlang.org" + sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" + url: "https://pub.dev" source: hosted - version: "1.16.0" + version: "1.17.1" convert: dependency: transitive description: name: convert - url: "https://pub.dartlang.org" + sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" + url: "https://pub.dev" source: hosted - version: "3.0.2" + version: "3.1.1" crypto: dependency: transitive description: name: crypto - url: "https://pub.dartlang.org" + sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab + url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.0.3" csslib: dependency: transitive description: name: csslib - url: "https://pub.dartlang.org" + sha256: "831883fb353c8bdc1d71979e5b342c7d88acfbc643113c14ae51e2442ea0f20f" + url: "https://pub.dev" source: hosted - version: "0.17.2" + version: "0.17.3" cupertino_icons: dependency: "direct main" description: name: cupertino_icons - url: "https://pub.dartlang.org" + sha256: e35129dc44c9118cee2a5603506d823bab99c68393879edb440e0090d07586be + url: "https://pub.dev" source: hosted version: "1.0.5" dart_style: dependency: transitive description: name: dart_style - url: "https://pub.dartlang.org" + sha256: "1efa911ca7086affd35f463ca2fc1799584fb6aa89883cf0af8e3664d6a02d55" + url: "https://pub.dev" source: hosted - version: "2.2.1" + version: "2.3.2" dio: dependency: "direct main" description: name: dio - url: "https://pub.dartlang.org" + sha256: "7d328c4d898a61efc3cd93655a0955858e29a0aa647f0f9e02d59b3bb275e2e8" + url: "https://pub.dev" source: hosted version: "4.0.6" - dotenv: - dependency: transitive - description: - name: dotenv - url: "https://pub.dartlang.org" - source: hosted - version: "3.0.0" - envify: + envied: dependency: "direct main" description: - name: envify - url: "https://pub.dartlang.org" + name: envied + sha256: "60d3f5606c7b35bc6ef493e650d916b34351d8af2e58b7ac45881ba59dfcf039" + url: "https://pub.dev" source: hosted - version: "2.0.2" - envify_generator: + version: "0.3.0+3" + envied_generator: dependency: "direct dev" description: - name: envify_generator - url: "https://pub.dartlang.org" + name: envied_generator + sha256: dfdbe5dc52863e54c036a4c4042afbdf1bd528cb4c1e638ecba26228ba72e9e5 + url: "https://pub.dev" source: hosted - version: "2.0.2" + version: "0.3.0+3" fake_async: dependency: transitive description: name: fake_async - url: "https://pub.dartlang.org" + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.3.1" ffi: dependency: transitive description: name: ffi - url: "https://pub.dartlang.org" + sha256: "7bf0adc28a23d395f19f3f1eb21dd7cfd1dd9f8e1c50051c069122e6853bc878" + url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "2.1.0" file: dependency: transitive description: name: file - url: "https://pub.dartlang.org" - source: hosted - version: "6.1.2" - firebase: - dependency: transitive - description: - name: firebase - url: "https://pub.dartlang.org" + sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" + url: "https://pub.dev" source: hosted - version: "9.0.3" + version: "6.1.4" firebase_analytics: dependency: "direct main" description: name: firebase_analytics - url: "https://pub.dartlang.org" + sha256: d7494294bdb56a58ab6c4cfef377693835c43fa3610707346b98892fd7c4b634 + url: "https://pub.dev" source: hosted - version: "8.3.4" + version: "10.4.4" firebase_analytics_platform_interface: dependency: transitive description: name: firebase_analytics_platform_interface - url: "https://pub.dartlang.org" + sha256: bcb32ac53c494bd6deb61dcd02087418ae96d063ce522a4004974a32545c3f2b + url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "3.6.4" firebase_analytics_web: dependency: transitive description: name: firebase_analytics_web - url: "https://pub.dartlang.org" + sha256: "2f7d8ab97b46a747730f580b5a38b3e5330efb54c16af48613a6f729cc5f57fa" + url: "https://pub.dev" source: hosted - version: "0.3.0+1" + version: "0.5.4+4" firebase_core: dependency: "direct main" description: name: firebase_core - url: "https://pub.dartlang.org" + sha256: "2e9324f719e90200dc7d3c4f5d2abc26052f9f2b995d3b6626c47a0dfe1c8192" + url: "https://pub.dev" source: hosted - version: "1.22.0" + version: "2.15.0" firebase_core_platform_interface: dependency: transitive description: name: firebase_core_platform_interface - url: "https://pub.dartlang.org" + sha256: b63e3be6c96ef5c33bdec1aab23c91eb00696f6452f0519401d640938c94cba2 + url: "https://pub.dev" source: hosted - version: "4.5.1" + version: "4.8.0" firebase_core_web: dependency: transitive description: name: firebase_core_web - url: "https://pub.dartlang.org" + sha256: "0fd5c4b228de29b55fac38aed0d9e42514b3d3bd47675de52bf7f8fccaf922fa" + url: "https://pub.dev" source: hosted - version: "1.7.2" + version: "2.6.0" firebase_crashlytics: dependency: "direct main" description: name: firebase_crashlytics - url: "https://pub.dartlang.org" + sha256: "3607b46342537f98df18b130b6f5ab25cee6981a3a782e1a7b121d04dfea3caa" + url: "https://pub.dev" source: hosted - version: "2.8.10" + version: "3.3.4" firebase_crashlytics_platform_interface: dependency: transitive description: name: firebase_crashlytics_platform_interface - url: "https://pub.dartlang.org" + sha256: c63abeb87b18f6e6d4bf6bb3977f15d2d9281a049d93fe098e83e56dcbf7da06 + url: "https://pub.dev" source: hosted - version: "3.2.16" + version: "3.6.4" fixnum: dependency: transitive description: name: fixnum - url: "https://pub.dartlang.org" + sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1" + url: "https://pub.dev" source: hosted - version: "1.0.1" + version: "1.1.0" flutter: dependency: "direct main" description: flutter @@ -328,21 +348,24 @@ packages: dependency: transitive description: name: flutter_spinkit - url: "https://pub.dartlang.org" + sha256: b39c753e909d4796906c5696a14daf33639a76e017136c8d82bf3e620ce5bb8e + url: "https://pub.dev" source: hosted - version: "5.1.0" + version: "5.2.0" flutter_svg: dependency: "direct main" description: name: flutter_svg - url: "https://pub.dartlang.org" + sha256: "8c5d68a82add3ca76d792f058b186a0599414f279f00ece4830b9b231b570338" + url: "https://pub.dev" source: hosted - version: "0.22.0" + version: "2.0.7" flutter_switch: dependency: "direct main" description: name: flutter_switch - url: "https://pub.dartlang.org" + sha256: b91477f926bba135d2d203d7b24367492662d8d9c3aa6adb960b14c1087d3c41 + url: "https://pub.dev" source: hosted version: "0.3.2" flutter_test: @@ -354,9 +377,10 @@ packages: dependency: "direct main" description: name: flutter_vector_icons - url: "https://pub.dartlang.org" + sha256: "20a77e282f8cb438c8edcee4eec85d8497d5f4cbeb07d116e9d2d01c9edfc5e2" + url: "https://pub.dev" source: hosted - version: "1.0.0" + version: "2.0.0" flutter_web_plugins: dependency: transitive description: flutter @@ -366,9 +390,10 @@ packages: dependency: transitive description: name: frontend_server_client - url: "https://pub.dartlang.org" + sha256: "408e3ca148b31c20282ad6f37ebfa6f4bdc8fede5b74bc2f08d9d92b55db3612" + url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "3.2.0" fuchsia_remote_debug_protocol: dependency: transitive description: flutter @@ -378,366 +403,402 @@ packages: dependency: transitive description: name: glob - url: "https://pub.dartlang.org" + sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.2" google_fonts: dependency: "direct main" description: name: google_fonts - url: "https://pub.dartlang.org" + sha256: "6b6f10f0ce3c42f6552d1c70d2c28d764cf22bb487f50f66cca31dcd5194f4d6" + url: "https://pub.dev" source: hosted - version: "2.3.3" + version: "4.0.4" graphs: dependency: transitive description: name: graphs - url: "https://pub.dartlang.org" + sha256: aedc5a15e78fc65a6e23bcd927f24c64dd995062bcd1ca6eda65a3cff92a4d19 + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.3.1" hive: dependency: "direct main" description: name: hive - url: "https://pub.dartlang.org" + sha256: "8dcf6db979d7933da8217edcec84e9df1bdb4e4edc7fc77dbd5aa74356d6d941" + url: "https://pub.dev" source: hosted - version: "1.6.0-nullsafety.2" + version: "2.2.3" html: - dependency: transitive + dependency: "direct main" description: name: html - url: "https://pub.dartlang.org" + sha256: "3a7812d5bcd2894edf53dfaf8cd640876cf6cef50a8f238745c8b8120ea74d3a" + url: "https://pub.dev" source: hosted - version: "0.15.0" + version: "0.15.4" http: dependency: transitive description: name: http - url: "https://pub.dartlang.org" + sha256: "5895291c13fa8a3bd82e76d5627f69e0d85ca6a30dcac95c4ea19a5d555879c2" + url: "https://pub.dev" source: hosted - version: "0.13.5" + version: "0.13.6" http_multi_server: dependency: transitive description: name: http_multi_server - url: "https://pub.dartlang.org" + sha256: "97486f20f9c2f7be8f514851703d0119c3596d14ea63227af6f7a481ef2b2f8b" + url: "https://pub.dev" source: hosted version: "3.2.1" http_parser: dependency: transitive description: name: http_parser - url: "https://pub.dartlang.org" + sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" + url: "https://pub.dev" source: hosted - version: "4.0.1" + version: "4.0.2" intl: dependency: "direct main" description: name: intl - url: "https://pub.dartlang.org" + sha256: a3715e3bc90294e971cb7dc063fbf3cd9ee0ebf8604ffeafabd9e6f16abbdbe6 + url: "https://pub.dev" source: hosted - version: "0.17.0" + version: "0.18.0" io: dependency: transitive description: name: io - url: "https://pub.dartlang.org" + sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e" + url: "https://pub.dev" source: hosted - version: "1.0.3" + version: "1.0.4" js: dependency: transitive description: name: js - url: "https://pub.dartlang.org" + sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 + url: "https://pub.dev" source: hosted - version: "0.6.4" + version: "0.6.7" json_annotation: dependency: transitive description: name: json_annotation - url: "https://pub.dartlang.org" + sha256: b10a7b2ff83d83c777edba3c6a0f97045ddadd56c944e1a23a3fdf43a1bf4467 + url: "https://pub.dev" source: hosted - version: "4.7.0" + version: "4.8.1" logger: dependency: "direct main" description: name: logger - url: "https://pub.dartlang.org" + sha256: "66cb048220ca51cf9011da69fa581e4ee2bed4be6e82870d9e9baae75739da49" + url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "2.0.1" logging: dependency: transitive description: name: logging - url: "https://pub.dartlang.org" + sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340" + url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "1.2.0" matcher: dependency: transitive description: name: matcher - url: "https://pub.dartlang.org" + sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb" + url: "https://pub.dev" source: hosted - version: "0.12.11" + version: "0.12.15" material_color_utilities: dependency: transitive description: name: material_color_utilities - url: "https://pub.dartlang.org" + sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + url: "https://pub.dev" source: hosted - version: "0.1.4" + version: "0.2.0" material_design_icons_flutter: dependency: "direct main" description: name: material_design_icons_flutter - url: "https://pub.dartlang.org" + sha256: "6f986b7a51f3ad4c00e33c5c84e8de1bdd140489bbcdc8b66fc1283dad4dea5a" + url: "https://pub.dev" source: hosted - version: "4.0.5955" + version: "7.0.7296" meta: dependency: transitive description: name: meta - url: "https://pub.dartlang.org" + sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" + url: "https://pub.dev" source: hosted - version: "1.7.0" + version: "1.9.1" mime: dependency: transitive description: name: mime - url: "https://pub.dartlang.org" + sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e + url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "1.0.4" + navigation_builder: + dependency: transitive + description: + name: navigation_builder + sha256: "95e25150191d9cd4e4b86504f33cd9e786d1e6732edb2e3e635bbedc5ef0dea7" + url: "https://pub.dev" + source: hosted + version: "0.0.3" package_config: dependency: transitive description: name: package_config - url: "https://pub.dartlang.org" + sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd" + url: "https://pub.dev" source: hosted version: "2.1.0" package_info: dependency: "direct main" description: name: package_info - url: "https://pub.dartlang.org" + sha256: "6c07d9d82c69e16afeeeeb6866fe43985a20b3b50df243091bfc4a4ad2b03b75" + url: "https://pub.dev" source: hosted version: "2.0.2" path: dependency: transitive description: name: path - url: "https://pub.dartlang.org" - source: hosted - version: "1.8.1" - path_drawing: - dependency: transitive - description: - name: path_drawing - url: "https://pub.dartlang.org" + sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" + url: "https://pub.dev" source: hosted - version: "0.5.1+1" + version: "1.8.3" path_parsing: dependency: transitive description: name: path_parsing - url: "https://pub.dartlang.org" + sha256: e3e67b1629e6f7e8100b367d3db6ba6af4b1f0bb80f64db18ef1fbabd2fa9ccf + url: "https://pub.dev" source: hosted - version: "0.2.1" + version: "1.0.1" path_provider: dependency: "direct main" description: name: path_provider - url: "https://pub.dartlang.org" + sha256: "909b84830485dbcd0308edf6f7368bc8fd76afa26a270420f34cabea2a6467a0" + url: "https://pub.dev" source: hosted - version: "2.0.11" + version: "2.1.0" path_provider_android: dependency: transitive description: name: path_provider_android - url: "https://pub.dartlang.org" + sha256: "5d44fc3314d969b84816b569070d7ace0f1dea04bd94a83f74c4829615d22ad8" + url: "https://pub.dev" source: hosted - version: "2.0.20" - path_provider_ios: + version: "2.1.0" + path_provider_foundation: dependency: transitive description: - name: path_provider_ios - url: "https://pub.dartlang.org" + name: path_provider_foundation + sha256: "1b744d3d774e5a879bb76d6cd1ecee2ba2c6960c03b1020cd35212f6aa267ac5" + url: "https://pub.dev" source: hosted - version: "2.0.11" + version: "2.3.0" path_provider_linux: dependency: transitive description: name: path_provider_linux - url: "https://pub.dartlang.org" + sha256: ba2b77f0c52a33db09fc8caf85b12df691bf28d983e84cf87ff6d693cfa007b3 + url: "https://pub.dev" source: hosted - version: "2.1.7" - path_provider_macos: - dependency: transitive - description: - name: path_provider_macos - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.6" + version: "2.2.0" path_provider_platform_interface: dependency: transitive description: name: path_provider_platform_interface - url: "https://pub.dartlang.org" + sha256: bced5679c7df11190e1ddc35f3222c858f328fff85c3942e46e7f5589bf9eb84 + url: "https://pub.dev" source: hosted - version: "2.0.4" + version: "2.1.0" path_provider_windows: dependency: transitive description: name: path_provider_windows - url: "https://pub.dartlang.org" + sha256: ee0e0d164516b90ae1f970bdf29f726f1aa730d7cfc449ecc74c495378b705da + url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "2.2.0" petitparser: dependency: transitive description: name: petitparser - url: "https://pub.dartlang.org" + sha256: cb3798bef7fc021ac45b308f4b51208a152792445cce0448c9a4ba5879dd8750 + url: "https://pub.dev" source: hosted - version: "5.0.0" + version: "5.4.0" platform: dependency: transitive description: name: platform - url: "https://pub.dartlang.org" + sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76" + url: "https://pub.dev" source: hosted version: "3.1.0" plugin_platform_interface: dependency: transitive description: name: plugin_platform_interface - url: "https://pub.dartlang.org" + sha256: "43798d895c929056255600343db8f049921cbec94d31ec87f1dc5c16c01935dd" + url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "2.1.5" pool: dependency: transitive description: name: pool - url: "https://pub.dartlang.org" + sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a" + url: "https://pub.dev" source: hosted version: "1.5.1" process: dependency: transitive description: name: process - url: "https://pub.dartlang.org" + sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09" + url: "https://pub.dev" source: hosted version: "4.2.4" pub_semver: dependency: transitive description: name: pub_semver - url: "https://pub.dartlang.org" + sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c" + url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.4" pubspec_parse: dependency: transitive description: name: pubspec_parse - url: "https://pub.dartlang.org" + sha256: c63b2876e58e194e4b0828fcb080ad0e06d051cb607a6be51a9e084f47cb9367 + url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.2.3" ristek_material_component: dependency: "direct main" description: name: ristek_material_component - url: "https://pub.dartlang.org" + sha256: "0f0986bd7113f8d8dfbb6955bfa180764dc6cb151fa3ebd5583aa97f22750de0" + url: "https://pub.dev" source: hosted version: "0.0.15" rxdart: dependency: "direct main" description: name: rxdart - url: "https://pub.dartlang.org" + sha256: "0c7c0cedd93788d996e33041ffecda924cc54389199cde4e6a34b440f50044cb" + url: "https://pub.dev" source: hosted - version: "0.27.5" + version: "0.27.7" share: dependency: "direct main" description: name: share - url: "https://pub.dartlang.org" + sha256: "97e6403f564ed1051a01534c2fc919cb6e40ea55e60a18ec23cee6e0ce19f4be" + url: "https://pub.dev" source: hosted version: "2.0.4" shared_preferences: dependency: "direct main" description: name: shared_preferences - url: "https://pub.dartlang.org" + sha256: "0344316c947ffeb3a529eac929e1978fcd37c26be4e8468628bac399365a3ca1" + url: "https://pub.dev" source: hosted - version: "2.0.15" + version: "2.2.0" shared_preferences_android: dependency: transitive description: name: shared_preferences_android - url: "https://pub.dartlang.org" + sha256: fe8401ec5b6dcd739a0fe9588802069e608c3fdbfd3c3c93e546cf2f90438076 + url: "https://pub.dev" source: hosted - version: "2.0.13" - shared_preferences_ios: + version: "2.2.0" + shared_preferences_foundation: dependency: transitive description: - name: shared_preferences_ios - url: "https://pub.dartlang.org" + name: shared_preferences_foundation + sha256: f39696b83e844923b642ce9dd4bd31736c17e697f6731a5adf445b1274cf3cd4 + url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.3.2" shared_preferences_linux: dependency: transitive description: name: shared_preferences_linux - url: "https://pub.dartlang.org" + sha256: "71d6806d1449b0a9d4e85e0c7a917771e672a3d5dc61149cc9fac871115018e1" + url: "https://pub.dev" source: hosted - version: "2.1.1" - shared_preferences_macos: - dependency: transitive - description: - name: shared_preferences_macos - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.4" + version: "2.3.0" shared_preferences_platform_interface: dependency: transitive description: name: shared_preferences_platform_interface - url: "https://pub.dartlang.org" + sha256: "23b052f17a25b90ff2b61aad4cc962154da76fb62848a9ce088efe30d7c50ab1" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.3.0" shared_preferences_web: dependency: transitive description: name: shared_preferences_web - url: "https://pub.dartlang.org" + sha256: "7347b194fb0bbeb4058e6a4e87ee70350b6b2b90f8ac5f8bd5b3a01548f6d33a" + url: "https://pub.dev" source: hosted - version: "2.0.4" + version: "2.2.0" shared_preferences_windows: dependency: transitive description: name: shared_preferences_windows - url: "https://pub.dartlang.org" + sha256: f95e6a43162bce43c9c3405f3eb6f39e5b5d11f65fab19196cf8225e2777624d + url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.3.0" shelf: dependency: transitive description: name: shelf - url: "https://pub.dartlang.org" + sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4 + url: "https://pub.dev" source: hosted - version: "1.4.0" + version: "1.4.1" shelf_web_socket: dependency: transitive description: name: shelf_web_socket - url: "https://pub.dartlang.org" + sha256: "9ca081be41c60190ebcb4766b2486a7d50261db7bd0f5d9615f2d653637a84c1" + url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "1.0.4" shimmer: dependency: "direct main" description: name: shimmer - url: "https://pub.dartlang.org" + sha256: "5f88c883a22e9f9f299e5ba0e4f7e6054857224976a5d9f839d4ebdc94a14ac9" + url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "3.0.0" sky_engine: dependency: transitive description: flutter @@ -747,254 +808,314 @@ packages: dependency: transitive description: name: source_gen - url: "https://pub.dartlang.org" + sha256: fc0da689e5302edb6177fdd964efcb7f58912f43c28c2047a808f5bfff643d16 + url: "https://pub.dev" source: hosted - version: "1.2.2" + version: "1.4.0" source_span: dependency: transitive description: name: source_span - url: "https://pub.dartlang.org" + sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + url: "https://pub.dev" source: hosted - version: "1.8.2" + version: "1.9.1" stack_trace: dependency: transitive description: name: stack_trace - url: "https://pub.dartlang.org" + sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.11.0" states_rebuilder: dependency: "direct main" description: name: states_rebuilder - url: "https://pub.dartlang.org" + sha256: bf1a5ab5c543acdefce35e60f482eb7ab592339484fe3266d147ee597f18dc92 + url: "https://pub.dev" source: hosted - version: "6.1.0+1" + version: "6.3.0" stream_channel: dependency: transitive description: name: stream_channel - url: "https://pub.dartlang.org" + sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" stream_transform: dependency: transitive description: name: stream_transform - url: "https://pub.dartlang.org" + sha256: "14a00e794c7c11aa145a170587321aedce29769c08d7f58b1d141da75e3b1c6f" + url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "2.1.0" string_scanner: dependency: transitive description: name: string_scanner - url: "https://pub.dartlang.org" + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.2.0" sync_http: dependency: transitive description: name: sync_http - url: "https://pub.dartlang.org" + sha256: "7f0cd72eca000d2e026bcd6f990b81d0ca06022ef4e32fb257b30d3d1014a961" + url: "https://pub.dev" source: hosted - version: "0.3.0" + version: "0.3.1" term_glyph: dependency: transitive description: name: term_glyph - url: "https://pub.dartlang.org" + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.2.1" test_api: dependency: transitive description: name: test_api - url: "https://pub.dartlang.org" + sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb + url: "https://pub.dev" source: hosted - version: "0.4.9" + version: "0.5.1" timing: dependency: transitive description: name: timing - url: "https://pub.dartlang.org" + sha256: "70a3b636575d4163c477e6de42f247a23b315ae20e86442bebe32d3cabf61c32" + url: "https://pub.dev" source: hosted - version: "1.0.0" + version: "1.0.1" typed_data: dependency: transitive description: name: typed_data - url: "https://pub.dartlang.org" + sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c + url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.3.2" universal_html: dependency: "direct main" description: name: universal_html - url: "https://pub.dartlang.org" + sha256: a5cc5a84188e5d3e58f3ed77fe3dd4575dc1f68aa7c89e51b5b4105b9aab3b9d + url: "https://pub.dev" source: hosted - version: "2.0.8" + version: "2.2.3" universal_io: dependency: transitive description: name: universal_io - url: "https://pub.dartlang.org" + sha256: "1722b2dcc462b4b2f3ee7d188dad008b6eb4c40bbd03a3de451d82c78bba9aad" + url: "https://pub.dev" source: hosted - version: "2.0.4" + version: "2.2.2" url_launcher: dependency: "direct main" description: name: url_launcher - url: "https://pub.dartlang.org" + sha256: "781bd58a1eb16069412365c98597726cd8810ae27435f04b3b4d3a470bacd61e" + url: "https://pub.dev" source: hosted - version: "6.1.5" + version: "6.1.12" url_launcher_android: dependency: transitive description: name: url_launcher_android - url: "https://pub.dartlang.org" + sha256: "78cb6dea3e93148615109e58e42c35d1ffbf5ef66c44add673d0ab75f12ff3af" + url: "https://pub.dev" source: hosted - version: "6.0.19" + version: "6.0.37" url_launcher_ios: dependency: transitive description: name: url_launcher_ios - url: "https://pub.dartlang.org" + sha256: "9af7ea73259886b92199f9e42c116072f05ff9bea2dcb339ab935dfc957392c2" + url: "https://pub.dev" source: hosted - version: "6.0.17" + version: "6.1.4" url_launcher_linux: dependency: transitive description: name: url_launcher_linux - url: "https://pub.dartlang.org" + sha256: "207f4ddda99b95b4d4868320a352d374b0b7e05eefad95a4a26f57da413443f5" + url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.0.5" url_launcher_macos: dependency: transitive description: name: url_launcher_macos - url: "https://pub.dartlang.org" + sha256: "1c4fdc0bfea61a70792ce97157e5cc17260f61abbe4f39354513f39ec6fd73b1" + url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.0.6" url_launcher_platform_interface: dependency: transitive description: name: url_launcher_platform_interface - url: "https://pub.dartlang.org" + sha256: bfdfa402f1f3298637d71ca8ecfe840b4696698213d5346e9d12d4ab647ee2ea + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.3" url_launcher_web: dependency: transitive description: name: url_launcher_web - url: "https://pub.dartlang.org" + sha256: cc26720eefe98c1b71d85f9dc7ef0cada5132617046369d9dc296b3ecaa5cbb4 + url: "https://pub.dev" source: hosted - version: "2.0.13" + version: "2.0.18" url_launcher_windows: dependency: transitive description: name: url_launcher_windows - url: "https://pub.dartlang.org" + sha256: "7967065dd2b5fccc18c653b97958fdf839c5478c28e767c61ee879f4e7882422" + url: "https://pub.dev" + source: hosted + version: "3.0.7" + vector_graphics: + dependency: transitive + description: + name: vector_graphics + sha256: "670f6e07aca990b4a2bcdc08a784193c4ccdd1932620244c3a86bb72a0eac67f" + url: "https://pub.dev" + source: hosted + version: "1.1.7" + vector_graphics_codec: + dependency: transitive + description: + name: vector_graphics_codec + sha256: "7451721781d967db9933b63f5733b1c4533022c0ba373a01bdd79d1a5457f69f" + url: "https://pub.dev" + source: hosted + version: "1.1.7" + vector_graphics_compiler: + dependency: transitive + description: + name: vector_graphics_compiler + sha256: "80a13c613c8bde758b1464a1755a7b3a8f2b6cec61fbf0f5a53c94c30f03ba2e" + url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "1.1.7" vector_math: dependency: transitive description: name: vector_math - url: "https://pub.dartlang.org" + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.4" very_good_analysis: dependency: "direct dev" description: name: very_good_analysis - url: "https://pub.dartlang.org" + sha256: "5e4ea72d2a9188630f0dd8f120a541de730090ef8863243fedca8267a84508b8" + url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "5.0.0+1" vm_service: dependency: transitive description: name: vm_service - url: "https://pub.dartlang.org" + sha256: f6deed8ed625c52864792459709183da231ebf66ff0cf09e69b573227c377efe + url: "https://pub.dev" source: hosted - version: "8.2.2" + version: "11.3.0" watcher: dependency: transitive description: name: watcher - url: "https://pub.dartlang.org" + sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8" + url: "https://pub.dev" source: hosted - version: "1.0.1" + version: "1.1.0" web_socket_channel: dependency: transitive description: name: web_socket_channel - url: "https://pub.dartlang.org" + sha256: d88238e5eac9a42bb43ca4e721edba3c08c6354d4a53063afaa568516217621b + url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.4.0" webdriver: dependency: transitive description: name: webdriver - url: "https://pub.dartlang.org" + sha256: "3c923e918918feeb90c4c9fdf1fe39220fa4c0e8e2c0fffaded174498ef86c49" + url: "https://pub.dev" source: hosted - version: "3.0.0" + version: "3.0.2" webview_flutter: dependency: "direct main" description: name: webview_flutter - url: "https://pub.dartlang.org" + sha256: "392c1d83b70fe2495de3ea2c84531268d5b8de2de3f01086a53334d8b6030a88" + url: "https://pub.dev" source: hosted - version: "2.8.0" + version: "3.0.4" webview_flutter_android: dependency: transitive description: name: webview_flutter_android - url: "https://pub.dartlang.org" + sha256: "8b3b2450e98876c70bfcead876d9390573b34b9418c19e28168b74f6cb252dbd" + url: "https://pub.dev" source: hosted - version: "2.10.1" + version: "2.10.4" webview_flutter_platform_interface: dependency: transitive description: name: webview_flutter_platform_interface - url: "https://pub.dartlang.org" + sha256: "812165e4e34ca677bdfbfa58c01e33b27fd03ab5fa75b70832d4b7d4ca1fa8cf" + url: "https://pub.dev" source: hosted - version: "1.9.3" + version: "1.9.5" webview_flutter_wkwebview: dependency: transitive description: name: webview_flutter_wkwebview - url: "https://pub.dartlang.org" + sha256: a5364369c758892aa487cbf59ea41d9edd10f9d9baf06a94e80f1bd1b4c7bbc0 + url: "https://pub.dev" source: hosted - version: "2.9.4" + version: "2.9.5" win32: dependency: transitive description: name: win32 - url: "https://pub.dartlang.org" + sha256: f2add6fa510d3ae152903412227bda57d0d5a8da61d2c39c1fb022c9429a41c0 + url: "https://pub.dev" source: hosted - version: "3.0.0" + version: "5.0.6" xdg_directories: dependency: transitive description: name: xdg_directories - url: "https://pub.dartlang.org" + sha256: f0c26453a2d47aa4c2570c6a033246a3fc62da2fe23c7ffdd0a7495086dc0247 + url: "https://pub.dev" source: hosted - version: "0.2.0+2" + version: "1.0.2" xml: dependency: transitive description: name: xml - url: "https://pub.dartlang.org" + sha256: "5bc72e1e45e941d825fd7468b9b4cc3b9327942649aeb6fc5cdbf135f0a86e84" + url: "https://pub.dev" source: hosted - version: "5.4.1" + version: "6.3.0" yaml: dependency: transitive description: name: yaml - url: "https://pub.dartlang.org" + sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" + url: "https://pub.dev" source: hosted - version: "3.1.1" + version: "3.1.2" sdks: - dart: ">=2.17.0 <3.0.0" - flutter: ">=3.0.0" + dart: ">=3.0.0 <4.0.0" + flutter: ">=3.10.0" diff --git a/pubspec.yaml b/pubspec.yaml index 7588b2f..eb9120f 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -6,7 +6,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+3 environment: - sdk: ">=2.12.0 <3.0.0" + sdk: ">=3.0.0 <4.0.0" dependencies: flutter: @@ -15,28 +15,30 @@ dependencies: cupertino_icons: ^1.0.4 ristek_material_component: ^0.0.15 states_rebuilder: ^6.1.0+1 - logger: ^1.0.0 - firebase_analytics: ^8.2.0 - firebase_crashlytics: ^2.4.4 - firebase_core: ^1.10.6 - google_fonts: ^2.2.0 + logger: ^2.0.1 + firebase_analytics: ^10.0.0 + firebase_crashlytics: ^3.0.0 + firebase_core: ^2.0.0 + google_fonts: ^4.0.4 share: ^2.0.4 - hive: ^1.4.4 + hive: ^2.2.3 path_provider: ^2.0.8 rxdart: ^0.27.1 shared_preferences: ^2.0.11 - flutter_svg: ^0.22.0 - intl: ^0.17.0 - webview_flutter: ^2.8.0 + flutter_svg: ^2.0.7 + intl: ^0.18.0 + webview_flutter: ^3.0.0 url_launcher: ^6.0.17 flutter_switch: ^0.3.2 universal_html: ^2.0.8 - dio: ^4.0.4 - material_design_icons_flutter: ^4.0.5955 - flutter_vector_icons: ^1.0.0 + dio: ^4.0.6 + material_design_icons_flutter: ^7.0.7296 + flutter_vector_icons: ^2.0.0 package_info: ^2.0.2 - shimmer: ^2.0.0 - envify: ^2.0.2 + shimmer: ^3.0.0 +# envify: ^2.0.3 + envied: ^0.3.0+3 + html: ^0.15.4 dev_dependencies: flutter_test: @@ -45,13 +47,14 @@ dev_dependencies: sdk: flutter # Help optimization. - very_good_analysis: ^2.4.0 + very_good_analysis: ^5.0.0+1 # provides a concrete way of generating files using Dart code. - build_runner: ^2.2.0 + build_runner: ^2.4.6 # See envify. - envify_generator: ^2.0.2 +# envify_generator: ^2.0.2 + envied_generator: ^0.3.0+3 flutter: