diff --git a/README.md b/README.md
index f92c709..adb25a6 100644
--- a/README.md
+++ b/README.md
@@ -1,37 +1,75 @@
-
-

+---
-

-
-
+ 
-
-## Skills
+# Tech Blog
-
+A Flutter-based tech blog application that uses GetX for state management and follows the MVC architecture pattern. The app allows users to browse and publish the latest news and podcasts in the world of technology and programming. Users can also create and share their own articles and podcasts.
+## Features
+- **GetX State Management**: Efficiently manage app state with the GetX package.
+- **MVC Architecture**: Structured project following the Model-View-Controller pattern.
+- **Tech News and Podcasts**: Browse the latest articles and podcasts related to technology and programming.
+- **User-Generated Content**: Users can publish their own articles and podcasts.
+- **Responsive UI**: Adaptive and responsive user interface for various devices.
-### Client App
-
+## Installation
- |
+Follow these steps to set up and run the project locally.
+### Prerequisites
+Ensure you have the following installed:
-### Backend
-
- 
- 
-
- |
+- Flutter SDK (version 3.24 or higher)
+- Dart SDK
+- Android Studio or Visual Studio Code with Flutter and Dart plugins
+- A physical device or emulator for testing
+
+### Steps
+
+1. **Clone the repository:**
+
+ ```bash
+ git clone https://github.com/MasoudMaghsodi/tech_blog.git
+ cd tech_blog
+ ```
+
+2. **Get the dependencies:**
+
+ ```bash
+ flutter pub get
+ ```
+
+3. **Run the application:**
+
+ ```bash
+ flutter run
+ ```
+
+ This command will build and run the app on the connected device or emulator.
+
+## Usage
+
+- **Browse Content**: Explore the latest tech news and podcasts in the app.
+- **Publish Content**: Create and share your own articles or podcasts with other users.
+- **User Interaction**: Comment on and interact with published content.
+
+## Contributing
+
+Contributions are highly appreciated! If you’d like to contribute, please follow these steps:
+
+1. Fork the repository.
+2. Create a new branch (`git checkout -b feature/YourFeature`).
+3. Commit your changes (`git commit -m 'Add some feature'`).
+4. Push to the branch (`git push origin feature/YourFeature`).
+5. Open a pull request.
+
+Thank you for your time
+
+---
-
diff --git a/android/app/build.gradle b/android/app/build.gradle
index f393760..f2ba669 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -1,75 +1,58 @@
+plugins {
+ id "com.android.application"
+ id "kotlin-android"
+ // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
+ id "dev.flutter.flutter-gradle-plugin"
+}
+
def localProperties = new Properties()
-def localPropertiesFile = rootProject.file('local.properties')
+def localPropertiesFile = rootProject.file("local.properties")
if (localPropertiesFile.exists()) {
- localPropertiesFile.withReader('UTF-8') { reader ->
+ localPropertiesFile.withReader("UTF-8") { reader ->
localProperties.load(reader)
}
}
-def flutterRoot = localProperties.getProperty('flutter.sdk')
-if (flutterRoot == null) {
- throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
-}
-
-def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
+def flutterVersionCode = localProperties.getProperty("flutter.versionCode")
if (flutterVersionCode == null) {
- flutterVersionCode = '1'
+ flutterVersionCode = "1"
}
-def flutterVersionName = localProperties.getProperty('flutter.versionName')
+def flutterVersionName = localProperties.getProperty("flutter.versionName")
if (flutterVersionName == null) {
- flutterVersionName = '1.0'
+ flutterVersionName = "1.0"
}
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
-apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
-
android {
- compileSdkVersion 33
-
- lintOptions {
- checkReleaseBuilds false
- abortOnError false
- }
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
- }
+ namespace = "com.example.tech_blog"
+ compileSdk = flutter.compileSdkVersion
+ ndkVersion = flutter.ndkVersion
- kotlinOptions {
- jvmTarget = '1.8'
- }
-
- sourceSets {
- main.java.srcDirs += 'src/main/kotlin'
+ compileOptions {
+ sourceCompatibility = JavaVersion.VERSION_1_8
+ targetCompatibility = JavaVersion.VERSION_1_8
}
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
- applicationId "com.example.tec"
- // Required by the Flutter WebView plugin.
- minSdkVersion 21
- targetSdkVersion flutter.targetSdkVersion
- versionCode flutterVersionCode.toInteger()
- versionName flutterVersionName
- multiDexEnabled true
-
+ applicationId = "com.example.tech_blog"
+ // You can update the following values to match your application needs.
+ // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
+ minSdk = 21
+ targetSdk = flutter.targetSdkVersion
+ versionCode = flutterVersionCode.toInteger()
+ versionName = flutterVersionName
}
-
+
buildTypes {
release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
- signingConfig signingConfigs.debug
+ signingConfig = signingConfigs.debug
}
}
}
flutter {
- source '../..'
-}
-
-dependencies {
- implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
+ source = "../.."
}
diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml
index 40ea015..399f698 100644
--- a/android/app/src/debug/AndroidManifest.xml
+++ b/android/app/src/debug/AndroidManifest.xml
@@ -1,6 +1,6 @@
-
-
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index b32ec03..1f148f6 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -1,18 +1,14 @@
-
-
-
+
-
-
-
+
+
+
+
+
+
+
diff --git a/android/app/src/main/kotlin/com/example/tech_blog/MainActivity.kt b/android/app/src/main/kotlin/com/example/tech_blog/MainActivity.kt
new file mode 100644
index 0000000..23426bd
--- /dev/null
+++ b/android/app/src/main/kotlin/com/example/tech_blog/MainActivity.kt
@@ -0,0 +1,5 @@
+package com.example.tech_blog
+
+import io.flutter.embedding.android.FlutterActivity
+
+class MainActivity: FlutterActivity()
diff --git a/android/app/src/main/res/drawable-hdpi/splash.png b/android/app/src/main/res/drawable-hdpi/splash.png
index c2b5bdf..021eca2 100644
Binary files a/android/app/src/main/res/drawable-hdpi/splash.png and b/android/app/src/main/res/drawable-hdpi/splash.png differ
diff --git a/android/app/src/main/res/drawable-mdpi/splash.png b/android/app/src/main/res/drawable-mdpi/splash.png
index 5fb07d5..fbc818d 100644
Binary files a/android/app/src/main/res/drawable-mdpi/splash.png and b/android/app/src/main/res/drawable-mdpi/splash.png differ
diff --git a/android/app/src/main/res/drawable-v21/background.png b/android/app/src/main/res/drawable-v21/background.png
index e29b3b5..3107d37 100644
Binary files a/android/app/src/main/res/drawable-v21/background.png and b/android/app/src/main/res/drawable-v21/background.png differ
diff --git a/android/app/src/main/res/drawable-v21/launch_background.xml b/android/app/src/main/res/drawable-v21/launch_background.xml
index 3fe6b2e..3cc4948 100644
--- a/android/app/src/main/res/drawable-v21/launch_background.xml
+++ b/android/app/src/main/res/drawable-v21/launch_background.xml
@@ -6,4 +6,4 @@
-
-
\ No newline at end of file
+
diff --git a/android/app/src/main/res/drawable-xhdpi/splash.png b/android/app/src/main/res/drawable-xhdpi/splash.png
index f324798..d52babf 100644
Binary files a/android/app/src/main/res/drawable-xhdpi/splash.png and b/android/app/src/main/res/drawable-xhdpi/splash.png differ
diff --git a/android/app/src/main/res/drawable-xxhdpi/splash.png b/android/app/src/main/res/drawable-xxhdpi/splash.png
index 86e3ada..016ba2d 100644
Binary files a/android/app/src/main/res/drawable-xxhdpi/splash.png and b/android/app/src/main/res/drawable-xxhdpi/splash.png differ
diff --git a/android/app/src/main/res/drawable/background.png b/android/app/src/main/res/drawable/background.png
index e29b3b5..3107d37 100644
Binary files a/android/app/src/main/res/drawable/background.png and b/android/app/src/main/res/drawable/background.png differ
diff --git a/android/app/src/main/res/drawable/launch_background.xml b/android/app/src/main/res/drawable/launch_background.xml
index 3fe6b2e..3cc4948 100644
--- a/android/app/src/main/res/drawable/launch_background.xml
+++ b/android/app/src/main/res/drawable/launch_background.xml
@@ -6,4 +6,4 @@
-
-
\ No newline at end of file
+
diff --git a/android/app/src/main/res/values-night-v31/styles.xml b/android/app/src/main/res/values-night-v31/styles.xml
index 5cb13c8..a3653cb 100644
--- a/android/app/src/main/res/values-night-v31/styles.xml
+++ b/android/app/src/main/res/values-night-v31/styles.xml
@@ -3,8 +3,9 @@
diff --git a/android/build.gradle b/android/build.gradle
index 4256f91..d2ffbff 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -1,16 +1,3 @@
-buildscript {
- ext.kotlin_version = '1.6.10'
- repositories {
- google()
- mavenCentral()
- }
-
- dependencies {
- classpath 'com.android.tools.build:gradle:4.1.0'
- classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
- }
-}
-
allprojects {
repositories {
google()
@@ -18,14 +5,14 @@ allprojects {
}
}
-rootProject.buildDir = '../build'
+rootProject.buildDir = "../build"
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
- project.evaluationDependsOn(':app')
+ project.evaluationDependsOn(":app")
}
-task clean(type: Delete) {
+tasks.register("clean", Delete) {
delete rootProject.buildDir
}
diff --git a/android/gradle.properties b/android/gradle.properties
index 94adc3a..3b5b324 100644
--- a/android/gradle.properties
+++ b/android/gradle.properties
@@ -1,3 +1,3 @@
-org.gradle.jvmargs=-Xmx1536M
+org.gradle.jvmargs=-Xmx4G -XX:+HeapDumpOnOutOfMemoryError
android.useAndroidX=true
android.enableJetifier=true
diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties
index cc5527d..e1ca574 100644
--- a/android/gradle/wrapper/gradle-wrapper.properties
+++ b/android/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,5 @@
-#Fri Jun 23 08:50:38 CEST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.3-all.zip
diff --git a/android/settings.gradle b/android/settings.gradle
index 44e62bc..536165d 100644
--- a/android/settings.gradle
+++ b/android/settings.gradle
@@ -1,11 +1,25 @@
-include ':app'
+pluginManagement {
+ def flutterSdkPath = {
+ def properties = new Properties()
+ file("local.properties").withInputStream { properties.load(it) }
+ def flutterSdkPath = properties.getProperty("flutter.sdk")
+ assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
+ return flutterSdkPath
+ }()
-def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
-def properties = new Properties()
+ includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
-assert localPropertiesFile.exists()
-localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
+ repositories {
+ google()
+ mavenCentral()
+ gradlePluginPortal()
+ }
+}
-def flutterSdkPath = properties.getProperty("flutter.sdk")
-assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
-apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"
+plugins {
+ id "dev.flutter.flutter-plugin-loader" version "1.0.0"
+ id "com.android.application" version "7.3.0" apply false
+ id "org.jetbrains.kotlin.android" version "1.7.10" apply false
+}
+
+include ":app"
diff --git a/devtools_options.yaml b/devtools_options.yaml
new file mode 100644
index 0000000..fa0b357
--- /dev/null
+++ b/devtools_options.yaml
@@ -0,0 +1,3 @@
+description: This file stores settings for Dart & Flutter DevTools.
+documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states
+extensions:
diff --git a/ios/Flutter/AppFrameworkInfo.plist b/ios/Flutter/AppFrameworkInfo.plist
index 8d4492f..7c56964 100644
--- a/ios/Flutter/AppFrameworkInfo.plist
+++ b/ios/Flutter/AppFrameworkInfo.plist
@@ -21,6 +21,6 @@
CFBundleVersion
1.0
MinimumOSVersion
- 9.0
+ 12.0
diff --git a/ios/Podfile b/ios/Podfile
index 88359b2..2c068c4 100644
--- a/ios/Podfile
+++ b/ios/Podfile
@@ -1,5 +1,5 @@
# Uncomment this line to define a global platform for your project
-# platform :ios, '11.0'
+platform :ios, '12.0'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
diff --git a/ios/Podfile.lock b/ios/Podfile.lock
new file mode 100644
index 0000000..859d4d7
--- /dev/null
+++ b/ios/Podfile.lock
@@ -0,0 +1,159 @@
+PODS:
+ - audio_session (0.0.1):
+ - Flutter
+ - DKImagePickerController/Core (4.3.9):
+ - DKImagePickerController/ImageDataManager
+ - DKImagePickerController/Resource
+ - DKImagePickerController/ImageDataManager (4.3.9)
+ - DKImagePickerController/PhotoGallery (4.3.9):
+ - DKImagePickerController/Core
+ - DKPhotoGallery
+ - DKImagePickerController/Resource (4.3.9)
+ - DKPhotoGallery (0.0.19):
+ - DKPhotoGallery/Core (= 0.0.19)
+ - DKPhotoGallery/Model (= 0.0.19)
+ - DKPhotoGallery/Preview (= 0.0.19)
+ - DKPhotoGallery/Resource (= 0.0.19)
+ - SDWebImage
+ - SwiftyGif
+ - DKPhotoGallery/Core (0.0.19):
+ - DKPhotoGallery/Model
+ - DKPhotoGallery/Preview
+ - SDWebImage
+ - SwiftyGif
+ - DKPhotoGallery/Model (0.0.19):
+ - SDWebImage
+ - SwiftyGif
+ - DKPhotoGallery/Preview (0.0.19):
+ - DKPhotoGallery/Model
+ - DKPhotoGallery/Resource
+ - SDWebImage
+ - SwiftyGif
+ - DKPhotoGallery/Resource (0.0.19):
+ - SDWebImage
+ - SwiftyGif
+ - file_picker (0.0.1):
+ - DKImagePickerController/PhotoGallery
+ - Flutter
+ - Flutter (1.0.0)
+ - flutter_inappwebview_ios (0.0.1):
+ - Flutter
+ - flutter_inappwebview_ios/Core (= 0.0.1)
+ - OrderedSet (~> 5.0)
+ - flutter_inappwebview_ios/Core (0.0.1):
+ - Flutter
+ - OrderedSet (~> 5.0)
+ - flutter_keyboard_visibility (0.0.1):
+ - Flutter
+ - just_audio (0.0.1):
+ - Flutter
+ - OrderedSet (5.0.0)
+ - package_info_plus (0.4.5):
+ - Flutter
+ - path_provider_foundation (0.0.1):
+ - Flutter
+ - FlutterMacOS
+ - pointer_interceptor_ios (0.0.1):
+ - Flutter
+ - SDWebImage (5.19.6):
+ - SDWebImage/Core (= 5.19.6)
+ - SDWebImage/Core (5.19.6)
+ - share_plus (0.0.1):
+ - Flutter
+ - sqflite (0.0.3):
+ - Flutter
+ - FlutterMacOS
+ - SwiftyGif (5.4.5)
+ - url_launcher_ios (0.0.1):
+ - Flutter
+ - video_player_avfoundation (0.0.1):
+ - Flutter
+ - FlutterMacOS
+ - wakelock_plus (0.0.1):
+ - Flutter
+ - webview_flutter_wkwebview (0.0.1):
+ - Flutter
+ - FlutterMacOS
+
+DEPENDENCIES:
+ - audio_session (from `.symlinks/plugins/audio_session/ios`)
+ - file_picker (from `.symlinks/plugins/file_picker/ios`)
+ - Flutter (from `Flutter`)
+ - flutter_inappwebview_ios (from `.symlinks/plugins/flutter_inappwebview_ios/ios`)
+ - flutter_keyboard_visibility (from `.symlinks/plugins/flutter_keyboard_visibility/ios`)
+ - just_audio (from `.symlinks/plugins/just_audio/ios`)
+ - package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
+ - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
+ - pointer_interceptor_ios (from `.symlinks/plugins/pointer_interceptor_ios/ios`)
+ - share_plus (from `.symlinks/plugins/share_plus/ios`)
+ - sqflite (from `.symlinks/plugins/sqflite/darwin`)
+ - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
+ - video_player_avfoundation (from `.symlinks/plugins/video_player_avfoundation/darwin`)
+ - wakelock_plus (from `.symlinks/plugins/wakelock_plus/ios`)
+ - webview_flutter_wkwebview (from `.symlinks/plugins/webview_flutter_wkwebview/darwin`)
+
+SPEC REPOS:
+ trunk:
+ - DKImagePickerController
+ - DKPhotoGallery
+ - OrderedSet
+ - SDWebImage
+ - SwiftyGif
+
+EXTERNAL SOURCES:
+ audio_session:
+ :path: ".symlinks/plugins/audio_session/ios"
+ file_picker:
+ :path: ".symlinks/plugins/file_picker/ios"
+ Flutter:
+ :path: Flutter
+ flutter_inappwebview_ios:
+ :path: ".symlinks/plugins/flutter_inappwebview_ios/ios"
+ flutter_keyboard_visibility:
+ :path: ".symlinks/plugins/flutter_keyboard_visibility/ios"
+ just_audio:
+ :path: ".symlinks/plugins/just_audio/ios"
+ package_info_plus:
+ :path: ".symlinks/plugins/package_info_plus/ios"
+ path_provider_foundation:
+ :path: ".symlinks/plugins/path_provider_foundation/darwin"
+ pointer_interceptor_ios:
+ :path: ".symlinks/plugins/pointer_interceptor_ios/ios"
+ share_plus:
+ :path: ".symlinks/plugins/share_plus/ios"
+ sqflite:
+ :path: ".symlinks/plugins/sqflite/darwin"
+ url_launcher_ios:
+ :path: ".symlinks/plugins/url_launcher_ios/ios"
+ video_player_avfoundation:
+ :path: ".symlinks/plugins/video_player_avfoundation/darwin"
+ wakelock_plus:
+ :path: ".symlinks/plugins/wakelock_plus/ios"
+ webview_flutter_wkwebview:
+ :path: ".symlinks/plugins/webview_flutter_wkwebview/darwin"
+
+SPEC CHECKSUMS:
+ audio_session: 088d2483ebd1dc43f51d253d4a1c517d9a2e7207
+ DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c
+ DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60
+ file_picker: 09aa5ec1ab24135ccd7a1621c46c84134bfd6655
+ Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
+ flutter_inappwebview_ios: 97215cf7d4677db55df76782dbd2930c5e1c1ea0
+ flutter_keyboard_visibility: 0339d06371254c3eb25eeb90ba8d17dca8f9c069
+ just_audio: baa7252489dbcf47a4c7cc9ca663e9661c99aafa
+ OrderedSet: aaeb196f7fef5a9edf55d89760da9176ad40b93c
+ package_info_plus: 58f0028419748fad15bf008b270aaa8e54380b1c
+ path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
+ pointer_interceptor_ios: 508241697ff0947f853c061945a8b822463947c1
+ SDWebImage: a79252b60f4678812d94316c91da69ec83089c9f
+ share_plus: 8875f4f2500512ea181eef553c3e27dba5135aad
+ sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec
+ SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4
+ url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe
+ video_player_avfoundation: 7c6c11d8470e1675df7397027218274b6d2360b3
+ wakelock_plus: 78ec7c5b202cab7761af8e2b2b3d0671be6c4ae1
+ webview_flutter_wkwebview: 0982481e3d9c78fd5c6f62a002fcd24fc791f1e4
+
+PODFILE CHECKSUM: 4e8f8b2be68aeea4c0d5beb6ff1e79fface1d048
+
+COCOAPODS: 1.15.2
diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj
index 56937a1..a2e88d5 100644
--- a/ios/Runner.xcodeproj/project.pbxproj
+++ b/ios/Runner.xcodeproj/project.pbxproj
@@ -3,11 +3,12 @@
archiveVersion = 1;
classes = {
};
- objectVersion = 50;
+ objectVersion = 54;
objects = {
/* Begin PBXBuildFile section */
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
+ 1E99759F9733732E231458BD /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4AA5EE30C2AC9375EB00B994 /* Pods_Runner.framework */; };
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
@@ -29,12 +30,16 @@
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
+ 05CD3041F8910463EDD4E340 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; };
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; };
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; };
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; };
+ 4AA5EE30C2AC9375EB00B994 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 709807EBA28DDB225AE98A9C /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; };
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; };
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; };
+ 7D4D31B4BE19867E9F9F5BDD /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; };
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; };
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; };
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -49,6 +54,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ 1E99759F9733732E231458BD /* Pods_Runner.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -72,6 +78,8 @@
9740EEB11CF90186004384FC /* Flutter */,
97C146F01CF9000F007C117D /* Runner */,
97C146EF1CF9000F007C117D /* Products */,
+ F8BA37999CAC219FBB07A0EC /* Pods */,
+ A08877115AB2591F4F038B9A /* Frameworks */,
);
sourceTree = "";
};
@@ -98,6 +106,25 @@
path = Runner;
sourceTree = "";
};
+ A08877115AB2591F4F038B9A /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 4AA5EE30C2AC9375EB00B994 /* Pods_Runner.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+ F8BA37999CAC219FBB07A0EC /* Pods */ = {
+ isa = PBXGroup;
+ children = (
+ 7D4D31B4BE19867E9F9F5BDD /* Pods-Runner.debug.xcconfig */,
+ 709807EBA28DDB225AE98A9C /* Pods-Runner.release.xcconfig */,
+ 05CD3041F8910463EDD4E340 /* Pods-Runner.profile.xcconfig */,
+ );
+ name = Pods;
+ path = Pods;
+ sourceTree = "";
+ };
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
@@ -105,12 +132,14 @@
isa = PBXNativeTarget;
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
buildPhases = (
+ 4DF0E1B0BCF395BAA2C3390D /* [CP] Check Pods Manifest.lock */,
9740EEB61CF901F6004384FC /* Run Script */,
97C146EA1CF9000F007C117D /* Sources */,
97C146EB1CF9000F007C117D /* Frameworks */,
97C146EC1CF9000F007C117D /* Resources */,
9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
+ C68376B0BCC92054EF23ACC3 /* [CP] Embed Pods Frameworks */,
);
buildRules = (
);
@@ -127,7 +156,7 @@
97C146E61CF9000F007C117D /* Project object */ = {
isa = PBXProject;
attributes = {
- LastUpgradeCheck = 1300;
+ LastUpgradeCheck = 1510;
ORGANIZATIONNAME = "";
TargetAttributes = {
97C146ED1CF9000F007C117D = {
@@ -171,10 +200,12 @@
/* Begin PBXShellScriptBuildPhase section */
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
isa = PBXShellScriptBuildPhase;
+ alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
+ "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}",
);
name = "Thin Binary";
outputPaths = (
@@ -183,8 +214,31 @@
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
};
+ 4DF0E1B0BCF395BAA2C3390D /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
+ };
9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
+ alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
@@ -197,6 +251,23 @@
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
};
+ C68376B0BCC92054EF23ACC3 /* [CP] Embed Pods Frameworks */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
+ );
+ name = "[CP] Embed Pods Frameworks";
+ outputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
@@ -272,7 +343,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
@@ -349,7 +420,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
@@ -398,7 +469,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
index c87d15a..5e31d3d 100644
--- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
+++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
@@ -1,6 +1,6 @@
+
+
diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift
index 70693e4..b636303 100644
--- a/ios/Runner/AppDelegate.swift
+++ b/ios/Runner/AppDelegate.swift
@@ -1,7 +1,7 @@
import UIKit
import Flutter
-@UIApplicationMain
+@main
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist
index 1358c4b..1dddffe 100644
--- a/ios/Runner/Info.plist
+++ b/ios/Runner/Info.plist
@@ -45,5 +45,9 @@
UIStatusBarHidden
-
-
\ No newline at end of file
+ CADisableMinimumFrameDurationOnPhone
+
+ UIApplicationSupportsIndirectInputEvents
+
+
+
diff --git a/lib/component/dimens.dart b/lib/component/dimens.dart
index e8714eb..a5ec53f 100644
--- a/lib/component/dimens.dart
+++ b/lib/component/dimens.dart
@@ -1,14 +1,14 @@
-
import 'package:get/get.dart';
class Dimens {
+ Dimens._();
+
+ static double bodyMargin = Get.width / 10;
+ static double halfBodyMargin = (Get.width / 10) / 2;
- static double bodyMargin = Get.width/10;
- static double halfBodyMargin = (Get.width/10)/2;
-
static double small = 8.0;
static double medium = 16.0;
static double large = 32.0;
static double xlarge = 64.0;
static double xxlarge = 150.0;
-}
\ No newline at end of file
+}
diff --git a/lib/component/my_component.dart b/lib/component/my_component.dart
index b41002a..337a4e7 100644
--- a/lib/component/my_component.dart
+++ b/lib/component/my_component.dart
@@ -121,11 +121,14 @@ PreferredSize appBar(String title) {
child: Container(
height: 40,
width: 40,
- decoration: BoxDecoration(
- color: SolidColors.primaryColor.withBlue(100),
+ decoration: const BoxDecoration(
+ color: SolidColors.primaryColor,
shape: BoxShape.circle,
),
- child: const Icon(Icons.keyboard_arrow_right_rounded),
+ child: const Icon(
+ Icons.keyboard_arrow_right_rounded,
+ color: Colors.white,
+ ),
),
),
),
diff --git a/lib/component/searchBar.dart b/lib/component/search_bar.dart
similarity index 100%
rename from lib/component/searchBar.dart
rename to lib/component/search_bar.dart
diff --git a/lib/constant/api_constant.dart b/lib/constant/api_constant.dart
index f539d79..48eb034 100644
--- a/lib/constant/api_constant.dart
+++ b/lib/constant/api_constant.dart
@@ -1,16 +1,19 @@
-class ApiUrlConstant{
+class ApiUrlConstant {
ApiUrlConstant._();
- static const hostDlUrl ="https://techblog.sasansafari.com";
- static const baseUrl ="https://techblog.sasansafari.com/Techblog/api/";
- static const getHomeItems =baseUrl + "home/?command=index";
- static const getArticleList =baseUrl + "article/get.php?command=new&user_id=";
- static const publishedByMe =baseUrl + "article/get.php?command=published_by_me&user_id=";
- static const getArticleInfo =baseUrl + "article/get.php?command=info&id=1&user_id=1";
- static const postRegister =baseUrl + "register/action.php";
- static const articlePost =baseUrl + "article/post.php";
- static const podcastFiles =baseUrl + "podcast/get.php?command=get_files&podcats_id=";
- static const postPodcast = baseUrl + "podcast/post.php";
- static const PublishedByMePodcast = baseUrl + "podcast/get.php?command=published_by_me&user_id=";
-
+ static const hostDlUrl = "https://techblog.sasansafari.com";
+ static const baseUrl = "https://techblog.sasansafari.com/Techblog/api/";
+ static const getHomeItems = "${baseUrl}home/?command=index";
+ static const getArticleList =
+ "${baseUrl}article/get.php?command=new&user_id=";
+ static const publishedByMe =
+ "${baseUrl}article/get.php?command=published_by_me&user_id=";
+ static const getArticleInfo =
+ "${baseUrl}article/get.php?command=info&id=1&user_id=1";
+ static const postRegister = "${baseUrl}register/action.php";
+ static const articlePost = "${baseUrl}article/post.php";
+ static const podcastFiles =
+ "${baseUrl}podcast/get.php?command=get_files&podcats_id=";
+ static const postPodcast = "${baseUrl}podcast/post.php";
+ static const publishedByMePodcast =
+ "${baseUrl}podcast/get.php?command=published_by_me&user_id=";
}
-
diff --git a/lib/constant/api_key_constants.dart b/lib/constant/api_key_constants.dart
index a213bea..ea8b81b 100644
--- a/lib/constant/api_key_constants.dart
+++ b/lib/constant/api_key_constants.dart
@@ -1,39 +1,39 @@
-
-class ApiArticleKeyConstant{
-
- static const title ="title";
- static const content ="content";
- static const catId ="cat_id";
- static const userId ="user_id";
- static const image ="image";
- static const command ="command";
- static const tagList ="tag_list";
-
+class ApiArticleKeyConstant {
+ ApiArticleKeyConstant._();
+ static const title = "title";
+ static const content = "content";
+ static const catId = "cat_id";
+ static const userId = "user_id";
+ static const image = "image";
+ static const command = "command";
+ static const tagList = "tag_list";
}
//storPodcastTitle
-class ApiPodcastTitleKyConstants{
- static const userId ="user_id";
- static const title ="title";
- static const catId ="cat_id";
- static const command ="command";
+class ApiPodcastTitleKyConstants {
+ ApiPodcastTitleKyConstants._();
+ static const userId = "user_id";
+ static const title = "title";
+ static const catId = "cat_id";
+ static const command = "command";
}
-
//storPodcastFile
-class ApiPodcastFileKyConstants{
- static const podcastId ="podcast_id";
- static const title ="title";
- static const length ="length";
- static const file ="file";
- static const command ="command";
+class ApiPodcastFileKyConstants {
+ ApiPodcastFileKyConstants._();
+ static const podcastId = "podcast_id";
+ static const title = "title";
+ static const length = "length";
+ static const file = "file";
+ static const command = "command";
}
//updatePodcastPoster
-class ApiPodcastUpdateKyConstants{
- static const userId ="user_id";
- static const podcastId ="podcast_id";
- static const image ="image";
- static const file ="file";
- static const command ="command";
-}
\ No newline at end of file
+class ApiPodcastUpdateKyConstants {
+ ApiPodcastUpdateKyConstants._();
+ static const userId = "user_id";
+ static const podcastId = "podcast_id";
+ static const image = "image";
+ static const file = "file";
+ static const command = "command";
+}
diff --git a/lib/constant/commands.dart b/lib/constant/commands.dart
index 0cafb5c..83f02d9 100644
--- a/lib/constant/commands.dart
+++ b/lib/constant/commands.dart
@@ -1,8 +1,7 @@
-class Commands{
-
-
+class Commands {
+ Commands._();
static const String store = "store";
- static const String storTitle = "store_title";
+ static const String storTitle = "store_title";
static const String storFile = "store_file";
static const String storUpdate = "update_poster";
-}
\ No newline at end of file
+}
diff --git a/lib/constant/my_colors.dart b/lib/constant/my_colors.dart
index a2e729e..a4609da 100644
--- a/lib/constant/my_colors.dart
+++ b/lib/constant/my_colors.dart
@@ -1,6 +1,7 @@
import 'package:flutter/cupertino.dart';
class SolidColors {
+ SolidColors._();
static const Color posterSubTitle = Color.fromARGB(200, 255, 255, 255);
static const Color posterTitle = Color.fromARGB(255, 255, 255, 255);
static const Color primaryColor = Color.fromARGB(255, 68, 4, 87);
@@ -26,11 +27,11 @@ class SolidColors {
static const Color yelowColor = Color.fromARGB(255, 255, 235, 59);
static const Color erorColor = Color.fromARGB(255, 227, 10, 10);
static const Color lightBackColor = Color.fromARGB(255, 255, 255, 255);
- static const Color minutesColorColor = Color.fromARGB(255, 203, 202, 202);
-
+ static const Color minutesColorColor = Color.fromARGB(255, 203, 202, 202);
}
class GradientColors {
+ GradientColors._();
static const List bottomNav = [
Color.fromARGB(255, 25, 0, 94),
Color.fromARGB(255, 68, 4, 87)
@@ -57,13 +58,4 @@ class GradientColors {
Color.fromARGB(255, 46, 3, 71),
Color.fromARGB(0, 0, 0, 0)
];
-
-
}
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/lib/constant/my_strings.dart b/lib/constant/my_strings.dart
index 03e4cba..fa58fec 100644
--- a/lib/constant/my_strings.dart
+++ b/lib/constant/my_strings.dart
@@ -1,6 +1,7 @@
class MyStrings {
+ MyStrings._();
static const String techBlogGithubUrl =
- "https://github.com/sasansafari/techblog";
+ "https://github.com/MasoudMaghsodi/tech_blog";
static const String viewHotestBlog = "مشاهده داغ ترین نوشته ها ";
static const String viewHotestPodCasts = "مشاهده داغ ترین پادکست ها";
static const String relatedArticle = "نوشته های مرتبط";
@@ -27,7 +28,7 @@ class MyStrings {
www.sasansafari.com
""";
- static const String podcastEmpty = """
+ static const String podcastEmpty = """
هنوز هیچ پادکست ای به جامعه گیک های فارسی
اضافه نکردی !!!
@@ -46,61 +47,60 @@ www.sasansafari.com
static String visit = 'بازدید';
static String titleAppBarManageArticle = "مدیریت مقاله ها";
- static String ManagePodcast = "مدیریت پادکست ها";
+ static String managePodcast = "مدیریت پادکست ها";
static String titleAppBarArticleContentEditor = "نوشتن/ویرایش مقاله ";
static String hintArticleContentEditor = "میتونی مقالهتو اینجا بنویسی...";
static String textManageArticle = "بریم برای نوشتن یه مقاله باحال";
- static String titleDialogSingleManageArticle ="عنوان مقاله";
- static String hintTextSingleManageArticle ="اینجا بنویس";
- static String save ="ثبت";
- static String selectImage ="انتخاب تصویر";
- static String editTitleArticle ="ویرایش عنوان مقاله";
- static String editTitlePodcast ="ویرایش عنوان پادکست";
- static String editMainTextArticle ='ویرایش متن اصلی مقاله';
- static String selectCategory ="انتخاب دسته بندی";
- static String noCategorySelected ="هیچ دسته بندی انتخاب نشده";
+ static String titleDialogSingleManageArticle = "عنوان مقاله";
+ static String hintTextSingleManageArticle = "اینجا بنویس";
+ static String save = "ثبت";
+ static String selectImage = "انتخاب تصویر";
+ static String editTitleArticle = "ویرایش عنوان مقاله";
+ static String editTitlePodcast = "ویرایش عنوان پادکست";
+ static String editMainTextArticle = 'ویرایش متن اصلی مقاله';
+ static String selectCategory = "انتخاب دسته بندی";
+ static String noCategorySelected = "هیچ دسته بندی انتخاب نشده";
static String wait = "ٌصبر کنید ...";
static String sendText = "ارسال مطلب";
static String anonymousText = "ناشناس";
static String writePodcast = "write podcast";
static String titleArticleText = "مقالات";
- static String userProfile = "پروفایل کاربری";
- static String aboutTec = "درباره تکبلاگ";
- static String shareTec = "اشتراک گذاری تک بلاگ";
- static String tecIngithub = "تکبلاگ در گیت هاب";
- static String shareKnowledge = "دونسته هات رو با بقیه به اشتراک بذار ...";
- static String gigTech = """
+ static String userProfile = "پروفایل کاربری";
+ static String aboutTec = "درباره تکبلاگ";
+ static String shareTec = "اشتراک گذاری تک بلاگ";
+ static String tecIngithub = "تکبلاگ در گیت هاب";
+ static String shareKnowledge = "دونسته هات رو با بقیه به اشتراک بذار ...";
+ static String gigTech = """
فکر کن !! اینجا بودنت به این معناست که یک گیک تکنولوژی هستی
دونسته هات رو با جامعهی گیک های فارسی زبان به اشتراک بذار..
""";
- static String nameFatemeAmiri = "فاطمه امیری";
- static String gmailFatemeAmiri = "fatemeamiri@gmail.com";
- static String exit = "خروج";
- static String cancel = "لغو";
- static String error = "خطا";
- static String errorText = "Eror";
- static String youAlreadyLeft = "قبلا خارج شدی !!";
- static String areYouSureExit ="آیا از خروج خود مطمئن هستید ؟";
- static String addNewPodcast ="اضافه کردن یک پادکست جدید";
- static String addNewFile ="اضافه کردن فایل";
- static String frilance ="بخش چهارم : فریلنسر دیوانه";
- static String meaningFullTitle ="لطفا یک عنوان پرمعنا انتخاب کن";
- static String verification ="تایید";
- static String later="بعدا";
- static String minute="دقیقه";
- static String houre="ساعت";
- static String isEmail="isEmail:";
- static String tecEmail="techblog@gmail.com";
- static String enterEmaile= "لطفا ایمیل خود را به درستی وارد کنید";
- static String formatEmailNotCorrect= "فرمت ایمیل درست نمیباشد, لطفا ایمیل خود را به درستی وارد کنید";
- static String selectAudioFile="انتخاب فابل صوتی";
- static String enterNumber = "Enter Number";
- static String continuation = "ادامه";
- static String letsGo = "بزن بریم";
- static String stars = "******";
- static String nameAndFamilyName = "نام و نام خانوادگی";
- static String addNewTimeFile="لطفا زمان و فایل قسمت جدید پادکست رو وارد کن";
-
-
+ static String nameFatemeAmiri = "مسعود مقصودی";
+ static String gmailFatemeAmiri = "magsodi333@gmail.com";
+ static String exit = "خروج";
+ static String cancel = "لغو";
+ static String error = "خطا";
+ static String errorText = "Eror";
+ static String youAlreadyLeft = "قبلا خارج شدی !!";
+ static String areYouSureExit = "آیا از خروج خود مطمئن هستید ؟";
+ static String addNewPodcast = "اضافه کردن یک پادکست جدید";
+ static String addNewFile = "اضافه کردن فایل";
+ static String frilance = "بخش چهارم : فریلنسر دیوانه";
+ static String meaningFullTitle = "لطفا یک عنوان پرمعنا انتخاب کن";
+ static String verification = "تایید";
+ static String later = "بعدا";
+ static String minute = "دقیقه";
+ static String houre = "ساعت";
+ static String isEmail = "isEmail:";
+ static String tecEmail = "techblog@gmail.com";
+ static String enterEmaile = "لطفا ایمیل خود را به درستی وارد کنید";
+ static String formatEmailNotCorrect =
+ "فرمت ایمیل درست نمیباشد, لطفا ایمیل خود را به درستی وارد کنید";
+ static String selectAudioFile = "انتخاب فابل صوتی";
+ static String enterNumber = "Enter Number";
+ static String continuation = "ادامه";
+ static String letsGo = "بزن بریم";
+ static String stars = "******";
+ static String nameAndFamilyName = "نام و نام خانوادگی";
+ static String addNewTimeFile = "لطفا زمان و فایل قسمت جدید پادکست رو وارد کن";
}
diff --git a/lib/constant/storage_const.dart b/lib/constant/storage_const.dart
index cad8437..72e4e4d 100644
--- a/lib/constant/storage_const.dart
+++ b/lib/constant/storage_const.dart
@@ -1,12 +1,10 @@
import 'package:get_storage/get_storage.dart';
+
class BoxStorage {
static GetStorage box = GetStorage();
}
-class StorageKey{
-
-static String token ="token";
-static String userId ="userId";
+class StorageKey {
+ static String token = "token";
+ static String userId = "userId";
}
-
-
diff --git a/lib/controller/article/list_article_controller.dart b/lib/controller/article/list_article_controller.dart
index 24e19d1..0a4c54f 100644
--- a/lib/controller/article/list_article_controller.dart
+++ b/lib/controller/article/list_article_controller.dart
@@ -1,6 +1,3 @@
-import 'dart:developer';
-
-import 'package:flutter/foundation.dart';
import 'package:get/get.dart';
import 'package:tec/constant/api_constant.dart';
import 'package:tec/models/article_model.dart';
@@ -18,8 +15,7 @@ class ListArticleController extends GetxController {
getList() async {
loading.value = true;
- // ignore: todo
- //TODO get userid from getStorage ApiConstant.getArticleList+userid
+
var response = await DioService().getMethod(ApiUrlConstant.getArticleList);
if (response.statusCode == 200) {
@@ -33,8 +29,6 @@ class ListArticleController extends GetxController {
getArticleListWithTagsId(String id) async {
articleList.clear();
loading.value = true;
- // ignore: todo
- //TODO get userid from getStorage ApiConstant.getArticleList+userid
final queryParam = {
'command': 'get_articles_with_tag_id',
@@ -42,8 +36,9 @@ class ListArticleController extends GetxController {
'user_id': ''
};
- final uri = Uri.https(ApiUrlConstant.baseUrl, 'article/get.php?', queryParam);
-
+ final uri =
+ Uri.https(ApiUrlConstant.baseUrl, 'article/get.php?', queryParam);
+
var response = await DioService().getMethod(uri.toString());
if (response.statusCode == 200) {
diff --git a/lib/controller/article/manage_article_controller.dart b/lib/controller/article/manage_article_controller.dart
index d3ef29d..c09dff9 100644
--- a/lib/controller/article/manage_article_controller.dart
+++ b/lib/controller/article/manage_article_controller.dart
@@ -1,4 +1,3 @@
-import 'dart:developer';
import 'package:dio/dio.dart' as dio;
import 'package:flutter/cupertino.dart';
import 'package:get/get.dart';
@@ -23,9 +22,8 @@ class ManageArticleController extends GetxController {
Rx articleInfoModel = ArticleInfoModel(
MyStrings.titltArrticle,
MyStrings.editOrginalTextArticle,
- "",
- )
- .obs;
+ "",
+ ).obs;
@override
onInit() {
@@ -35,11 +33,8 @@ class ManageArticleController extends GetxController {
getManagedArticle() async {
loading.value = true;
- // ignore: todo
- //TODO get userid from getStorage ApiConstant.getArticleList+userid
- // var response = await DioService().getMethod(ApiConstant.publishedByMe+GetStorage().read(StorageKey.userId));
var response =
- await DioService().getMethod(ApiUrlConstant.publishedByMe + "1");
+ await DioService().getMethod("${ApiUrlConstant.publishedByMe}1");
if (response.statusCode == 200) {
response.data.forEach((element) {
@@ -69,9 +64,9 @@ class ManageArticleController extends GetxController {
ApiArticleKeyConstant.command: Commands.store,
ApiArticleKeyConstant.tagList: "[]"
};
+ // ignore: unused_local_variable
var response =
await DioService().postMethod(map, ApiUrlConstant.articlePost);
- log(response.data.toString());
loading.value = false;
}
}
diff --git a/lib/controller/article/single_article_controller.dart b/lib/controller/article/single_article_controller.dart
index 0fd733a..c318172 100644
--- a/lib/controller/article/single_article_controller.dart
+++ b/lib/controller/article/single_article_controller.dart
@@ -1,14 +1,12 @@
-import 'package:flutter/widgets.dart';
import 'package:get/get.dart';
import 'package:tec/constant/api_constant.dart';
import 'package:tec/models/article_info_model.dart';
import 'package:tec/models/article_model.dart';
import 'package:tec/models/tags_model.dart';
import 'package:tec/services/dio_service.dart';
-import 'package:tec/view/articles/single.dart';
-
+
import '../../route_manager/names.dart';
-
+
class SingleArticleController extends GetxController {
RxBool loading = false.obs;
RxInt id = RxInt(0);
@@ -19,20 +17,13 @@ class SingleArticleController extends GetxController {
getArticleInfo(var id) async {
articleInfoModel = ArticleInfoModel(null, null, null).obs;
-
-
+
Get.toNamed(NamedRoute.routeSingleArticle);
-
loading.value = true;
var userId = '';
- debugPrint(ApiUrlConstant.baseUrl +
- 'article/get.php?command=info&id=$id&user_id=$userId');
- // ignore: todo
- //TODO user id is hard code
-
- var response = await DioService().getMethod(ApiUrlConstant.baseUrl +
- 'article/get.php?command=info&id=$id&user_id=$userId');
+ var response = await DioService().getMethod(
+ '${ApiUrlConstant.baseUrl}article/get.php?command=info&id=$id&user_id=$userId');
if (response.statusCode == 200) {
articleInfoModel.value = ArticleInfoModel.fromJson(response.data);
diff --git a/lib/controller/file_controller.dart b/lib/controller/file_controller.dart
index f0e553e..05f8bed 100644
--- a/lib/controller/file_controller.dart
+++ b/lib/controller/file_controller.dart
@@ -1,10 +1,6 @@
-
-
import 'package:file_picker/file_picker.dart';
import 'package:get/get.dart';
-class FilePickerController extends GetxController{
-
- Rx file = PlatformFile(name: "nothing", size: 0).obs ;
-
-}
\ No newline at end of file
+class FilePickerController extends GetxController {
+ Rx file = PlatformFile(name: "nothing", size: 0).obs;
+}
diff --git a/lib/controller/podcast/manage_podcast_controller.dart b/lib/controller/podcast/manage_podcast_controller.dart
index 58ddafc..67697d3 100644
--- a/lib/controller/podcast/manage_podcast_controller.dart
+++ b/lib/controller/podcast/manage_podcast_controller.dart
@@ -1,8 +1,4 @@
-import 'dart:developer';
-import 'dart:io';
-
import 'package:dio/dio.dart' as dio;
-import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:get_storage/get_storage.dart';
@@ -17,7 +13,7 @@ import '../../constant/storage_const.dart';
class ManagePodcastController extends GetxController {
RxList podcastModel = RxList.empty();
-RxInt currentHourValue = 0.obs;
+ RxInt currentHourValue = 0.obs;
RxInt currentMinuteValue = 0.obs;
RxInt currentSecondeValue = 0.obs;
Rx podcastFileModel =
@@ -26,7 +22,6 @@ RxInt currentHourValue = 0.obs;
// var selectedTime = TimeOfDay.now().replacing(hour: 0,minute: 0).obs;
RxBool loading = false.obs;
TextEditingController titleTextEditingController = TextEditingController();
-
RxInt? input = 0.obs;
var userId = '';
@@ -49,7 +44,7 @@ RxInt currentHourValue = 0.obs;
var response =
await DioService().postMethod(map, ApiUrlConstant.postPodcast);
if (response.statusCode == 200) {
- SnackBar(
+ const SnackBar(
content: Text("با موفقیت انجام شد"),
);
}
@@ -67,11 +62,12 @@ RxInt currentHourValue = 0.obs;
ApiPodcastFileKyConstants.command: Commands.storFile,
ApiPodcastFileKyConstants.length: podcastFileModel.value.lenght,
};
+ // ignore: unused_local_variable
var response =
await DioService().postMethod(map, ApiUrlConstant.postPodcast);
}
- UpdatePodcast() async {
+ updatePodcast() async {
var fileController = Get.find();
loading.value = true;
Map map = {
@@ -82,6 +78,7 @@ RxInt currentHourValue = 0.obs;
ApiPodcastUpdateKyConstants.command: Commands.storUpdate,
ApiPodcastUpdateKyConstants.userId: GetStorage().read(StorageKey.userId),
};
+ // ignore: unused_local_variable
var response =
await DioService().postMethod(map, ApiUrlConstant.postPodcast);
}
diff --git a/lib/controller/podcast/single_podcast_cotroller.dart b/lib/controller/podcast/single_podcast_cotroller.dart
index 14013c3..7e04979 100644
--- a/lib/controller/podcast/single_podcast_cotroller.dart
+++ b/lib/controller/podcast/single_podcast_cotroller.dart
@@ -1,6 +1,4 @@
import 'dart:async';
-import 'dart:developer';
-
import 'package:get/get.dart';
import 'package:just_audio/just_audio.dart';
import 'package:tec/constant/api_constant.dart';
@@ -8,6 +6,7 @@ import 'package:tec/models/podcasts_file_model.dart';
import 'package:tec/services/dio_service.dart';
class SinglePodcastController extends GetxController {
+ // ignore: prefer_typing_uninitialized_variables
var id;
SinglePodcastController({this.id});
@@ -77,12 +76,19 @@ class SinglePodcastController extends GetxController {
progressState.value = player.position;
bufferState.value = player.bufferedPosition;
- debugPrint('TIMER :: ${progressState.value}');
}
});
}
-
+ timerCheck() {
+ if (player.playing) {
+ startProgress();
+ } else {
+ timer!.cancel();
+ progressState.value = const Duration(seconds: 0);
+ bufferState.value = const Duration(seconds: 0);
+ }
+ }
setLoopMode() {
if (isLoopAll.value) {
diff --git a/lib/controller/register_controller.dart b/lib/controller/register_controller.dart
index 7381c7a..77ee0a9 100644
--- a/lib/controller/register_controller.dart
+++ b/lib/controller/register_controller.dart
@@ -1,17 +1,12 @@
-import 'package:email_validator/email_validator.dart';
import 'package:flutter/material.dart';
-import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.dart';
import 'package:get_storage/get_storage.dart';
import 'package:tec/constant/api_constant.dart';
-import 'package:tec/gen/assets.gen.dart';
-import 'package:tec/route_manager/names.dart';
import 'package:tec/services/dio_service.dart';
import 'package:tec/view/main_screen/bottom_navigation.dart';
import 'package:tec/view/main_screen/main_screen.dart';
import 'package:tec/view/register/register_intro.dart';
-import '../constant/my_colors.dart';
import '../constant/storage_const.dart';
class RegisterController extends GetxController {
@@ -46,18 +41,12 @@ class RegisterController extends GetxController {
debugPrint(map.toString());
var response =
await DioService().postMethod(map, ApiUrlConstant.postRegister);
- debugPrint(response.data.toString());
var status = response.data['response'];
switch (status) {
case 'verified':
- // var box = GetStorage();
BoxStorage.box.write(StorageKey.token, response.data['token']);
BoxStorage.box.write(StorageKey.userId, response.data['user_id']);
-
- debugPrint("read::: " + BoxStorage.box.read(StorageKey.token));
- debugPrint("read::: " + BoxStorage.box.read(StorageKey.userId));
-
Get.offAll(const MainScreen());
break;
@@ -69,11 +58,12 @@ class RegisterController extends GetxController {
break;
}
}
- toggleLogin() {
- if (GetStorage().read(StorageKey.token) == null) {
- Get.to(RegisterIntro());
- } else {
- routeToWriteBottomSheet();
- }
- }
+
+ toggleLogin() {
+ if (GetStorage().read(StorageKey.token) == null) {
+ Get.to(RegisterIntro());
+ } else {
+ routeToWriteBottomSheet();
+ }
+ }
}
diff --git a/lib/main.dart b/lib/main.dart
index 55b3534..3d25859 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -9,7 +9,6 @@ import 'my_http_overrides.dart';
import 'route_manager/names.dart';
import 'route_manager/pages.dart';
-
Future main() async {
HttpOverrides.global = MyHttpOverrides();
@@ -29,7 +28,6 @@ class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return GetMaterialApp(
-
locale: const Locale('fa'),
theme: AppThemes.lightTheme,
debugShowCheckedModeBanner: false,
diff --git a/lib/my_http_overrides.dart b/lib/my_http_overrides.dart
index bd7897a..36ccf39 100644
--- a/lib/my_http_overrides.dart
+++ b/lib/my_http_overrides.dart
@@ -1,9 +1,10 @@
import 'dart:io';
-class MyHttpOverrides extends HttpOverrides{
+class MyHttpOverrides extends HttpOverrides {
@override
- HttpClient createHttpClient(SecurityContext? context){
+ HttpClient createHttpClient(SecurityContext? context) {
return super.createHttpClient(context)
- ..badCertificateCallback = (X509Certificate cert, String host, int port)=> true;
+ ..badCertificateCallback =
+ (X509Certificate cert, String host, int port) => true;
}
-}
\ No newline at end of file
+}
diff --git a/lib/route_manager/binding.dart b/lib/route_manager/binding.dart
index 4a8b50d..131b058 100644
--- a/lib/route_manager/binding.dart
+++ b/lib/route_manager/binding.dart
@@ -8,9 +8,7 @@ import 'package:tec/controller/article/single_article_controller.dart';
class ArticleBinding implements Bindings {
@override
void dependencies() {
- // ignore: todo
- // TODO: implement dependencies
- Get.put(ListArticleController());
+ Get.put(() => ListArticleController());
Get.lazyPut(() => SingleArticleController());
}
}
@@ -18,9 +16,6 @@ class ArticleBinding implements Bindings {
class ArticleManagerBinding implements Bindings {
@override
void dependencies() {
- // ignore: todo
- // TODO: implement dependencies
- // Get.put(ManageArticleController());
Get.put(ManageArticleController());
}
}
@@ -28,8 +23,6 @@ class ArticleManagerBinding implements Bindings {
class RegisterBinding implements Bindings {
@override
void dependencies() {
- // ignore: todo
- // TODO: implement dependencies
Get.put(RegisterController());
}
}
@@ -37,16 +30,13 @@ class RegisterBinding implements Bindings {
class SinglePodcastBinding implements Bindings {
@override
void dependencies() {
- // ignore: todo
- // TODO: implement dependencies
Get.put(SinglePodcastController());
}
}
-class podcastManagerBinding implements Bindings {
+class PodcastManagerBinding implements Bindings {
@override
void dependencies() {
- Get.lazyPut(() => SinglePodcastController());
+ Get.lazyPut(() => SinglePodcastController());
}
}
-
diff --git a/lib/route_manager/pages.dart b/lib/route_manager/pages.dart
index 3532b4a..7b1c793 100644
--- a/lib/route_manager/pages.dart
+++ b/lib/route_manager/pages.dart
@@ -10,49 +10,43 @@ import 'package:tec/view/podcast/single_manage_podcast.dart';
import 'package:tec/view/podcast/single_podcast.dart';
import 'package:tec/view/splash_screen.dart';
-class Pages{
-
+class Pages {
Pages._();
- static List> pages = [
- GetPage(
- name: NamedRoute.initialRoute,
- page: () => const SplashScreen(),
- ),
- GetPage(
- name: NamedRoute.routeMainScreen,
- page: () => const MainScreen(),
- binding: RegisterBinding()),
- GetPage(
- name: NamedRoute.routeSingleArticle,
- page: () => Single(),
- binding: ArticleBinding()),
- GetPage(
- name: NamedRoute.manageArticle,
- page: () => ManageArticle(),
- binding: ArticleManagerBinding()),
- GetPage(
- name: NamedRoute.singleManageArticle,
- page: () => SingleManageArticle(),
- binding: ArticleManagerBinding()),
- GetPage(
- name: NamedRoute.singlePodcast,
- page: () => PodcastSingle(),
- binding: SinglePodcastBinding()
- ),
- GetPage(
- name: NamedRoute.singleManagePodcast,
- page: () => SingleManagePodcast(),
- binding: podcastManagerBinding(),
- ),
- GetPage(
- name: NamedRoute.podcastManageList,
- page: () => ManagePodcast(),
- binding: podcastManagerBinding(),
- ),
-
-
- ];
-
-
-}
\ No newline at end of file
+ static List> pages = [
+ GetPage(
+ name: NamedRoute.initialRoute,
+ page: () => const SplashScreen(),
+ ),
+ GetPage(
+ name: NamedRoute.routeMainScreen,
+ page: () => const MainScreen(),
+ binding: RegisterBinding()),
+ GetPage(
+ name: NamedRoute.routeSingleArticle,
+ page: () => Single(),
+ binding: ArticleBinding()),
+ GetPage(
+ name: NamedRoute.manageArticle,
+ page: () => ManageArticle(),
+ binding: ArticleManagerBinding()),
+ GetPage(
+ name: NamedRoute.singleManageArticle,
+ page: () => SingleManageArticle(),
+ binding: ArticleManagerBinding()),
+ GetPage(
+ name: NamedRoute.singlePodcast,
+ page: () => PodcastSingle(),
+ binding: SinglePodcastBinding()),
+ GetPage(
+ name: NamedRoute.singleManagePodcast,
+ page: () => SingleManagePodcast(),
+ binding: PodcastManagerBinding(),
+ ),
+ GetPage(
+ name: NamedRoute.podcastManageList,
+ page: () => ManagePodcast(),
+ binding: PodcastManagerBinding(),
+ ),
+ ];
+}
diff --git a/lib/services/dio_service.dart b/lib/services/dio_service.dart
index 96a4e86..9a4c337 100644
--- a/lib/services/dio_service.dart
+++ b/lib/services/dio_service.dart
@@ -1,6 +1,7 @@
import 'dart:developer';
import 'package:dio/dio.dart';
import 'package:dio/dio.dart' as dio_service;
+import 'package:flutter/material.dart';
import 'package:get_storage/get_storage.dart';
import 'package:tec/constant/storage_const.dart';
@@ -12,42 +13,42 @@ class DioService {
.get(url,
options: Options(responseType: ResponseType.json, method: 'GET'))
.then((response) {
- log(response.toString());
+ // log(response.toString());
return response;
+ // ignore: body_might_complete_normally_catch_error
}).catchError((err) {
- if (err is DioError) {
+ if (err is DioException) {
return err.response!;
}
});
}
Future postMethod(Map map, String url) async {
- try {
- dio.options.headers['content-Type'] = 'application/json';
- var token = GetStorage().read(StorageKey.token);
- if (token != null) {
- dio.options.headers['authorization'] = '$token';
- }
-
- return await dio
- .post(url,
- data: dio_service.FormData.fromMap(map),
- options: Options(responseType: ResponseType.json, method: 'POST'))
- .then((response) {
- log(response.headers.toString());
- log(response.data.toString());
- log(response.statusCode.toString());
- return response;
- }).catchError((err) {
- log(err.toString());
- if (err is DioError) {
- return err.response!;
+ try {
+ dio.options.headers['content-Type'] = 'application/json';
+ var token = GetStorage().read(StorageKey.token);
+ if (token != null) {
+ dio.options.headers['authorization'] = '$token';
}
- });
- }catch (e) {
-
- print(e.toString());
+
+ return await dio
+ .post(url,
+ data: dio_service.FormData.fromMap(map),
+ options: Options(responseType: ResponseType.json, method: 'POST'))
+ .then((response) {
+ // log(response.headers.toString());
+ // log(response.data.toString());
+ // log(response.statusCode.toString());
+ return response;
+ // ignore: body_might_complete_normally_catch_error
+ }).catchError((err) {
+ log(err.toString());
+ if (err is DioException) {
+ return err.response!;
+ }
+ });
+ } catch (e) {
+ debugPrint(e.toString());
}
}
-
}
diff --git a/lib/themes/app_themes.dart b/lib/themes/app_themes.dart
index 25d179e..a81bf05 100644
--- a/lib/themes/app_themes.dart
+++ b/lib/themes/app_themes.dart
@@ -4,76 +4,76 @@ import '../constant/my_colors.dart';
class AppThemes {
static ThemeData lightTheme = ThemeData(
- inputDecorationTheme: InputDecorationTheme(
- border: OutlineInputBorder(
- borderRadius: BorderRadius.circular(16),
- borderSide: const BorderSide(width: 2),
- ),
- filled: true,
- fillColor: Colors.white,
- ),
- elevatedButtonTheme: ElevatedButtonThemeData(
- style: ButtonStyle(
- textStyle: MaterialStateProperty.resolveWith((states) {
- if (states.contains(MaterialState.pressed)) {
- return const TextStyle(
- fontSize: 16,
- fontFamily: 'dana',
- fontWeight: FontWeight.w700,
- color: SolidColors.posterTitle,
- );
- }
- return const TextStyle(
- fontSize: 15,
- fontFamily: 'dana',
- fontWeight: FontWeight.w300,
- color: SolidColors.posterSubTitle,
- );
- }),
- backgroundColor: MaterialStateProperty.resolveWith((states) {
- if (states.contains(MaterialState.pressed)) {
- return SolidColors.seeMore;
- }
- return SolidColors.primaryColor;
- }),
- ),
- ),
- fontFamily: 'dana',
- brightness: Brightness.light,
- accentColor: SolidColors.primaryColor,
- textTheme: const TextTheme(
- displayLarge: TextStyle(
- fontFamily: 'dana',
+ inputDecorationTheme: InputDecorationTheme(
+ border: OutlineInputBorder(
+ borderRadius: BorderRadius.circular(16),
+ borderSide: const BorderSide(width: 2),
+ ),
+ filled: true,
+ fillColor: Colors.white,
+ ),
+ elevatedButtonTheme: ElevatedButtonThemeData(
+ style: ButtonStyle(
+ textStyle: WidgetStateProperty.resolveWith((states) {
+ if (states.contains(WidgetState.pressed)) {
+ return const TextStyle(
fontSize: 16,
- fontWeight: FontWeight.w700,
- color: SolidColors.posterTitle),
- titleMedium: TextStyle(
- fontFamily: 'dana',
- fontSize: 14,
- fontWeight: FontWeight.w300,
- color: SolidColors.posterSubTitle),
- bodyLarge: TextStyle(
- fontFamily: 'dana', fontSize: 13, fontWeight: FontWeight.w300),
- displayMedium: TextStyle(
fontFamily: 'dana',
- fontSize: 14,
- color: Colors.white,
- fontWeight: FontWeight.w300),
- displaySmall: TextStyle(
- fontFamily: 'dana',
- fontSize: 14,
- color: SolidColors.seeMore,
- fontWeight: FontWeight.w700),
- headlineMedium: TextStyle(
- fontFamily: 'dana',
- fontSize: 14,
- color: Color.fromARGB(255, 70, 70, 70),
- fontWeight: FontWeight.w700),
- headlineSmall: TextStyle(
- fontFamily: 'dana',
- fontSize: 14,
- color: SolidColors.hintText,
- fontWeight: FontWeight.w700),
- ),
- );
+ fontWeight: FontWeight.w700,
+ color: SolidColors.posterTitle,
+ );
+ }
+ return const TextStyle(
+ fontSize: 15,
+ fontFamily: 'dana',
+ fontWeight: FontWeight.w300,
+ color: SolidColors.posterSubTitle,
+ );
+ }),
+ backgroundColor: WidgetStateProperty.resolveWith((states) {
+ if (states.contains(WidgetState.pressed)) {
+ return SolidColors.seeMore;
+ }
+ return SolidColors.primaryColor;
+ }),
+ ),
+ ),
+ fontFamily: 'dana',
+ brightness: Brightness.light,
+ // accentColor: SolidColors.primaryColor,
+ textTheme: const TextTheme(
+ displayLarge: TextStyle(
+ fontFamily: 'dana',
+ fontSize: 16,
+ fontWeight: FontWeight.w700,
+ color: SolidColors.posterTitle),
+ titleMedium: TextStyle(
+ fontFamily: 'dana',
+ fontSize: 14,
+ fontWeight: FontWeight.w300,
+ color: SolidColors.posterSubTitle),
+ bodyLarge: TextStyle(
+ fontFamily: 'dana', fontSize: 13, fontWeight: FontWeight.w300),
+ displayMedium: TextStyle(
+ fontFamily: 'dana',
+ fontSize: 14,
+ color: Colors.white,
+ fontWeight: FontWeight.w300),
+ displaySmall: TextStyle(
+ fontFamily: 'dana',
+ fontSize: 14,
+ color: SolidColors.seeMore,
+ fontWeight: FontWeight.w700),
+ headlineMedium: TextStyle(
+ fontFamily: 'dana',
+ fontSize: 14,
+ color: Color.fromARGB(255, 70, 70, 70),
+ fontWeight: FontWeight.w700),
+ headlineSmall: TextStyle(
+ fontFamily: 'dana',
+ fontSize: 14,
+ color: SolidColors.hintText,
+ fontWeight: FontWeight.w700),
+ ),
+ );
}
diff --git a/lib/view/articles/articel_list_sceen.dart b/lib/view/articles/articel_list_sceen.dart
index a300586..1bfd882 100644
--- a/lib/view/articles/articel_list_sceen.dart
+++ b/lib/view/articles/articel_list_sceen.dart
@@ -54,9 +54,8 @@ class ArticleListScreen extends StatelessWidget {
imageBuilder: (((context, imageProvider) {
return Container(
decoration: BoxDecoration(
- borderRadius:
- BorderRadius.all(
- Radius.circular(Dimens.medium)),
+ borderRadius: BorderRadius.all(
+ Radius.circular(Dimens.medium)),
image: DecorationImage(
image: imageProvider,
fit: BoxFit.cover)),
diff --git a/lib/view/articles/article_content_editor.dart b/lib/view/articles/article_content_editor.dart
index 97744d3..87257fa 100644
--- a/lib/view/articles/article_content_editor.dart
+++ b/lib/view/articles/article_content_editor.dart
@@ -1,6 +1,3 @@
-
-import 'dart:developer';
-
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:html_editor_enhanced/html_editor.dart';
@@ -11,42 +8,39 @@ import 'package:tec/controller/article/manage_article_controller.dart';
// ignore: must_be_immutable
class ArticleContentEditor extends StatelessWidget {
ArticleContentEditor({Key? key}) : super(key: key);
-
+
final HtmlEditorController controller = HtmlEditorController();
var manageArticleController = Get.put(ManageArticleController());
@override
Widget build(BuildContext context) {
-
return GestureDetector(
- onTap: () => controller.clearFocus(),
- child: Scaffold(
- appBar:appBar(MyStrings.titleAppBarArticleContentEditor),
- body: SingleChildScrollView(
+ onTap: () => controller.clearFocus(),
+ child: Scaffold(
+ appBar: appBar(MyStrings.titleAppBarArticleContentEditor),
+ body: SingleChildScrollView(
child: Column(
- mainAxisAlignment: MainAxisAlignment.center,
- children: [
- HtmlEditor(
- controller: controller,
- htmlEditorOptions: HtmlEditorOptions(
- hint: MyStrings.hintArticleContentEditor,
- shouldEnsureVisible: true,
- initialText: manageArticleController.articleInfoModel.value.content!
- ),
- callbacks: Callbacks(
- onChangeContent: (p0) {
- manageArticleController.articleInfoModel.update((val) {
- val?.content =p0;
- },);
- log(manageArticleController.articleInfoModel.value.content.toString());
+ mainAxisAlignment: MainAxisAlignment.center,
+ children: [
+ HtmlEditor(
+ controller: controller,
+ htmlEditorOptions: HtmlEditorOptions(
+ hint: MyStrings.hintArticleContentEditor,
+ shouldEnsureVisible: true,
+ initialText:
+ manageArticleController.articleInfoModel.value.content!),
+ callbacks: Callbacks(
+ onChangeContent: (p0) {
+ manageArticleController.articleInfoModel.update(
+ (val) {
+ val?.content = p0;
},
- ),
-
- )
- ],
-
- )),
- ),
+ );
+ },
+ ),
+ )
+ ],
+ )),
+ ),
);
-
}
-}
\ No newline at end of file
+}
diff --git a/lib/view/articles/manage_article.dart b/lib/view/articles/manage_article.dart
index c8c6735..a14bc2f 100644
--- a/lib/view/articles/manage_article.dart
+++ b/lib/view/articles/manage_article.dart
@@ -35,7 +35,7 @@ class ManageArticle extends StatelessWidget {
//route to single manage
}),
child: Padding(
- padding: EdgeInsets.all(Dimens.small),
+ padding: EdgeInsets.all(Dimens.small),
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
@@ -48,7 +48,7 @@ class ManageArticle extends StatelessWidget {
imageBuilder: (((context, imageProvider) {
return Container(
decoration: BoxDecoration(
- borderRadius: BorderRadius.all(
+ borderRadius: BorderRadius.all(
Radius.circular(Dimens.medium)),
image: DecorationImage(
image: imageProvider,
@@ -59,14 +59,14 @@ class ManageArticle extends StatelessWidget {
return const Loading();
}),
errorWidget: ((context, url, error) {
- return Icon(
+ return Icon(
Icons.image_not_supported_outlined,
- size: Dimens.xlarge-14,
+ size: Dimens.xlarge - 14,
color: SolidColors.greyColor);
}),
),
),
- SizedBox(
+ SizedBox(
width: Dimens.medium,
),
Column(
@@ -81,7 +81,7 @@ class ManageArticle extends StatelessWidget {
maxLines: 2,
),
),
- SizedBox(
+ SizedBox(
height: Dimens.medium,
),
Row(
@@ -93,8 +93,8 @@ class ManageArticle extends StatelessWidget {
.articleList[index].author!,
style: textTheme.bodySmall,
),
- SizedBox(
- width: Dimens.medium+4,
+ SizedBox(
+ width: Dimens.medium + 4,
),
Text(
articleManageController
@@ -112,19 +112,22 @@ class ManageArticle extends StatelessWidget {
);
}),
)
- : ArticleEmptyState(textTheme:textTheme,),
+ : ArticleEmptyState(
+ textTheme: textTheme,
+ ),
),
bottomNavigationBar: Padding(
- padding: EdgeInsets.only(top: Dimens.large),
+ padding: EdgeInsets.only(top: Dimens.large),
child: Padding(
- padding: EdgeInsets.all(Dimens.small),
+ padding: EdgeInsets.all(Dimens.small),
child: ElevatedButton(
style: ButtonStyle(
- fixedSize: MaterialStateProperty.all(Size(Get.width / 3, Dimens.xlarge-8))),
+ fixedSize: WidgetStateProperty.all(
+ Size(Get.width / 3, Dimens.xlarge - 8))),
onPressed: () {
Get.toNamed(NamedRoute.singleManageArticle);
},
- child: Text(MyStrings.textManageArticle),
+ child: Text(MyStrings.textManageArticle),
),
),
),
diff --git a/lib/view/articles/single.dart b/lib/view/articles/single.dart
index 10b94d8..896c89f 100644
--- a/lib/view/articles/single.dart
+++ b/lib/view/articles/single.dart
@@ -151,11 +151,17 @@ class Single extends StatelessWidget {
SizedBox(
height: Dimens.medium + 9,
),
- Tags(textheme: textTheme, singleArticleController: singleArticleController,),
+ Tags(
+ textheme: textTheme,
+ singleArticleController: singleArticleController,
+ ),
SizedBox(
height: Dimens.medium + 9,
),
- Similar(textheme: textTheme, singleArticleController: singleArticleController,)
+ Similar(
+ textheme: textTheme,
+ singleArticleController: singleArticleController,
+ )
]),
),
),
diff --git a/lib/view/articles/single_manage_article.dart b/lib/view/articles/single_manage_article.dart
index e9ff2b0..8e88b17 100644
--- a/lib/view/articles/single_manage_article.dart
+++ b/lib/view/articles/single_manage_article.dart
@@ -17,10 +17,12 @@ import 'article_content_editor.dart';
// ignore: must_be_immutable
class SingleManageArticle extends StatelessWidget {
- SingleManageArticle({Key? key,}) : super(key: key);
+ SingleManageArticle({
+ Key? key,
+ }) : super(key: key);
var manageArticleController = Get.find();
- HomeScreenController homeScreenController = Get.put(HomeScreenController());
+ HomeScreenController homeScreenController = Get.put(HomeScreenController());
FilePickerController filePickerController = Get.put(FilePickerController());
getTitle() {
@@ -31,7 +33,8 @@ class SingleManageArticle extends StatelessWidget {
controller: manageArticleController.titleTextEditingController,
keyboardType: TextInputType.text,
style: const TextStyle(color: SolidColors.colorTitle),
- decoration: InputDecoration(hintText: MyStrings.hintTextSingleManageArticle),
+ decoration:
+ InputDecoration(hintText: MyStrings.hintTextSingleManageArticle),
),
backgroundColor: SolidColors.primaryColor,
radius: 8,
@@ -40,7 +43,7 @@ class SingleManageArticle extends StatelessWidget {
manageArticleController.updateTitle();
Get.back();
}),
- child: Text(MyStrings.save)));
+ child: Text(MyStrings.save)));
}
@override
@@ -51,8 +54,7 @@ class SingleManageArticle extends StatelessWidget {
body: SingleChildScrollView(
physics: const BouncingScrollPhysics(),
child: Obx(
- () => Column(
- children: [
+ () => Column(children: [
Stack(
children: [
SizedBox(
@@ -80,7 +82,7 @@ class SingleManageArticle extends StatelessWidget {
left: 0,
right: 0,
child: Container(
- height: Dimens.xlarge-4,
+ height: Dimens.xlarge - 4,
decoration: const BoxDecoration(
gradient: LinearGradient(
end: Alignment.bottomCenter,
@@ -89,17 +91,17 @@ class SingleManageArticle extends StatelessWidget {
child: Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
- SizedBox(
- width: Dimens.medium+4,
+ SizedBox(
+ width: Dimens.medium + 4,
),
GestureDetector(
onTap: () {
Get.back();
},
- child: Icon(
+ child: Icon(
Icons.arrow_back,
color: SolidColors.lightIcon,
- size: Dimens.medium+8,
+ size: Dimens.medium + 8,
),
),
const Expanded(child: SizedBox()),
@@ -117,19 +119,19 @@ class SingleManageArticle extends StatelessWidget {
await pickFile();
},
child: Container(
- height: Dimens.large-2,
+ height: Dimens.large - 2,
width: Get.width / 3,
- decoration: BoxDecoration(
+ decoration: BoxDecoration(
color: SolidColors.primaryColor,
borderRadius: BorderRadius.only(
- topLeft: Radius.circular(Dimens.small+4),
- topRight: Radius.circular(Dimens.small+4),
+ topLeft: Radius.circular(Dimens.small + 4),
+ topRight: Radius.circular(Dimens.small + 4),
)),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
- MyStrings.selectImage,
+ MyStrings.selectImage,
style: textheme.displayMedium,
),
const Icon(
@@ -143,8 +145,8 @@ class SingleManageArticle extends StatelessWidget {
))
],
),
- SizedBox(
- height: Dimens.medium+8,
+ SizedBox(
+ height: Dimens.medium + 8,
),
GestureDetector(
@@ -176,7 +178,7 @@ class SingleManageArticle extends StatelessWidget {
),
Padding(
- padding: EdgeInsets.all(Dimens.small),
+ padding: EdgeInsets.all(Dimens.small),
child: HtmlWidget(
manageArticleController.articleInfoModel.value.content!,
textStyle: textheme.headlineSmall,
@@ -185,8 +187,8 @@ class SingleManageArticle extends StatelessWidget {
const Loading()),
),
),
- SizedBox(
- height: Dimens.medium+9,
+ SizedBox(
+ height: Dimens.medium + 9,
),
GestureDetector(
onTap: () {
@@ -202,7 +204,7 @@ class SingleManageArticle extends StatelessWidget {
padding: EdgeInsets.all(Dimens.halfBodyMargin),
child: Text(
manageArticleController.articleInfoModel.value.catName == null
- ?MyStrings.noCategorySelected
+ ? MyStrings.noCategorySelected
: manageArticleController.articleInfoModel.value.catName!,
maxLines: 2,
style: textheme.titleLarge,
@@ -213,10 +215,10 @@ class SingleManageArticle extends StatelessWidget {
onPressed: (() async =>
await manageArticleController.storeArticle()),
child: Padding(
- padding: EdgeInsets.all(Dimens.small),
+ padding: EdgeInsets.all(Dimens.small),
child: Text(manageArticleController.loading.value
- ?MyStrings.wait
- :MyStrings.sendText ),
+ ? MyStrings.wait
+ : MyStrings.sendText),
))
// tags(textheme),
]),
@@ -229,20 +231,25 @@ class SingleManageArticle extends StatelessWidget {
Get.bottomSheet(
Container(
height: Get.height / 1.5,
- decoration: BoxDecoration(
+ decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.only(
- topLeft: Radius.circular(Dimens.medium+4), topRight: Radius.circular(Dimens.medium+4)),
+ topLeft: Radius.circular(Dimens.medium + 4),
+ topRight: Radius.circular(Dimens.medium + 4)),
),
child: Padding(
- padding: EdgeInsets.all(Dimens.small),
+ padding: EdgeInsets.all(Dimens.small),
child: SingleChildScrollView(
child: Column(children: [
- Text(MyStrings.selectCategory),
- SizedBox(
+ Text(MyStrings.selectCategory),
+ SizedBox(
height: Dimens.small,
),
- Cats(textTheme: textTheme, homeScreenController: homeScreenController, manageArticleController: manageArticleController,)
+ Cats(
+ textTheme: textTheme,
+ homeScreenController: homeScreenController,
+ manageArticleController: manageArticleController,
+ )
]),
),
),
@@ -251,5 +258,3 @@ class SingleManageArticle extends StatelessWidget {
persistent: true);
}
}
-
-
diff --git a/lib/view/main_screen/bottom_navigation.dart b/lib/view/main_screen/bottom_navigation.dart
index 7130b17..f767751 100644
--- a/lib/view/main_screen/bottom_navigation.dart
+++ b/lib/view/main_screen/bottom_navigation.dart
@@ -1,19 +1,16 @@
-import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.dart';
-import 'package:get_storage/get_storage.dart';
import 'package:tec/component/decrations.dart';
import 'package:tec/component/dimens.dart';
import 'package:tec/constant/my_colors.dart';
import 'package:tec/constant/my_strings.dart';
-import 'package:tec/constant/storage_const.dart';
import 'package:tec/controller/register_controller.dart';
import 'package:tec/gen/assets.gen.dart';
import 'package:tec/route_manager/names.dart';
-import 'package:tec/view/register/register_intro.dart';
import 'package:zoom_tap_animation/zoom_tap_animation.dart';
+// ignore: must_be_immutable
class BottomNavigation extends StatelessWidget {
BottomNavigation({
Key? key,
@@ -33,7 +30,7 @@ class BottomNavigation extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Positioned(
- bottom: 0,
+ bottom: 8,
right: 0,
left: 0,
child: Container(
@@ -46,8 +43,8 @@ class BottomNavigation extends StatelessWidget {
),
),
child: Padding(
- padding:
- EdgeInsets.only(right: bodyMargin, left: bodyMargin, bottom: Dimens.small+2),
+ padding: EdgeInsets.only(
+ right: bodyMargin, left: bodyMargin, bottom: Dimens.small + 2),
child: Container(
height: size.height / 8,
decoration: MyDecorations.mainGradient,
@@ -59,30 +56,32 @@ class BottomNavigation extends StatelessWidget {
onTap: () => changeScreen(0),
child: ImageIcon(
Image.asset(Assets.icons.home.path).image,
- size: selectedScreen.value == 0 ? 26 : 24,
- color: selectedScreen.value == 0
+ size: selectedScreen.value == 0 ? 32 : 26,
+ color: selectedScreen.value == 1
? SolidColors.lightIcon
: SolidColors.greyColor,
),
),
IconButton(
- onPressed: (() {
- registerController.toggleLogin();
- }),
- icon: ImageIcon(
- Image.asset(Assets.icons.write.path).image,
- color: SolidColors.lightIcon,
- size: Dimens.large+3,
- )),
+ onPressed: (() {
+ registerController.toggleLogin();
+ }),
+ icon: ImageIcon(
+ Image.asset(Assets.icons.write.path).image,
+ color: SolidColors.lightIcon,
+ size: Dimens.large - 2,
+ ),
+ ),
ZoomTapAnimation(
- onTap: () => changeScreen(1),
- child: ImageIcon(
- Image.asset(Assets.icons.user.path).image,
- size: selectedScreen.value == 1 ? 26 : 24,
- color: selectedScreen.value == 1
- ? SolidColors.lightIcon
+ onTap: () => changeScreen(1),
+ child: ImageIcon(
+ Image.asset(Assets.icons.user.path).image,
+ size: selectedScreen.value == 1 ? 32 : 26,
+ color: selectedScreen.value == 0
+ ? SolidColors.lightIcon
: SolidColors.greyColor,
- )),
+ ),
+ ),
],
),
),
@@ -93,80 +92,81 @@ class BottomNavigation extends StatelessWidget {
}
}
- routeToWriteBottomSheet() {
- Get.bottomSheet(Container(
- height: Get.height / 3,
- decoration: BoxDecoration(
- color: SolidColors.lightText,
- borderRadius: BorderRadius.only(
- topLeft: Radius.circular(Dimens.medium+4), topRight: Radius.circular(Dimens.medium+4))),
- child: Padding(
- padding: EdgeInsets.all(Dimens.medium),
- child: Column(children: [
- Row(
- children: [
- SvgPicture.asset(
- Assets.images.tcbot.path,
- height: Dimens.large+8,
- ),
- SizedBox(
- width: Dimens.small,
- ),
- Text(MyStrings.shareKnowledge)
- ],
- ),
- SizedBox(
- height: Dimens.small,
- ),
- Text(MyStrings.gigTech),
- Row(
- mainAxisAlignment: MainAxisAlignment.spaceAround,
- children: [
- GestureDetector(
- onTap: (() {
- // debugPrint("write article");
- Get.toNamed(NamedRoute.manageArticle);
- }),
- child: Container(
- color: SolidColors.lightIcon,
- child: Row(
- children: [
- Image.asset(
- Assets.icons.writeArticleIcon.path,
- height: Dimens.large,
- ),
- SizedBox(
- width: Dimens.small,
- ),
- Text(MyStrings.titleAppBarManageArticle)
- ],
- ),
+routeToWriteBottomSheet() {
+ Get.bottomSheet(Container(
+ height: Get.height / 3,
+ decoration: BoxDecoration(
+ color: SolidColors.lightText,
+ borderRadius: BorderRadius.only(
+ topLeft: Radius.circular(Dimens.medium + 4),
+ topRight: Radius.circular(Dimens.medium + 4))),
+ child: Padding(
+ padding: EdgeInsets.all(Dimens.medium),
+ child: Column(children: [
+ Row(
+ children: [
+ SvgPicture.asset(
+ Assets.images.tcbot.path,
+ height: Dimens.large + 8,
+ ),
+ SizedBox(
+ width: Dimens.small,
+ ),
+ Text(MyStrings.shareKnowledge)
+ ],
+ ),
+ SizedBox(
+ height: Dimens.small,
+ ),
+ Text(MyStrings.gigTech),
+ Row(
+ mainAxisAlignment: MainAxisAlignment.spaceAround,
+ children: [
+ GestureDetector(
+ onTap: (() {
+ // debugPrint("write article");
+ Get.toNamed(NamedRoute.manageArticle);
+ }),
+ child: Container(
+ color: SolidColors.lightIcon,
+ child: Row(
+ children: [
+ Image.asset(
+ Assets.icons.writeArticleIcon.path,
+ height: Dimens.large,
+ ),
+ SizedBox(
+ width: Dimens.small,
+ ),
+ Text(MyStrings.titleAppBarManageArticle)
+ ],
),
),
- GestureDetector(
- onTap: (() {
- Get.toNamed(NamedRoute.podcastManageList);
- debugPrint(MyStrings.writePodcast);
- }),
- child: Container(
- color: SolidColors.lightIcon,
- child: Row(
- children: [
- Image.asset(
- Assets.icons.writePodcastIcon.path,
- height: Dimens.large,
- ),
- SizedBox(
- width: Dimens.small,
- ),
- Text(MyStrings.ManagePodcast)
- ],
- ),
+ ),
+ GestureDetector(
+ onTap: (() {
+ Get.toNamed(NamedRoute.podcastManageList);
+ debugPrint(MyStrings.writePodcast);
+ }),
+ child: Container(
+ color: SolidColors.lightIcon,
+ child: Row(
+ children: [
+ Image.asset(
+ Assets.icons.writePodcastIcon.path,
+ height: Dimens.large,
+ ),
+ SizedBox(
+ width: Dimens.small,
+ ),
+ Text(MyStrings.managePodcast)
+ ],
),
),
- ],
- )
- ]),
- ),
- ));
- }
+ ),
+ ],
+ )
+ ]),
+ ),
+ ));
+}
diff --git a/lib/view/main_screen/home_screen.dart b/lib/view/main_screen/home_screen.dart
index 021289e..3d433ed 100644
--- a/lib/view/main_screen/home_screen.dart
+++ b/lib/view/main_screen/home_screen.dart
@@ -1,19 +1,17 @@
-
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:tec/component/dimens.dart';
+import 'package:tec/constant/my_colors.dart';
import 'package:tec/view/widgets/main_widget.dart';
import 'package:tec/component/my_component.dart';
import 'package:tec/constant/my_strings.dart';
import 'package:tec/controller/home_screen_controller.dart';
import 'package:tec/controller/article/single_article_controller.dart';
import 'package:tec/view/articles/articel_list_sceen.dart';
-
+
import 'see_more_podcast_screen.dart';
-
+
import '../../controller/article/list_article_controller.dart';
-import '../podcast/hot_podcast_list.dart';
-
// ignore: must_be_immutable
class HomeScreen extends StatelessWidget {
@@ -38,7 +36,7 @@ class HomeScreen extends StatelessWidget {
return Obx(() => homeScreenController.loading.value == false
? RefreshIndicator(
// ignore: deprecated_member_use
- color: Theme.of(context).accentColor,
+ color: SolidColors.primaryColor,
onRefresh: () {
return homeScreenController.getHomeItems();
},
@@ -48,11 +46,18 @@ class HomeScreen extends StatelessWidget {
padding: EdgeInsets.fromLTRB(0, Dimens.medium, 0, 0),
child: Column(
children: [
- Poster(homeScreenController: homeScreenController, textTheme: textTheme, size: size,),
+ Poster(
+ homeScreenController: homeScreenController,
+ textTheme: textTheme,
+ size: size,
+ ),
SizedBox(
height: Dimens.medium,
),
- Tag(textTheme: textTheme, bodyMargin: bodyMargin,),
+ Tag(
+ textTheme: textTheme,
+ bodyMargin: bodyMargin,
+ ),
SizedBox(
height: Dimens.large,
),
@@ -65,13 +70,23 @@ class HomeScreen extends StatelessWidget {
textTheme: textTheme,
title: MyStrings.viewHotestBlog,
)),
- TopVisited(bodyMargin: bodyMargin, homeScreenController: homeScreenController, singleArticleController: singleArticleController, size: size, textTheme: textTheme,)
- , SizedBox(
+ TopVisited(
+ bodyMargin: bodyMargin,
+ homeScreenController: homeScreenController,
+ singleArticleController: singleArticleController,
+ size: size,
+ textTheme: textTheme,
+ ),
+ SizedBox(
height: Dimens.large,
),
SeeMorePodcast(
bodyMargin: bodyMargin, textTheme: textTheme),
- TopPodcast(bodyMargin: bodyMargin, homeScreenController: homeScreenController, size: size,),
+ TopPodcast(
+ bodyMargin: bodyMargin,
+ homeScreenController: homeScreenController,
+ size: size,
+ ),
SizedBox(
height: Dimens.xlarge + 36,
)
diff --git a/lib/view/main_screen/main_screen.dart b/lib/view/main_screen/main_screen.dart
index cf151b7..6e3d6d1 100644
--- a/lib/view/main_screen/main_screen.dart
+++ b/lib/view/main_screen/main_screen.dart
@@ -9,7 +9,7 @@ import 'package:tec/gen/assets.gen.dart';
import 'package:tec/view/main_screen/bottom_navigation.dart';
import 'package:tec/view/main_screen/home_screen.dart';
import 'package:tec/view/main_screen/profile_screen.dart';
-import '../../component/searchBar.dart';
+import '../../component/search_bar.dart';
final GlobalKey _key = GlobalKey();
@@ -47,7 +47,7 @@ class _MainScreenState extends State {
)),
ListTile(
title: Text(
- MyStrings.userProfile,
+ MyStrings.userProfile,
style: textTheme.headlineMedium,
),
onTap: () {
@@ -82,7 +82,7 @@ class _MainScreenState extends State {
),
ListTile(
title: Text(
- MyStrings.tecIngithub,
+ MyStrings.tecIngithub,
style: textTheme.headlineMedium,
),
onTap: () {
@@ -122,10 +122,12 @@ class _MainScreenState extends State {
showSearch(
context: context,
// delegate to customize the search bar
- delegate: CustomSearchDelegate()
- );
+ delegate: CustomSearchDelegate());
},
- icon: const Icon(Icons.search , color: SolidColors.blackColor,),
+ icon: const Icon(
+ Icons.search,
+ color: SolidColors.blackColor,
+ ),
)
],
),
@@ -159,4 +161,3 @@ class _MainScreenState extends State {
);
}
}
-
diff --git a/lib/view/main_screen/profile_screen.dart b/lib/view/main_screen/profile_screen.dart
index 1fc15a4..ebcfd86 100644
--- a/lib/view/main_screen/profile_screen.dart
+++ b/lib/view/main_screen/profile_screen.dart
@@ -22,16 +22,16 @@ class ProfileScreen extends StatelessWidget {
return SingleChildScrollView(
physics: const BouncingScrollPhysics(),
child: Padding(
- padding: EdgeInsets.only(top: Dimens.medium+8),
+ padding: EdgeInsets.only(top: Dimens.medium + 8),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Image.asset(
Assets.images.profileAvatar.path,
- height: Dimens.xlarge+36,
+ height: Dimens.xlarge + 36,
),
- SizedBox(
- height: Dimens.small+4,
+ SizedBox(
+ height: Dimens.small + 4,
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
@@ -40,7 +40,7 @@ class ProfileScreen extends StatelessWidget {
Image.asset(Assets.icons.bluePen.path).image,
color: SolidColors.seeMore,
),
- SizedBox(
+ SizedBox(
width: Dimens.small,
),
Text(
@@ -49,19 +49,19 @@ class ProfileScreen extends StatelessWidget {
)
],
),
- SizedBox(
- height: Dimens.xlarge-4,
+ SizedBox(
+ height: Dimens.xlarge - 4,
),
Text(
- MyStrings.nameFatemeAmiri,
+ MyStrings.nameFatemeAmiri,
style: textTheme.headlineMedium,
),
Text(
MyStrings.gmailFatemeAmiri,
style: textTheme.headlineMedium,
),
- SizedBox(
- height: Dimens.large+8,
+ SizedBox(
+ height: Dimens.large + 8,
),
TechDivider(size: size),
InkWell(
@@ -70,7 +70,7 @@ class ProfileScreen extends StatelessWidget {
}),
splashColor: SolidColors.primaryColor,
child: SizedBox(
- height: Dimens.large+13,
+ height: Dimens.large + 13,
child: Center(
child: Text(
MyStrings.myFavBlog,
@@ -84,7 +84,7 @@ class ProfileScreen extends StatelessWidget {
}),
splashColor: SolidColors.primaryColor,
child: SizedBox(
- height: Dimens.large+13,
+ height: Dimens.large + 13,
child: Center(
child: Text(
MyStrings.myFavPodcast,
@@ -94,19 +94,19 @@ class ProfileScreen extends StatelessWidget {
TechDivider(size: size),
InkWell(
onTap: (() {
- logOut();
+ logOut();
}),
splashColor: SolidColors.primaryColor,
child: SizedBox(
- height: Dimens.large+13,
+ height: Dimens.large + 13,
child: Center(
child: Text(
MyStrings.logOut,
style: textTheme.headlineMedium,
))),
),
- SizedBox(
- height: Dimens.xlarge-4,
+ SizedBox(
+ height: Dimens.xlarge - 4,
),
],
),
@@ -114,31 +114,31 @@ class ProfileScreen extends StatelessWidget {
}
}
- logOut() {
- Get.defaultDialog(
- title: MyStrings.nameFatemeAmiri,
- titleStyle: const TextStyle(color: SolidColors.scaffoldBg),
- backgroundColor: SolidColors.primaryColor,
- content: Text(
- MyStrings.areYouSureExit,
- style: TextStyle(color: SolidColors.scaffoldBg),
- ),
- radius: Dimens.small,
- cancel: ElevatedButton(
- onPressed: () {
+logOut() {
+ Get.defaultDialog(
+ title: MyStrings.nameFatemeAmiri,
+ titleStyle: const TextStyle(color: SolidColors.scaffoldBg),
+ backgroundColor: SolidColors.primaryColor,
+ content: Text(
+ MyStrings.areYouSureExit,
+ style: const TextStyle(color: SolidColors.scaffoldBg),
+ ),
+ radius: Dimens.small,
+ cancel: ElevatedButton(
+ onPressed: () {
+ Get.back();
+ },
+ child: Text(MyStrings.cancel)),
+ confirm: ElevatedButton(
+ onPressed: () {
+ if (GetStorage().read(StorageKey.token) == null) {
Get.back();
- },
- child: Text(MyStrings.cancel)),
- confirm: ElevatedButton(
- onPressed: () {
- if (GetStorage().read(StorageKey.token) == null) {
- Get.back();
- Get.snackbar(MyStrings.error,MyStrings.youAlreadyLeft);
- } else {
- BoxStorage.box.erase();
- Get.offNamed(NamedRoute.profileScreen);
- }
- },
- child: Text(MyStrings.exit)),
- );
- }
+ Get.snackbar(MyStrings.error, MyStrings.youAlreadyLeft);
+ } else {
+ BoxStorage.box.erase();
+ Get.offNamed(NamedRoute.profileScreen);
+ }
+ },
+ child: Text(MyStrings.exit)),
+ );
+}
diff --git a/lib/view/main_screen/see_more_podcast_screen.dart b/lib/view/main_screen/see_more_podcast_screen.dart
index 1d83799..9450b97 100644
--- a/lib/view/main_screen/see_more_podcast_screen.dart
+++ b/lib/view/main_screen/see_more_podcast_screen.dart
@@ -1,4 +1,3 @@
-
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:tec/component/dimens.dart';
@@ -28,16 +27,18 @@ class SeeMorePodcast extends StatelessWidget {
Image.asset(Assets.icons.microphon.path).image,
color: SolidColors.seeMore,
),
- SizedBox(
+ SizedBox(
width: Dimens.small,
),
- Padding(
- padding: EdgeInsets.fromLTRB(0, 0, Dimens.small, 0),
+ Padding(
+ padding: EdgeInsets.fromLTRB(0, 0, Dimens.small, 0),
child: GestureDetector(
- onTap: () => Get.to(HotPodcastList(title: MyStrings.myFavPodcast,)),
+ onTap: () => Get.to(HotPodcastList(
+ title: MyStrings.myFavPodcast,
+ )),
child: Text(
MyStrings.viewHotestPodCasts,
- style: textTheme.headline3,
+ style: textTheme.displaySmall,
),
),
)
@@ -45,4 +46,4 @@ class SeeMorePodcast extends StatelessWidget {
),
);
}
-}
\ No newline at end of file
+}
diff --git a/lib/view/my_cats.dart b/lib/view/my_cats.dart
index d2615d1..0f1072f 100644
--- a/lib/view/my_cats.dart
+++ b/lib/view/my_cats.dart
@@ -32,14 +32,14 @@ class _MyCatsState extends State {
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
- SizedBox(
+ SizedBox(
height: Dimens.large,
),
SvgPicture.asset(
Assets.images.tcbot.path,
height: Dimens.xlarge + 36,
),
- SizedBox(
+ SizedBox(
height: Dimens.medium,
),
Text(
@@ -54,8 +54,8 @@ class _MyCatsState extends State {
hintStyle: textTheme.headlineMedium,
),
),
- SizedBox(
- height: Dimens.large,
+ SizedBox(
+ height: Dimens.large,
),
Text(
MyStrings.chooseCats,
@@ -63,19 +63,19 @@ class _MyCatsState extends State {
),
//taglist
Padding(
- padding: EdgeInsets.only(top: Dimens.large),
+ padding: EdgeInsets.only(top: Dimens.large),
child: SizedBox(
width: double.infinity,
- height: Dimens.xlarge+21,
+ height: Dimens.xlarge + 21,
child: GridView.builder(
physics: const ClampingScrollPhysics(),
itemCount: tagList.length,
shrinkWrap: true,
scrollDirection: Axis.horizontal,
gridDelegate:
- SliverGridDelegateWithFixedCrossAxisCount(
- crossAxisSpacing: Dimens.small-3,
- mainAxisSpacing: Dimens.small-3,
+ SliverGridDelegateWithFixedCrossAxisCount(
+ crossAxisSpacing: Dimens.small - 3,
+ mainAxisSpacing: Dimens.small - 3,
crossAxisCount: 2,
childAspectRatio: 0.3),
itemBuilder: ((context, index) {
@@ -95,7 +95,7 @@ class _MyCatsState extends State {
})),
),
),
- SizedBox(
+ SizedBox(
height: Dimens.medium,
),
Image.asset(
@@ -104,10 +104,10 @@ class _MyCatsState extends State {
),
//selected Tags
Padding(
- padding: EdgeInsets.only(top: Dimens.large),
+ padding: EdgeInsets.only(top: Dimens.large),
child: SizedBox(
width: double.infinity,
- height: Dimens.xlarge+21,
+ height: Dimens.xlarge + 21,
child: GridView.builder(
physics: const ClampingScrollPhysics(),
itemCount: selectedTags.length,
@@ -122,19 +122,20 @@ class _MyCatsState extends State {
),
itemBuilder: ((context, index) {
return Container(
- height: Dimens.xlarge-4,
- decoration: BoxDecoration(
- borderRadius:
- BorderRadius.all(Radius.circular(Dimens.medium+8)),
+ height: Dimens.xlarge - 4,
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.all(
+ Radius.circular(Dimens.medium + 8)),
color: SolidColors.surface,
),
child: Padding(
- padding: EdgeInsets.fromLTRB(Dimens.medium, Dimens.small, Dimens.small, Dimens.small),
+ padding: EdgeInsets.fromLTRB(Dimens.medium,
+ Dimens.small, Dimens.small, Dimens.small),
child: Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
- SizedBox(
+ SizedBox(
width: Dimens.small,
),
Text(
diff --git a/lib/view/podcast/hot_podcast_list.dart b/lib/view/podcast/hot_podcast_list.dart
index 3b8015f..831e22c 100644
--- a/lib/view/podcast/hot_podcast_list.dart
+++ b/lib/view/podcast/hot_podcast_list.dart
@@ -1,4 +1,3 @@
-
import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
@@ -10,6 +9,8 @@ import '../../component/dimens.dart';
import '../../component/my_component.dart';
import '../../models/podcast_model.dart';
import '../../route_manager/names.dart';
+
+// ignore: must_be_immutable
class HotPodcastList extends StatelessWidget {
final String title;
@@ -27,31 +28,32 @@ class HotPodcastList extends StatelessWidget {
child: Scaffold(
appBar: appBar(title),
body: Padding(
- padding: EdgeInsets.fromLTRB(0, Dimens.medium, Dimens.medium-1, 0),
+ padding: EdgeInsets.fromLTRB(0, Dimens.medium, Dimens.medium - 1, 0),
child: ListView.builder(
scrollDirection: Axis.vertical,
itemCount: homeScreenController.topPodcasts.length,
itemBuilder: ((context, index) {
return GestureDetector(
onTap: () {
- Get.toNamed(NamedRoute.singlePodcast,arguments: homeScreenController.topPodcasts[index] );
+ Get.toNamed(NamedRoute.singlePodcast,
+ arguments: homeScreenController.topPodcasts[index]);
},
child: Column(
children: [
Row(
children: [
SizedBox(
- height: Dimens.xlarge+36,
- width: Dimens.xlarge+36,
+ height: Dimens.xlarge + 36,
+ width: Dimens.xlarge + 36,
child: Padding(
- padding: EdgeInsets.all(Dimens.small),
+ padding: EdgeInsets.all(Dimens.small),
child: CachedNetworkImage(
imageUrl: homeScreenController
.topPodcasts[index].poster!,
imageBuilder: (context, imageProvider) =>
Container(
decoration: BoxDecoration(
- borderRadius: BorderRadius.all(
+ borderRadius: BorderRadius.all(
Radius.circular(Dimens.medium),
),
image: DecorationImage(
@@ -59,9 +61,9 @@ class HotPodcastList extends StatelessWidget {
fit: BoxFit.cover)),
),
placeholder: ((context, url) => const Loading()),
- errorWidget: (context, url, error) => Icon(
+ errorWidget: (context, url, error) => Icon(
Icons.image_not_supported_outlined,
- size: Dimens.xlarge-14,
+ size: Dimens.xlarge - 14,
color: SolidColors.erorColor,
),
),
@@ -96,4 +98,4 @@ class HotPodcastList extends StatelessWidget {
),
);
}
-}
\ No newline at end of file
+}
diff --git a/lib/view/podcast/manage_podcast.dart b/lib/view/podcast/manage_podcast.dart
index c881f01..198dbc6 100644
--- a/lib/view/podcast/manage_podcast.dart
+++ b/lib/view/podcast/manage_podcast.dart
@@ -8,10 +8,10 @@ import 'package:tec/view/widgets/podcast_widgets.dart';
import 'package:tec/constant/my_colors.dart';
import 'package:tec/constant/my_strings.dart';
import 'package:tec/controller/home_screen_controller.dart';
-import 'package:tec/gen/assets.gen.dart';
import '../../controller/podcast/manage_podcast_controller.dart';
import '../../route_manager/names.dart';
+// ignore: must_be_immutable
class ManagePodcast extends StatelessWidget {
ManagePodcast({Key? key}) : super(key: key);
@@ -23,97 +23,94 @@ class ManagePodcast extends StatelessWidget {
var textTheme = Theme.of(context).textTheme;
return SafeArea(
child: Scaffold(
- appBar: appBar(MyStrings.ManagePodcast),
- body: Obx(
- () => managePodcastController.loading.value
- ? const Loading()
- : managePodcastController.podcastModel.isNotEmpty
- ? Padding(
- padding: EdgeInsets.fromLTRB(
- 0, Dimens.medium, Dimens.medium - 1, 0),
- child: ListView.builder(
- scrollDirection: Axis.vertical,
- itemCount: managePodcastController.podcastModel.length,
- itemBuilder: ((context, index) {
- // return Text(homeScreenController.topPodcast[index].title!,);
- return GestureDetector(
- onTap: () {
- Get.toNamed(NamedRoute.singlePodcast,
- arguments: managePodcastController
- .podcastModel[index]);
- },
- child: Column(
- children: [
- Row(
- children: [
- SizedBox(
- height: Dimens.xlarge + 36,
- width: Dimens.xlarge + 36,
- child: Padding(
- padding: EdgeInsets.all(
- Dimens.small,
+ appBar: appBar(MyStrings.managePodcast),
+ body: Obx(() => managePodcastController.loading.value
+ ? const Loading()
+ : managePodcastController.podcastModel.isNotEmpty
+ ? Padding(
+ padding: EdgeInsets.fromLTRB(
+ 0, Dimens.medium, Dimens.medium - 1, 0),
+ child: ListView.builder(
+ scrollDirection: Axis.vertical,
+ itemCount: managePodcastController.podcastModel.length,
+ itemBuilder: ((context, index) {
+ // return Text(homeScreenController.topPodcast[index].title!,);
+ return GestureDetector(
+ onTap: () {
+ Get.toNamed(NamedRoute.singlePodcast,
+ arguments: managePodcastController
+ .podcastModel[index]);
+ },
+ child: Column(
+ children: [
+ Row(
+ children: [
+ SizedBox(
+ height: Dimens.xlarge + 36,
+ width: Dimens.xlarge + 36,
+ child: Padding(
+ padding: EdgeInsets.all(
+ Dimens.small,
+ ),
+ child: CachedNetworkImage(
+ imageUrl: managePodcastController
+ .podcastModel[index].poster!,
+ imageBuilder:
+ (context, imageProvider) =>
+ Container(
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.all(
+ Radius.circular(Dimens.medium),
+ ),
+ image: DecorationImage(
+ image: imageProvider,
+ fit: BoxFit.cover)),
),
- child: CachedNetworkImage(
- imageUrl: managePodcastController
- .podcastModel[index].poster!,
- imageBuilder:
- (context, imageProvider) =>
- Container(
- decoration: BoxDecoration(
- borderRadius: BorderRadius.all(
- Radius.circular(
- Dimens.medium),
- ),
- image: DecorationImage(
- image: imageProvider,
- fit: BoxFit.cover)),
- ),
- placeholder: ((context, url) =>
- const Loading()),
- errorWidget: (context, url, error) =>
- Icon(
- Icons.image_not_supported_outlined,
- size: Dimens.xlarge - 14,
- color: SolidColors.erorColor,
- ),
+ placeholder: ((context, url) =>
+ const Loading()),
+ errorWidget: (context, url, error) =>
+ Icon(
+ Icons.image_not_supported_outlined,
+ size: Dimens.xlarge - 14,
+ color: SolidColors.erorColor,
),
),
),
- Padding(
- padding: EdgeInsets.fromLTRB(
- 0, 0, 0, Dimens.bodyMargin / 1),
- child: Column(
- children: [
- Text(
- managePodcastController
- .podcastModel[index].title!,
- style: const TextStyle(
- fontWeight: FontWeight.bold),
- ),
- Text(
- managePodcastController
- .podcastModel[index].publisher!,
- style: subTextPodcastList,
- ),
- ],
- ),
+ ),
+ Padding(
+ padding: EdgeInsets.fromLTRB(
+ 0, 0, 0, Dimens.bodyMargin / 1),
+ child: Column(
+ children: [
+ Text(
+ managePodcastController
+ .podcastModel[index].title!,
+ style: const TextStyle(
+ fontWeight: FontWeight.bold),
+ ),
+ Text(
+ managePodcastController
+ .podcastModel[index].publisher!,
+ style: subTextPodcastList,
+ ),
+ ],
),
- ],
- )
- ],
- ),
- );
- }),
- ),
- )
- : PodcastEmpty(textTheme: textTheme)
- ),
+ ),
+ ],
+ )
+ ],
+ ),
+ );
+ }),
+ ),
+ )
+ : PodcastEmpty(textTheme: textTheme)),
bottomNavigationBar: Padding(
padding: EdgeInsets.all(Dimens.small),
child: ElevatedButton(
style: ButtonStyle(
- fixedSize:
- MaterialStateProperty.all(Size(Get.width / 3, Dimens.xlarge-8))),
+ fixedSize: WidgetStateProperty.all(
+ Size(Get.width / 3, Dimens.xlarge - 8))),
onPressed: () {
Get.toNamed(NamedRoute.singleManagePodcast);
},
diff --git a/lib/view/podcast/single_manage_podcast.dart b/lib/view/podcast/single_manage_podcast.dart
index 21dfdd2..9052d30 100644
--- a/lib/view/podcast/single_manage_podcast.dart
+++ b/lib/view/podcast/single_manage_podcast.dart
@@ -4,6 +4,7 @@ import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:get/get.dart';
+import 'package:numberpicker/numberpicker.dart';
import 'package:tec/component/decrations.dart';
import 'package:tec/component/dimens.dart';
import 'package:tec/component/my_component.dart';
@@ -15,6 +16,7 @@ import 'package:tec/controller/podcast/single_podcast_cotroller.dart';
import 'package:tec/services/pick_file.dart';
import '../../gen/assets.gen.dart';
+// ignore: must_be_immutable
class SingleManagePodcast extends StatelessWidget {
SinglePodcastController controller = Get.put(SinglePodcastController());
ManagePodcastController managePodcastController =
@@ -121,7 +123,7 @@ class SingleManagePodcast extends StatelessWidget {
children: [
Text(
MyStrings.selectImage,
- style: textheme.headline2,
+ style: textheme.displayMedium,
),
const Icon(
Icons.add,
@@ -201,11 +203,10 @@ class SingleManagePodcast extends StatelessWidget {
),
Text(
MyStrings.frilance,
- style: textheme.headline4,
+ style: textheme.headlineMedium,
),
],
),
-
Text(
'${managePodcastController.currentHourValue.value}:${managePodcastController.currentMinuteValue.value}:${managePodcastController.currentSecondeValue.value}',
style: const TextStyle(
@@ -237,9 +238,9 @@ class SingleManagePodcast extends StatelessWidget {
const TextStyle(color: SolidColors.lightText),
thumbColor: SolidColors.yelowColor,
baseBarColor: SolidColors.lightText,
- buffered: controller.bufferedValue.value,
+ buffered: controller.bufferState.value,
progressBarColor: SolidColors.selectedPodCast,
- progress: controller.progressValue.value,
+ progress: controller.progressState.value,
onSeek: (position) {
controller.player.seek(position);
@@ -518,12 +519,12 @@ class SingleManagePodcast extends StatelessWidget {
padding: EdgeInsets.only(top: Dimens.large - 2),
child: ElevatedButton(
style: ButtonStyle(
- fixedSize: MaterialStateProperty.all(
+ fixedSize: WidgetStateProperty.all(
Size(Get.width / 3, Dimens.xlarge - 8))),
onPressed: (() async {
await managePodcastController.titlePodcast();
await managePodcastController.filePodcast();
- await managePodcastController.UpdatePodcast();
+ await managePodcastController.updatePodcast();
}),
child: Text(
MyStrings.verification,
diff --git a/lib/view/podcast/single_podcast.dart b/lib/view/podcast/single_podcast.dart
index 5fab882..2501a05 100644
--- a/lib/view/podcast/single_podcast.dart
+++ b/lib/view/podcast/single_podcast.dart
@@ -1,8 +1,6 @@
import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/material.dart';
-
import 'package:get/get.dart';
-
import 'package:tec/component/dimens.dart';
import 'package:tec/view/widgets/podcast_widgets.dart';
import 'package:tec/constant/my_colors.dart';
@@ -23,8 +21,6 @@ class PodcastSingle extends StatelessWidget {
@override
Widget build(BuildContext context) {
- print(controller.id);
-
var textheme = Theme.of(context).textTheme;
return SafeArea(
child: Scaffold(
@@ -72,15 +68,13 @@ class PodcastSingle extends StatelessWidget {
),
GestureDetector(
onTap: () async {
- await controller.player
- .stop();
- controller.startProgress();
- controller.progressValue
- .value = const Duration(seconds: 0);
- controller
- .selectedIndex.value = 0;
- Get.back();
- },
+ await controller.player.stop();
+ controller.startProgress();
+ controller.progressState.value =
+ const Duration(seconds: 0);
+ controller.selectedIndex.value = 0;
+ Get.back();
+ },
child: Icon(
Icons.arrow_back,
color: SolidColors.lightIcon,
@@ -106,28 +100,23 @@ class PodcastSingle extends StatelessWidget {
),
//title
- Titlee(podcastModel: podcastModel, textheme: textheme),
+ Titlee(podcastModel: podcastModel, textheme: textheme),
//writer
- Writer(podcastModel: podcastModel, textheme: textheme),
+ Writer(podcastModel: podcastModel, textheme: textheme),
//file list
- FileList(controller: controller, textheme: textheme),
+ FileList(controller: controller, textheme: textheme),
]),
),
),
//player manager
- PlayerManager(controller: controller,)
+ PlayerManager(
+ controller: controller,
+ )
],
)),
);
}
}
-
-
-
-
-
-
-
diff --git a/lib/view/register/register_intro.dart b/lib/view/register/register_intro.dart
index 630b31f..d12a4ce 100644
--- a/lib/view/register/register_intro.dart
+++ b/lib/view/register/register_intro.dart
@@ -7,7 +7,6 @@ import 'package:tec/constant/my_colors.dart';
import 'package:tec/controller/register_controller.dart';
import 'package:tec/gen/assets.gen.dart';
import 'package:tec/constant/my_strings.dart';
-
import 'package:validators/validators.dart';
// ignore: must_be_immutable
@@ -28,10 +27,10 @@ class RegisterIntro extends StatelessWidget {
children: [
SvgPicture.asset(
Assets.images.tcbot.path,
- height: Dimens.xlarge+36,
+ height: Dimens.xlarge + 36,
),
Padding(
- padding: EdgeInsets.only(top: Dimens.medium),
+ padding: EdgeInsets.only(top: Dimens.medium),
child: RichText(
textAlign: TextAlign.center,
text: TextSpan(
@@ -41,7 +40,7 @@ class RegisterIntro extends StatelessWidget {
),
),
Padding(
- padding: EdgeInsets.only(top: Dimens.large),
+ padding: EdgeInsets.only(top: Dimens.large),
child: ElevatedButton(
onPressed: () {
_showEmailBottomSheet(context, size, textTheme);
@@ -57,6 +56,7 @@ class RegisterIntro extends StatelessWidget {
Future _showEmailBottomSheet(
BuildContext context, Size size, TextTheme textTheme) {
+ // ignore: prefer_typing_uninitialized_variables
var isValidate;
return showModalBottomSheet(
isScrollControlled: true,
@@ -72,8 +72,8 @@ class RegisterIntro extends StatelessWidget {
decoration: BoxDecoration(
color: SolidColors.lightIcon,
borderRadius: BorderRadius.only(
- topLeft: Radius.circular(Dimens.large-2),
- topRight: Radius.circular(Dimens.large-2),
+ topLeft: Radius.circular(Dimens.large - 2),
+ topRight: Radius.circular(Dimens.large - 2),
),
),
child: Center(
@@ -85,12 +85,13 @@ class RegisterIntro extends StatelessWidget {
style: textTheme.headlineMedium,
),
Padding(
- padding: EdgeInsets.all(Dimens.medium+8),
+ padding: EdgeInsets.all(Dimens.medium + 8),
child: TextFormField(
controller: registerController.emailTextEditingController,
onChanged: (value) {
- debugPrint(
- value + MyStrings.isEmail + isEmail(value).toString());
+ debugPrint(value +
+ MyStrings.isEmail +
+ isEmail(value).toString());
isValidate = EmailValidator.validate(
registerController.emailTextEditingController.text);
},
@@ -106,19 +107,19 @@ class RegisterIntro extends StatelessWidget {
onPressed: (() async {
if (registerController
.emailTextEditingController.text.isEmpty) {
- Get.snackbar(
- MyStrings.error,MyStrings.enterEmaile);
+ Get.snackbar(MyStrings.error, MyStrings.enterEmaile);
} else {
if (isValidate) {
registerController.register();
Navigator.pop(context);
_activateCodeBottomSheet(context, size, textTheme);
} else {
- Get.snackbar( MyStrings.error, MyStrings.formatEmailNotCorrect);
+ Get.snackbar(
+ MyStrings.error, MyStrings.formatEmailNotCorrect);
}
}
}),
- child: Text(MyStrings.continuation),
+ child: Text(MyStrings.continuation),
),
],
)),
@@ -140,11 +141,11 @@ class RegisterIntro extends StatelessWidget {
bottom: MediaQuery.of(context).viewInsets.bottom),
child: Container(
height: size.height / 2,
- decoration: BoxDecoration(
+ decoration: BoxDecoration(
color: SolidColors.lightIcon,
borderRadius: BorderRadius.only(
- topLeft: Radius.circular(Dimens.large-2),
- topRight: Radius.circular(Dimens.large-2),
+ topLeft: Radius.circular(Dimens.large - 2),
+ topRight: Radius.circular(Dimens.large - 2),
),
),
child: Center(
@@ -156,13 +157,13 @@ class RegisterIntro extends StatelessWidget {
style: textTheme.headlineMedium,
),
Padding(
- padding: EdgeInsets.all(Dimens.medium+8),
+ padding: EdgeInsets.all(Dimens.medium + 8),
child: TextField(
controller: registerController
.activeCodeTextEditingController,
onChanged: (value) {
debugPrint(value +
- MyStrings.isEmail+
+ MyStrings.isEmail +
isEmail(value).toString());
},
style: textTheme.headlineSmall,
@@ -176,7 +177,7 @@ class RegisterIntro extends StatelessWidget {
onPressed: (() {
registerController.verify();
}),
- child:Text(MyStrings.continuation))
+ child: Text(MyStrings.continuation))
]),
),
),
diff --git a/lib/view/splash_screen.dart b/lib/view/splash_screen.dart
index 292911a..755c337 100644
--- a/lib/view/splash_screen.dart
+++ b/lib/view/splash_screen.dart
@@ -3,7 +3,6 @@ import 'package:flutter_spinkit/flutter_spinkit.dart';
import 'package:get/get.dart';
import 'package:tec/component/dimens.dart';
import 'package:tec/gen/assets.gen.dart';
-
import 'package:tec/constant/my_colors.dart';
import 'package:tec/route_manager/names.dart';
@@ -18,7 +17,6 @@ class _SplashScreenState extends State {
@override
void initState() {
Future.delayed(const Duration(seconds: 3)).then((value) {
-
Get.offAndToNamed(NamedRoute.routeMainScreen);
});
super.initState();
@@ -31,10 +29,10 @@ class _SplashScreenState extends State {
body: Center(
child: Column(mainAxisAlignment: MainAxisAlignment.center, children: [
Image.asset(Assets.images.logo.path, height: Dimens.xlarge),
- SizedBox(
+ SizedBox(
height: Dimens.large,
),
- SpinKitFadingCube(
+ SpinKitFadingCube(
color: SolidColors.primaryColor,
size: Dimens.large,
)
diff --git a/lib/view/widgets/article_widgets.dart b/lib/view/widgets/article_widgets.dart
index c7f8b1f..89c17e2 100644
--- a/lib/view/widgets/article_widgets.dart
+++ b/lib/view/widgets/article_widgets.dart
@@ -1,6 +1,5 @@
import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/material.dart';
-import 'package:flutter/widgets.dart';
import 'package:get/get.dart';
import 'package:tec/component/dimens.dart';
import 'package:tec/component/my_component.dart';
@@ -47,6 +46,7 @@ class ArticleEmptyState extends StatelessWidget {
}
}
+// ignore: must_be_immutable
class Cats extends StatelessWidget {
Cats(
{Key? key,
@@ -87,7 +87,7 @@ class Cats extends StatelessWidget {
child: Center(
child: Text(
homeScreenController.tagsList[index].title!,
- style: textTheme.headline2,
+ style: textTheme.displayMedium,
),
)),
),
@@ -178,14 +178,14 @@ class Similar extends StatelessWidget {
Text(
singleArticleController
.relatedList[index].author!,
- style: textheme.subtitle1,
+ style: textheme.titleMedium,
),
Row(
children: [
Text(
singleArticleController
.relatedList[index].view!,
- style: textheme.subtitle1,
+ style: textheme.titleMedium,
),
SizedBox(
width: Dimens.small,
@@ -262,7 +262,7 @@ class Tags extends StatelessWidget {
Dimens.small, Dimens.small),
child: Text(
singleArticleController.tagList[index].title!,
- style: textheme.headline2,
+ style: textheme.displayMedium,
)),
),
),
diff --git a/lib/view/widgets/main_widget.dart b/lib/view/widgets/main_widget.dart
index dc37eca..cf65959 100644
--- a/lib/view/widgets/main_widget.dart
+++ b/lib/view/widgets/main_widget.dart
@@ -1,6 +1,5 @@
import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/material.dart';
-import 'package:flutter/widgets.dart';
import 'package:flutter_spinkit/flutter_spinkit.dart';
import 'package:get/get.dart';
import 'package:tec/component/dimens.dart';
@@ -259,6 +258,13 @@ class Poster extends StatelessWidget {
Container(
width: size.width / 1.25,
height: size.height / 4.2,
+ foregroundDecoration: BoxDecoration(
+ borderRadius: BorderRadius.all(Radius.circular(Dimens.medium)),
+ gradient: const LinearGradient(
+ colors: GradientColors.homePosterCoverGradiant,
+ begin: Alignment.topCenter,
+ end: Alignment.bottomCenter,
+ )),
child: CachedNetworkImage(
imageUrl: homeScreenController.poster.value.image!,
imageBuilder: ((context, imageProvider) => Container(
@@ -278,13 +284,6 @@ class Poster extends StatelessWidget {
color: SolidColors.greyColor,
)),
),
- foregroundDecoration: BoxDecoration(
- borderRadius: BorderRadius.all(Radius.circular(Dimens.medium)),
- gradient: const LinearGradient(
- colors: GradientColors.homePosterCoverGradiant,
- begin: Alignment.topCenter,
- end: Alignment.bottomCenter,
- )),
),
Positioned(
bottom: 8,
diff --git a/lib/view/widgets/podcast_widgets.dart b/lib/view/widgets/podcast_widgets.dart
index 842b3ea..2ddfb24 100644
--- a/lib/view/widgets/podcast_widgets.dart
+++ b/lib/view/widgets/podcast_widgets.dart
@@ -1,5 +1,3 @@
-
-
import 'package:audio_video_progress_bar/audio_video_progress_bar.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
@@ -22,30 +20,28 @@ class PodcastEmpty extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Center(
- child: Column(
- mainAxisAlignment: MainAxisAlignment.center,
- children: [
- Image.asset(
- Assets.images.emptyState.path,
- height: Dimens.xlarge + 36,
- ),
- Padding(
- padding: EdgeInsets.only(top: Dimens.medium),
- child: RichText(
- textAlign: TextAlign.center,
- text: TextSpan(
- text: MyStrings.podcastEmpty,
- style: textTheme.headline4,
- )),
- ),
- ],
- ),
- );
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.center,
+ children: [
+ Image.asset(
+ Assets.images.emptyState.path,
+ height: Dimens.xlarge + 36,
+ ),
+ Padding(
+ padding: EdgeInsets.only(top: Dimens.medium),
+ child: RichText(
+ textAlign: TextAlign.center,
+ text: TextSpan(
+ text: MyStrings.podcastEmpty,
+ style: textTheme.headlineMedium,
+ )),
+ ),
+ ],
+ ),
+ );
}
}
-
-
class PlayerManager extends StatelessWidget {
const PlayerManager({
Key? key,
@@ -57,116 +53,115 @@ class PlayerManager extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Positioned(
- bottom: Dimens.small,
- right: Dimens.bodyMargin,
- left: Dimens.bodyMargin,
- child: Container(
- height: Get.height / 7,
- decoration: MyDecorations.mainGradient,
- child: Padding(
- padding: EdgeInsets.all(Dimens.small),
- child: Column(
- mainAxisAlignment: MainAxisAlignment.spaceAround,
- children: [
- Obx(
- () => ProgressBar(
- timeLabelTextStyle: const TextStyle(color: Colors.white),
- thumbColor: SolidColors.yelowColor,
- baseBarColor: SolidColors.lightIcon,
- progressBarColor: SolidColors.selectedPodCast,
- buffered: controller.bufferedValue.value,
- progress: controller.progressValue.value,
- total:
- controller.player.duration ?? const Duration(seconds: 0),
- onSeek: (position) async {
- controller.player.seek(position);
+ bottom: Dimens.small,
+ right: Dimens.bodyMargin,
+ left: Dimens.bodyMargin,
+ child: Container(
+ height: Get.height / 7,
+ decoration: MyDecorations.mainGradient,
+ child: Padding(
+ padding: EdgeInsets.all(Dimens.small),
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.spaceAround,
+ children: [
+ Obx(
+ () => ProgressBar(
+ timeLabelTextStyle: const TextStyle(color: Colors.white),
+ thumbColor: SolidColors.yelowColor,
+ baseBarColor: SolidColors.lightIcon,
+ progressBarColor: SolidColors.selectedPodCast,
+ buffered: controller.bufferState.value,
+ progress: controller.progressState.value,
+ total: controller.player.duration ??
+ const Duration(seconds: 0),
+ onSeek: (position) async {
+ controller.player.seek(position);
- if (controller.player.playing) {
- controller.startProgress();
- } else if (position <= const Duration(seconds: 0)) {
- await controller.player.seekToNext();
- controller.currentFileIndex.value =
- controller.player.currentIndex!;
- controller.timerCheck();
- }
- },
- ),
- ),
- Row(
- mainAxisAlignment: MainAxisAlignment.spaceAround,
- children: [
- GestureDetector(
- onTap: () async {
- await controller.player.seekToNext();
- controller.currentFileIndex.value =
- controller.player.currentIndex!;
- controller.timerCheck();
- },
- child: const Icon(
- Icons.skip_next,
- color: SolidColors.lightIcon,
- ),
- ),
- GestureDetector(
- onTap: () {
- controller.player.playing
- ? controller.timer!.cancel()
- : controller.startProgress();
+ if (controller.player.playing) {
+ controller.startProgress();
+ } else if (position <= const Duration(seconds: 0)) {
+ await controller.player.seekToNext();
+ controller.currentFileIndex.value =
+ controller.player.currentIndex!;
+ controller.timerCheck();
+ }
+ },
+ ),
+ ),
+ Row(
+ mainAxisAlignment: MainAxisAlignment.spaceAround,
+ children: [
+ GestureDetector(
+ onTap: () async {
+ await controller.player.seekToNext();
+ controller.currentFileIndex.value =
+ controller.player.currentIndex!;
+ controller.timerCheck();
+ },
+ child: const Icon(
+ Icons.skip_next,
+ color: SolidColors.lightIcon,
+ ),
+ ),
+ GestureDetector(
+ onTap: () {
+ controller.player.playing
+ ? controller.timer!.cancel()
+ : controller.startProgress();
- controller.player.playing
- ? controller.player.pause()
- : controller.player.play();
+ controller.player.playing
+ ? controller.player.pause()
+ : controller.player.play();
- controller.playState.value = controller.player.playing;
- controller.currentFileIndex.value =
- controller.player.currentIndex!;
- },
- child: Obx(
- () => Icon(
- controller.playState.value
- ? Icons.pause_circle_filled
- : Icons.play_circle_fill,
- color: SolidColors.lightIcon,
- size: Dimens.large + 16,
- ),
- ),
- ),
- GestureDetector(
- onTap: () async {
- await controller.player.seekToPrevious();
- controller.currentFileIndex.value =
- controller.player.currentIndex!;
- controller.timerCheck();
- },
- child: const Icon(
- Icons.skip_previous,
- color: SolidColors.lightIcon,
- ),
+ controller.playState.value = controller.player.playing;
+ controller.currentFileIndex.value =
+ controller.player.currentIndex!;
+ },
+ child: Obx(
+ () => Icon(
+ controller.playState.value
+ ? Icons.pause_circle_filled
+ : Icons.play_circle_fill,
+ color: SolidColors.lightIcon,
+ size: Dimens.large + 16,
+ ),
+ ),
+ ),
+ GestureDetector(
+ onTap: () async {
+ await controller.player.seekToPrevious();
+ controller.currentFileIndex.value =
+ controller.player.currentIndex!;
+ controller.timerCheck();
+ },
+ child: const Icon(
+ Icons.skip_previous,
+ color: SolidColors.lightIcon,
+ ),
+ ),
+ const SizedBox(),
+ Obx(
+ () => GestureDetector(
+ onTap: () {
+ controller.setLoopMode();
+ },
+ child: Icon(
+ Icons.repeat,
+ color: controller.isLoopAll.value
+ ? SolidColors.seeMore
+ : SolidColors.lightIcon,
+ ),
+ ),
+ ),
+ ],
+ )
+ ],
),
- const SizedBox(),
- Obx(
- () => GestureDetector(
- onTap: () {
- controller.setLoopMode();
- },
- child: Icon(
- Icons.repeat,
- color: controller.isLoopAll.value
- ? SolidColors.seeMore
- : SolidColors.lightIcon,
- ),
- ),
- ),
- ],
- )
- ],
- ),
- ),
- ));
+ ),
+ ));
}
}
-
class Titlee extends StatelessWidget {
const Titlee({
Key? key,
@@ -180,21 +175,20 @@ class Titlee extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Padding(
- padding: EdgeInsets.all(Dimens.small),
- child: Align(
- alignment: Alignment.centerRight,
- child: Text(
- podcastModel.title!,
- maxLines: 2,
- textAlign: TextAlign.start,
- style: textheme.titleLarge,
+ padding: EdgeInsets.all(Dimens.small),
+ child: Align(
+ alignment: Alignment.centerRight,
+ child: Text(
+ podcastModel.title!,
+ maxLines: 2,
+ textAlign: TextAlign.start,
+ style: textheme.titleLarge,
+ ),
),
- ),
- );
+ );
}
}
-
class FileList extends StatelessWidget {
const FileList({
Key? key,
@@ -208,79 +202,80 @@ class FileList extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Padding(
- padding: EdgeInsets.all(Dimens.small),
- child: Obx(
- () => ListView.builder(
- itemCount: controller.podcastFileList.length,
- shrinkWrap: true,
- itemBuilder: ((context, index) {
- return index < controller.podcastFileList.length - 1
- ? Padding(
- padding: EdgeInsets.all(Dimens.small),
- child: Row(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: [
- Row(
- children: [
- ImageIcon(
- Image.asset(Assets.icons.microphon.path).image,
- color: SolidColors.seeMore,
- ),
- SizedBox(
- width: Dimens.small,
- ),
- SizedBox(
- width: Get.width / 1.5,
- child: Text(
- controller.podcastFileList[index].title!,
- style: textheme.headline4,
- ),
- ),
- ],
- ),
- Text(controller.podcastFileList[index].lenght! + ":00")
- ],
- ),
- )
- : Column(
- children: [
- Padding(
- padding: EdgeInsets.all(Dimens.small),
- child: Row(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: [
- Row(
- children: [
- ImageIcon(
- Image.asset(Assets.icons.microphon.path)
- .image,
- color: SolidColors.seeMore,
- ),
- const SizedBox(
- width: 8,
- ),
- SizedBox(
- width: Get.width / 1.5,
- child: Text(
- controller.podcastFileList[index].title!,
- style: textheme.headline4,
- ),
- ),
- ],
- ),
- Text(controller.podcastFileList[index].lenght! +
- ":00")
- ],
- ),
- ),
- SizedBox(
- height: Get.height / 1.4,
- )
- ],
- );
- })),
- ),
- );
+ padding: EdgeInsets.all(Dimens.small),
+ child: Obx(
+ () => ListView.builder(
+ itemCount: controller.podcastFileList.length,
+ shrinkWrap: true,
+ itemBuilder: ((context, index) {
+ return index < controller.podcastFileList.length - 1
+ ? Padding(
+ padding: EdgeInsets.all(Dimens.small),
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ Row(
+ children: [
+ ImageIcon(
+ Image.asset(Assets.icons.microphon.path).image,
+ color: SolidColors.seeMore,
+ ),
+ SizedBox(
+ width: Dimens.small,
+ ),
+ SizedBox(
+ width: Get.width / 1.5,
+ child: Text(
+ controller.podcastFileList[index].title!,
+ style: textheme.headlineMedium,
+ ),
+ ),
+ ],
+ ),
+ Text(
+ "${controller.podcastFileList[index].lenght!}:00")
+ ],
+ ),
+ )
+ : Column(
+ children: [
+ Padding(
+ padding: EdgeInsets.all(Dimens.small),
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ Row(
+ children: [
+ ImageIcon(
+ Image.asset(Assets.icons.microphon.path)
+ .image,
+ color: SolidColors.seeMore,
+ ),
+ const SizedBox(
+ width: 8,
+ ),
+ SizedBox(
+ width: Get.width / 1.5,
+ child: Text(
+ controller.podcastFileList[index].title!,
+ style: textheme.headlineMedium,
+ ),
+ ),
+ ],
+ ),
+ Text(
+ "${controller.podcastFileList[index].lenght!}:00")
+ ],
+ ),
+ ),
+ SizedBox(
+ height: Get.height / 1.4,
+ )
+ ],
+ );
+ })),
+ ),
+ );
}
}
@@ -297,25 +292,25 @@ class Writer extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Padding(
- padding: EdgeInsets.all(Dimens.small),
- child: Row(
- children: [
- Image(
- image: Image.asset(Assets.images.profileAvatar.path).image,
- height: Dimens.xlarge - 14,
- ),
- SizedBox(
- width: Dimens.medium,
- ),
- Text(
- podcastModel.publisher!,
- style: textheme.headline4,
+ padding: EdgeInsets.all(Dimens.small),
+ child: Row(
+ children: [
+ Image(
+ image: Image.asset(Assets.images.profileAvatar.path).image,
+ height: Dimens.xlarge - 14,
+ ),
+ SizedBox(
+ width: Dimens.medium,
),
- SizedBox(
- width: Dimens.medium,
- )
- ],
- ),
- );
+ Text(
+ podcastModel.publisher!,
+ style: textheme.headlineMedium,
+ ),
+ SizedBox(
+ width: Dimens.medium,
+ )
+ ],
+ ),
+ );
}
-}
\ No newline at end of file
+}
diff --git a/pubspec.lock b/pubspec.lock
index e3cb1bc..5da8322 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -1,242 +1,347 @@
# Generated by pub
# See https://dart.dev/tools/pub/glossary#lockfile
packages:
+ args:
+ dependency: transitive
+ description:
+ name: args
+ sha256: "7cf60b9f0cc88203c5a190b4cd62a99feea42759a7fa695010eb5de1c0b2252a"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.5.0"
async:
dependency: transitive
description:
name: async
- url: "https://pub.dartlang.org"
+ sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
+ url: "https://pub.dev"
source: hosted
- version: "2.9.0"
+ version: "2.11.0"
audio_session:
dependency: transitive
description:
name: audio_session
- url: "https://pub.dartlang.org"
+ sha256: "343e83bc7809fbda2591a49e525d6b63213ade10c76f15813be9aed6657b3261"
+ url: "https://pub.dev"
source: hosted
- version: "0.1.13"
+ version: "0.1.21"
audio_video_progress_bar:
dependency: "direct main"
description:
name: audio_video_progress_bar
- url: "https://pub.dartlang.org"
+ sha256: "552b1f73c56c4c88407999e0a8507176f60c56de3e6d63bc20a0eab48467d4c9"
+ url: "https://pub.dev"
source: hosted
- version: "0.11.0"
+ version: "2.0.3"
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"
cached_network_image:
dependency: "direct main"
description:
name: cached_network_image
- url: "https://pub.dartlang.org"
+ sha256: "7c1183e361e5c8b0a0f21a28401eecdbde252441106a9816400dd4c2b2424916"
+ url: "https://pub.dev"
source: hosted
- version: "3.2.3"
+ version: "3.4.1"
cached_network_image_platform_interface:
dependency: transitive
description:
name: cached_network_image_platform_interface
- url: "https://pub.dartlang.org"
+ sha256: "35814b016e37fbdc91f7ae18c8caf49ba5c88501813f73ce8a07027a395e2829"
+ url: "https://pub.dev"
source: hosted
- version: "2.0.0"
+ version: "4.1.1"
cached_network_image_web:
dependency: transitive
description:
name: cached_network_image_web
- url: "https://pub.dartlang.org"
+ sha256: "980842f4e8e2535b8dbd3d5ca0b1f0ba66bf61d14cc3a17a9b4788a3685ba062"
+ url: "https://pub.dev"
source: hosted
- version: "1.0.2"
+ version: "1.3.1"
characters:
dependency: transitive
description:
name: characters
- url: "https://pub.dartlang.org"
+ sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605"
+ url: "https://pub.dev"
source: hosted
- version: "1.2.1"
+ version: "1.3.0"
chewie:
dependency: transitive
description:
name: chewie
- url: "https://pub.dartlang.org"
+ sha256: "335df378c025588aef400c704bd71f0daea479d4cd57c471c88c056c1144e7cd"
+ url: "https://pub.dev"
source: hosted
- version: "1.4.0"
+ version: "1.8.5"
clock:
dependency: transitive
description:
name: clock
- url: "https://pub.dartlang.org"
+ sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
+ url: "https://pub.dev"
source: hosted
version: "1.1.1"
collection:
dependency: transitive
description:
name: collection
- url: "https://pub.dartlang.org"
+ sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
+ url: "https://pub.dev"
source: hosted
- version: "1.16.0"
+ version: "1.18.0"
cross_file:
dependency: transitive
description:
name: cross_file
- url: "https://pub.dartlang.org"
+ sha256: "7caf6a750a0c04effbb52a676dce9a4a592e10ad35c34d6d2d0e4811160d5670"
+ url: "https://pub.dev"
source: hosted
- version: "0.3.3+4"
+ version: "0.3.4+2"
crypto:
dependency: transitive
description:
name: crypto
- url: "https://pub.dartlang.org"
+ sha256: ec30d999af904f33454ba22ed9a86162b35e52b44ac4807d1d93c288041d7d27
+ url: "https://pub.dev"
source: hosted
- version: "3.0.2"
+ version: "3.0.5"
csslib:
dependency: transitive
description:
name: csslib
- url: "https://pub.dartlang.org"
+ sha256: "706b5707578e0c1b4b7550f64078f0a0f19dec3f50a178ffae7006b0a9ca58fb"
+ url: "https://pub.dev"
source: hosted
- version: "0.17.2"
+ version: "1.0.0"
cupertino_icons:
dependency: "direct main"
description:
name: cupertino_icons
- url: "https://pub.dartlang.org"
+ sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6
+ url: "https://pub.dev"
source: hosted
- version: "1.0.5"
+ version: "1.0.8"
+ dbus:
+ dependency: transitive
+ description:
+ name: dbus
+ sha256: "365c771ac3b0e58845f39ec6deebc76e3276aa9922b0cc60840712094d9047ac"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.7.10"
dio:
dependency: "direct main"
description:
name: dio
- url: "https://pub.dartlang.org"
+ sha256: "5598aa796bbf4699afd5c67c0f5f6e2ed542afc956884b9cd58c306966efc260"
+ url: "https://pub.dev"
+ source: hosted
+ version: "5.7.0"
+ dio_web_adapter:
+ dependency: transitive
+ description:
+ name: dio_web_adapter
+ sha256: "33259a9276d6cea88774a0000cfae0d861003497755969c92faa223108620dc8"
+ url: "https://pub.dev"
source: hosted
- version: "4.0.6"
+ version: "2.0.0"
email_validator:
dependency: "direct main"
description:
name: email_validator
- url: "https://pub.dartlang.org"
+ sha256: b19aa5d92fdd76fbc65112060c94d45ba855105a28bb6e462de7ff03b12fa1fb
+ url: "https://pub.dev"
source: hosted
- version: "2.1.17"
+ version: "3.0.0"
fake_async:
dependency: transitive
description:
name: fake_async
- url: "https://pub.dartlang.org"
+ sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78"
+ url: "https://pub.dev"
source: hosted
version: "1.3.1"
ffi:
dependency: transitive
description:
name: ffi
- url: "https://pub.dartlang.org"
+ sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6"
+ url: "https://pub.dev"
source: hosted
- version: "2.0.1"
+ version: "2.1.3"
file:
dependency: transitive
description:
name: file
- url: "https://pub.dartlang.org"
+ sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c"
+ url: "https://pub.dev"
source: hosted
- version: "6.1.4"
+ version: "7.0.0"
file_picker:
dependency: "direct main"
description:
name: file_picker
- url: "https://pub.dartlang.org"
+ sha256: "167bb619cdddaa10ef2907609feb8a79c16dfa479d3afaf960f8e223f754bf12"
+ url: "https://pub.dev"
source: hosted
- version: "5.2.5"
+ version: "8.1.2"
+ fixnum:
+ dependency: transitive
+ description:
+ name: fixnum
+ sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.0"
flex_color_picker:
dependency: transitive
description:
name: flex_color_picker
- url: "https://pub.dartlang.org"
+ sha256: "809af4ec82ede3b140ed0219b97d548de99e47aa4b99b14a10f705a2dbbcba5e"
+ url: "https://pub.dev"
source: hosted
- version: "3.0.2"
+ version: "3.5.1"
flex_seed_scheme:
dependency: transitive
description:
name: flex_seed_scheme
- url: "https://pub.dartlang.org"
+ sha256: "7d97ba5c20f0e5cb1e3e2c17c865e1f797d129de31fc1f75d2dcce9470d6373c"
+ url: "https://pub.dev"
source: hosted
- version: "1.1.0"
+ version: "3.3.0"
flutter:
dependency: "direct main"
description: flutter
source: sdk
version: "0.0.0"
- flutter_blurhash:
- dependency: transitive
- description:
- name: flutter_blurhash
- url: "https://pub.dartlang.org"
- source: hosted
- version: "0.7.0"
flutter_cache_manager:
dependency: transitive
description:
name: flutter_cache_manager
- url: "https://pub.dartlang.org"
+ sha256: "400b6592f16a4409a7f2bb929a9a7e38c72cceb8ffb99ee57bbf2cb2cecf8386"
+ url: "https://pub.dev"
source: hosted
- version: "3.3.0"
+ version: "3.4.1"
flutter_inappwebview:
dependency: transitive
description:
name: flutter_inappwebview
- url: "https://pub.dartlang.org"
+ sha256: "3e9a443a18ecef966fb930c3a76ca5ab6a7aafc0c7b5e14a4a850cf107b09959"
+ url: "https://pub.dev"
source: hosted
- version: "5.7.2+3"
+ version: "6.0.0"
+ flutter_inappwebview_android:
+ dependency: transitive
+ description:
+ name: flutter_inappwebview_android
+ sha256: d247f6ed417f1f8c364612fa05a2ecba7f775c8d0c044c1d3b9ee33a6515c421
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.0.13"
+ flutter_inappwebview_internal_annotations:
+ dependency: transitive
+ description:
+ name: flutter_inappwebview_internal_annotations
+ sha256: "5f80fd30e208ddded7dbbcd0d569e7995f9f63d45ea3f548d8dd4c0b473fb4c8"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.1"
+ flutter_inappwebview_ios:
+ dependency: transitive
+ description:
+ name: flutter_inappwebview_ios
+ sha256: f363577208b97b10b319cd0c428555cd8493e88b468019a8c5635a0e4312bd0f
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.0.13"
+ flutter_inappwebview_macos:
+ dependency: transitive
+ description:
+ name: flutter_inappwebview_macos
+ sha256: b55b9e506c549ce88e26580351d2c71d54f4825901666bd6cfa4be9415bb2636
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.0.11"
+ flutter_inappwebview_platform_interface:
+ dependency: transitive
+ description:
+ name: flutter_inappwebview_platform_interface
+ sha256: "545fd4c25a07d2775f7d5af05a979b2cac4fbf79393b0a7f5d33ba39ba4f6187"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.0.10"
+ flutter_inappwebview_web:
+ dependency: transitive
+ description:
+ name: flutter_inappwebview_web
+ sha256: d8c680abfb6fec71609a700199635d38a744df0febd5544c5a020bd73de8ee07
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.0.8"
flutter_keyboard_visibility:
dependency: transitive
description:
name: flutter_keyboard_visibility
- url: "https://pub.dartlang.org"
+ sha256: "98664be7be0e3ffca00de50f7f6a287ab62c763fc8c762e0a21584584a3ff4f8"
+ url: "https://pub.dev"
source: hosted
- version: "5.4.0"
+ version: "6.0.0"
flutter_keyboard_visibility_linux:
dependency: transitive
description:
name: flutter_keyboard_visibility_linux
- url: "https://pub.dartlang.org"
+ sha256: "6fba7cd9bb033b6ddd8c2beb4c99ad02d728f1e6e6d9b9446667398b2ac39f08"
+ url: "https://pub.dev"
source: hosted
version: "1.0.0"
flutter_keyboard_visibility_macos:
dependency: transitive
description:
name: flutter_keyboard_visibility_macos
- url: "https://pub.dartlang.org"
+ sha256: c5c49b16fff453dfdafdc16f26bdd8fb8d55812a1d50b0ce25fc8d9f2e53d086
+ url: "https://pub.dev"
source: hosted
version: "1.0.0"
flutter_keyboard_visibility_platform_interface:
dependency: transitive
description:
name: flutter_keyboard_visibility_platform_interface
- url: "https://pub.dartlang.org"
+ sha256: e43a89845873f7be10cb3884345ceb9aebf00a659f479d1c8f4293fcb37022a4
+ url: "https://pub.dev"
source: hosted
version: "2.0.0"
flutter_keyboard_visibility_web:
dependency: transitive
description:
name: flutter_keyboard_visibility_web
- url: "https://pub.dartlang.org"
+ sha256: d3771a2e752880c79203f8d80658401d0c998e4183edca05a149f5098ce6e3d1
+ url: "https://pub.dev"
source: hosted
version: "2.0.0"
flutter_keyboard_visibility_windows:
dependency: transitive
description:
name: flutter_keyboard_visibility_windows
- url: "https://pub.dartlang.org"
+ sha256: fc4b0f0b6be9b93ae527f3d527fb56ee2d918cd88bbca438c478af7bcfd0ef73
+ url: "https://pub.dev"
source: hosted
version: "1.0.0"
flutter_lints:
dependency: "direct dev"
description:
name: flutter_lints
- url: "https://pub.dartlang.org"
+ sha256: "3f41d009ba7172d5ff9be5f6e6e6abb4300e263aab8866d2a0842ed2a70f8f0c"
+ url: "https://pub.dev"
source: hosted
- version: "1.0.4"
+ version: "4.0.0"
flutter_localizations:
dependency: "direct main"
description: flutter
@@ -246,23 +351,26 @@ packages:
dependency: transitive
description:
name: flutter_plugin_android_lifecycle
- url: "https://pub.dartlang.org"
+ sha256: "9ee02950848f61c4129af3d6ec84a1cfc0e47931abc746b03e7a3bc3e8ff6eda"
+ url: "https://pub.dev"
source: hosted
- version: "2.0.8"
+ version: "2.0.22"
flutter_spinkit:
dependency: "direct main"
description:
name: flutter_spinkit
- url: "https://pub.dartlang.org"
+ sha256: d2696eed13732831414595b98863260e33e8882fc069ee80ec35d4ac9ddb0472
+ url: "https://pub.dev"
source: hosted
- version: "5.1.0"
+ version: "5.2.1"
flutter_svg:
dependency: "direct main"
description:
name: flutter_svg
- url: "https://pub.dartlang.org"
+ sha256: "7b4ca6cf3304575fe9c8ec64813c8d02ee41d2afe60bcfe0678bcb5375d596a2"
+ url: "https://pub.dev"
source: hosted
- version: "1.1.6"
+ version: "2.0.10+1"
flutter_test:
dependency: "direct dev"
description: flutter
@@ -277,380 +385,434 @@ packages:
dependency: "direct main"
description:
name: flutter_widget_from_html
- url: "https://pub.dartlang.org"
+ sha256: "9e2a6201c4d2eb910b6b3ebb2a9f5c490fc61c9a1aa35eafdde38f0fc659cf4c"
+ url: "https://pub.dev"
source: hosted
- version: "0.8.5"
+ version: "0.15.2"
flutter_widget_from_html_core:
dependency: transitive
description:
name: flutter_widget_from_html_core
- url: "https://pub.dartlang.org"
+ sha256: b1048fd119a14762e2361bd057da608148a895477846d6149109b2151d2f7abf
+ url: "https://pub.dev"
source: hosted
- version: "0.8.5+3"
+ version: "0.15.2"
fwfh_cached_network_image:
dependency: transitive
description:
name: fwfh_cached_network_image
- url: "https://pub.dartlang.org"
+ sha256: "8e44226801bfba27930673953afce8af44da7e92573be93f60385d9865a089dd"
+ url: "https://pub.dev"
source: hosted
- version: "0.7.0+4"
+ version: "0.14.3"
fwfh_chewie:
dependency: transitive
description:
name: fwfh_chewie
- url: "https://pub.dartlang.org"
+ sha256: "37bde9cedfb6dc5546176f7f0c56af1e814966cb33ec58f16c9565ed93ccb704"
+ url: "https://pub.dev"
source: hosted
- version: "0.7.1+1"
+ version: "0.14.8"
fwfh_just_audio:
dependency: transitive
description:
name: fwfh_just_audio
- url: "https://pub.dartlang.org"
+ sha256: "38dc2c55803bd3cef33042c473e0c40b891ad4548078424641a32032f6a1245f"
+ url: "https://pub.dev"
source: hosted
- version: "0.6.2+2"
- fwfh_selectable_text:
- dependency: transitive
- description:
- name: fwfh_selectable_text
- url: "https://pub.dartlang.org"
- source: hosted
- version: "0.8.3+1"
+ version: "0.15.2"
fwfh_svg:
dependency: transitive
description:
name: fwfh_svg
- url: "https://pub.dartlang.org"
- source: hosted
- version: "0.7.2+1"
- fwfh_text_style:
- dependency: transitive
- description:
- name: fwfh_text_style
- url: "https://pub.dartlang.org"
+ sha256: "550b1014d12b5528d8bdb6e3b44b58721f3fb1f65d7a852d1623a817008bdfc4"
+ url: "https://pub.dev"
source: hosted
- version: "2.22.08+1"
+ version: "0.8.3"
fwfh_url_launcher:
dependency: transitive
description:
name: fwfh_url_launcher
- url: "https://pub.dartlang.org"
+ sha256: b9f5d55a5ae2c2c07243ba33f7ba49ac9544bdb2f4c16d8139df9ccbebe3449c
+ url: "https://pub.dev"
source: hosted
- version: "0.6.1+3"
+ version: "0.9.1"
fwfh_webview:
dependency: transitive
description:
name: fwfh_webview
- url: "https://pub.dartlang.org"
+ sha256: f67890bc0d6278da98bd197469ae9511c859f7db327e92299fe0ea0cf46c4057
+ url: "https://pub.dev"
source: hosted
- version: "0.6.2+5"
+ version: "0.15.2"
get:
dependency: "direct main"
description:
name: get
- url: "https://pub.dartlang.org"
+ sha256: e4e7335ede17452b391ed3b2ede016545706c01a02292a6c97619705e7d2a85e
+ url: "https://pub.dev"
source: hosted
- version: "4.6.5"
+ version: "4.6.6"
get_storage:
dependency: "direct main"
description:
name: get_storage
- url: "https://pub.dartlang.org"
+ sha256: "39db1fffe779d0c22b3a744376e86febe4ade43bf65e06eab5af707dc84185a2"
+ url: "https://pub.dev"
source: hosted
- version: "2.0.3"
+ version: "2.1.1"
html:
dependency: transitive
description:
name: html
- url: "https://pub.dartlang.org"
+ sha256: "3a7812d5bcd2894edf53dfaf8cd640876cf6cef50a8f238745c8b8120ea74d3a"
+ url: "https://pub.dev"
source: hosted
- version: "0.15.1"
+ version: "0.15.4"
html_editor_enhanced:
dependency: "direct main"
description:
name: html_editor_enhanced
- url: "https://pub.dartlang.org"
+ sha256: "5ae6cd965cca77f7186efccc47ca353799e831b31bd71438687a56131bbcd3a5"
+ url: "https://pub.dev"
source: hosted
- version: "2.5.1"
+ version: "2.6.0"
http:
dependency: transitive
description:
name: http
- url: "https://pub.dartlang.org"
+ sha256: b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010
+ url: "https://pub.dev"
source: hosted
- version: "0.13.5"
+ version: "1.2.2"
http_parser:
dependency: transitive
description:
name: http_parser
- url: "https://pub.dartlang.org"
+ sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
+ url: "https://pub.dev"
source: hosted
version: "4.0.2"
infinite_listview:
dependency: transitive
description:
name: infinite_listview
- url: "https://pub.dartlang.org"
+ sha256: f6062c1720eb59be553dfa6b89813d3e8dd2f054538445aaa5edaddfa5195ce6
+ url: "https://pub.dev"
source: hosted
version: "1.1.0"
intl:
dependency: transitive
description:
name: intl
- url: "https://pub.dartlang.org"
+ sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf
+ url: "https://pub.dev"
source: hosted
- version: "0.17.0"
+ version: "0.19.0"
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"
just_audio:
dependency: "direct main"
description:
name: just_audio
- url: "https://pub.dartlang.org"
+ sha256: d8e8aaf417d33e345299c17f6457f72bd4ba0c549dc34607abb5183a354edc4d
+ url: "https://pub.dev"
source: hosted
- version: "0.9.31"
+ version: "0.9.40"
just_audio_platform_interface:
dependency: transitive
description:
name: just_audio_platform_interface
- url: "https://pub.dartlang.org"
+ sha256: "0243828cce503c8366cc2090cefb2b3c871aa8ed2f520670d76fd47aa1ab2790"
+ url: "https://pub.dev"
source: hosted
- version: "4.2.0"
+ version: "4.3.0"
just_audio_web:
dependency: transitive
description:
name: just_audio_web
- url: "https://pub.dartlang.org"
+ sha256: b163878529d9b028c53a6972fcd58cae2405bcd11cbfcea620b6fb9f151429d6
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.4.12"
+ leak_tracker:
+ dependency: transitive
+ description:
+ name: leak_tracker
+ sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05"
+ url: "https://pub.dev"
+ source: hosted
+ version: "10.0.5"
+ leak_tracker_flutter_testing:
+ dependency: transitive
+ description:
+ name: leak_tracker_flutter_testing
+ sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806"
+ url: "https://pub.dev"
source: hosted
- version: "0.4.7"
+ version: "3.0.5"
+ leak_tracker_testing:
+ dependency: transitive
+ description:
+ name: leak_tracker_testing
+ sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.0.1"
lints:
dependency: transitive
description:
name: lints
- url: "https://pub.dartlang.org"
+ sha256: "976c774dd944a42e83e2467f4cc670daef7eed6295b10b36ae8c85bcbf828235"
+ url: "https://pub.dev"
source: hosted
- version: "1.0.1"
+ version: "4.0.0"
+ logging:
+ dependency: transitive
+ description:
+ name: logging
+ sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.2.0"
matcher:
dependency: transitive
description:
name: matcher
- url: "https://pub.dartlang.org"
+ sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb
+ url: "https://pub.dev"
source: hosted
- version: "0.12.12"
+ version: "0.12.16+1"
material_color_utilities:
dependency: transitive
description:
name: material_color_utilities
- url: "https://pub.dartlang.org"
+ sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec
+ url: "https://pub.dev"
source: hosted
- version: "0.1.5"
+ version: "0.11.1"
meta:
dependency: transitive
description:
name: meta
- url: "https://pub.dartlang.org"
+ sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7
+ url: "https://pub.dev"
source: hosted
- version: "1.8.0"
+ version: "1.15.0"
mime:
dependency: transitive
description:
name: mime
- url: "https://pub.dartlang.org"
+ sha256: "801fd0b26f14a4a58ccb09d5892c3fbdeff209594300a542492cf13fba9d247a"
+ url: "https://pub.dev"
source: hosted
- version: "1.0.4"
+ version: "1.0.6"
nested:
dependency: transitive
description:
name: nested
- url: "https://pub.dartlang.org"
+ sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20"
+ url: "https://pub.dev"
source: hosted
version: "1.0.0"
numberpicker:
- dependency: transitive
+ dependency: "direct main"
description:
name: numberpicker
- url: "https://pub.dartlang.org"
+ sha256: "4c129154944b0f6b133e693f8749c3f8bfb67c4d07ef9dcab48b595c22d1f156"
+ url: "https://pub.dev"
source: hosted
- version: "2.1.1"
+ version: "2.1.2"
octo_image:
dependency: transitive
description:
name: octo_image
- url: "https://pub.dartlang.org"
+ sha256: "34faa6639a78c7e3cbe79be6f9f96535867e879748ade7d17c9b1ae7536293bd"
+ url: "https://pub.dev"
source: hosted
- version: "1.0.2"
- path:
+ version: "2.1.0"
+ package_info_plus:
dependency: transitive
description:
- name: path
- url: "https://pub.dartlang.org"
+ name: package_info_plus
+ sha256: a75164ade98cb7d24cfd0a13c6408927c6b217fa60dee5a7ff5c116a58f28918
+ url: "https://pub.dev"
source: hosted
- version: "1.8.2"
- path_drawing:
+ version: "8.0.2"
+ package_info_plus_platform_interface:
dependency: transitive
description:
- name: path_drawing
- url: "https://pub.dartlang.org"
+ name: package_info_plus_platform_interface
+ sha256: ac1f4a4847f1ade8e6a87d1f39f5d7c67490738642e2542f559ec38c37489a66
+ url: "https://pub.dev"
source: hosted
- version: "1.0.1"
+ version: "3.0.1"
+ path:
+ dependency: transitive
+ description:
+ name: path
+ sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.9.0"
path_parsing:
dependency: transitive
description:
name: path_parsing
- url: "https://pub.dartlang.org"
+ sha256: e3e67b1629e6f7e8100b367d3db6ba6af4b1f0bb80f64db18ef1fbabd2fa9ccf
+ url: "https://pub.dev"
source: hosted
version: "1.0.1"
path_provider:
dependency: transitive
description:
name: path_provider
- url: "https://pub.dartlang.org"
+ sha256: fec0d61223fba3154d87759e3cc27fe2c8dc498f6386c6d6fc80d1afdd1bf378
+ url: "https://pub.dev"
source: hosted
- version: "2.0.13"
+ version: "2.1.4"
path_provider_android:
dependency: transitive
description:
name: path_provider_android
- url: "https://pub.dartlang.org"
+ sha256: "6f01f8e37ec30b07bc424b4deabac37cacb1bc7e2e515ad74486039918a37eb7"
+ url: "https://pub.dev"
source: hosted
- version: "2.0.23"
+ version: "2.2.10"
path_provider_foundation:
dependency: transitive
description:
name: path_provider_foundation
- url: "https://pub.dartlang.org"
+ sha256: f234384a3fdd67f989b4d54a5d73ca2a6c422fa55ae694381ae0f4375cd1ea16
+ url: "https://pub.dev"
source: hosted
- version: "2.1.2"
+ version: "2.4.0"
path_provider_linux:
dependency: transitive
description:
name: path_provider_linux
- url: "https://pub.dartlang.org"
+ sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279
+ url: "https://pub.dev"
source: hosted
- version: "2.1.9"
+ version: "2.2.1"
path_provider_platform_interface:
dependency: transitive
description:
name: path_provider_platform_interface
- url: "https://pub.dartlang.org"
+ sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334"
+ url: "https://pub.dev"
source: hosted
- version: "2.0.6"
+ version: "2.1.2"
path_provider_windows:
dependency: transitive
description:
name: path_provider_windows
- url: "https://pub.dartlang.org"
- source: hosted
- version: "2.1.4"
- pedantic:
- dependency: transitive
- description:
- name: pedantic
- url: "https://pub.dartlang.org"
+ sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7
+ url: "https://pub.dev"
source: hosted
- version: "1.11.1"
+ version: "2.3.0"
percent_indicator:
dependency: "direct main"
description:
name: percent_indicator
- url: "https://pub.dartlang.org"
+ sha256: c37099ad833a883c9d71782321cb65c3a848c21b6939b6185f0ff6640d05814c
+ url: "https://pub.dev"
source: hosted
- version: "4.2.2"
+ version: "4.2.3"
petitparser:
dependency: transitive
description:
name: petitparser
- url: "https://pub.dartlang.org"
+ sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27
+ url: "https://pub.dev"
source: hosted
- version: "5.1.0"
+ version: "6.0.2"
platform:
dependency: transitive
description:
name: platform
- url: "https://pub.dartlang.org"
+ sha256: "9b71283fc13df574056616011fb138fd3b793ea47cc509c189a6c3fa5f8a1a65"
+ url: "https://pub.dev"
source: hosted
- version: "3.1.0"
+ version: "3.1.5"
plugin_platform_interface:
dependency: transitive
description:
name: plugin_platform_interface
- url: "https://pub.dartlang.org"
+ sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02"
+ url: "https://pub.dev"
source: hosted
- version: "2.1.4"
+ version: "2.1.8"
pointer_interceptor:
dependency: transitive
description:
name: pointer_interceptor
- url: "https://pub.dartlang.org"
+ sha256: "57210410680379aea8b1b7ed6ae0c3ad349bfd56fe845b8ea934a53344b9d523"
+ url: "https://pub.dev"
source: hosted
- version: "0.9.3+4"
- process:
+ version: "0.10.1+2"
+ pointer_interceptor_ios:
dependency: transitive
description:
- name: process
- url: "https://pub.dartlang.org"
+ name: pointer_interceptor_ios
+ sha256: a6906772b3205b42c44614fcea28f818b1e5fdad73a4ca742a7bd49818d9c917
+ url: "https://pub.dev"
source: hosted
- version: "4.2.4"
+ version: "0.10.1"
+ pointer_interceptor_platform_interface:
+ dependency: transitive
+ description:
+ name: pointer_interceptor_platform_interface
+ sha256: "0597b0560e14354baeb23f8375cd612e8bd4841bf8306ecb71fcd0bb78552506"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.10.0+1"
+ pointer_interceptor_web:
+ dependency: transitive
+ description:
+ name: pointer_interceptor_web
+ sha256: "7a7087782110f8c1827170660b09f8aa893e0e9a61431dbbe2ac3fc482e8c044"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.10.2+1"
provider:
dependency: transitive
description:
name: provider
- url: "https://pub.dartlang.org"
+ sha256: c8a055ee5ce3fd98d6fc872478b03823ffdb448699c6ebdbbc71d59b596fd48c
+ url: "https://pub.dev"
source: hosted
- version: "6.0.5"
+ version: "6.1.2"
rxdart:
dependency: transitive
description:
name: rxdart
- url: "https://pub.dartlang.org"
+ sha256: "5c3004a4a8dbb94bd4bf5412a4def4acdaa12e12f269737a5751369e12d1a962"
+ url: "https://pub.dev"
source: hosted
- version: "0.27.7"
+ version: "0.28.0"
share_plus:
dependency: "direct main"
description:
name: share_plus
- url: "https://pub.dartlang.org"
+ sha256: "468c43f285207c84bcabf5737f33b914ceb8eb38398b91e5e3ad1698d1b72a52"
+ url: "https://pub.dev"
source: hosted
- version: "4.5.3"
- share_plus_linux:
- dependency: transitive
- description:
- name: share_plus_linux
- url: "https://pub.dartlang.org"
- source: hosted
- version: "3.0.1"
- share_plus_macos:
- dependency: transitive
- description:
- name: share_plus_macos
- url: "https://pub.dartlang.org"
- source: hosted
- version: "3.0.1"
+ version: "10.0.2"
share_plus_platform_interface:
dependency: transitive
description:
name: share_plus_platform_interface
- url: "https://pub.dartlang.org"
+ sha256: "6ababf341050edff57da8b6990f11f4e99eaba837865e2e6defe16d039619db5"
+ url: "https://pub.dev"
source: hosted
- version: "3.2.0"
- share_plus_web:
- dependency: transitive
- description:
- name: share_plus_web
- url: "https://pub.dartlang.org"
- source: hosted
- version: "3.1.0"
- share_plus_windows:
- dependency: transitive
- description:
- name: share_plus_windows
- url: "https://pub.dartlang.org"
- source: hosted
- version: "3.0.1"
+ version: "5.0.0"
sky_engine:
dependency: transitive
description: flutter
@@ -660,282 +822,346 @@ packages:
dependency: transitive
description:
name: source_span
- url: "https://pub.dartlang.org"
+ sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
+ url: "https://pub.dev"
source: hosted
- version: "1.9.0"
+ version: "1.10.0"
+ sprintf:
+ dependency: transitive
+ description:
+ name: sprintf
+ sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23"
+ url: "https://pub.dev"
+ source: hosted
+ version: "7.0.0"
sqflite:
dependency: transitive
description:
name: sqflite
- url: "https://pub.dartlang.org"
+ sha256: a43e5a27235518c03ca238e7b4732cf35eabe863a369ceba6cbefa537a66f16d
+ url: "https://pub.dev"
source: hosted
- version: "2.2.4+1"
+ version: "2.3.3+1"
sqflite_common:
dependency: transitive
description:
name: sqflite_common
- url: "https://pub.dartlang.org"
+ sha256: "4058172e418eb7e7f2058dcb7657d451a8fc264afa0dea4dbd0f304a57131611"
+ url: "https://pub.dev"
source: hosted
- version: "2.4.2+2"
+ version: "2.5.4+3"
stack_trace:
dependency: transitive
description:
name: stack_trace
- url: "https://pub.dartlang.org"
+ sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
+ url: "https://pub.dev"
source: hosted
- version: "1.10.0"
+ version: "1.11.1"
stream_channel:
dependency: transitive
description:
name: stream_channel
- url: "https://pub.dartlang.org"
+ sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7
+ url: "https://pub.dev"
source: hosted
- version: "2.1.0"
+ version: "2.1.2"
string_scanner:
dependency: transitive
description:
name: string_scanner
- url: "https://pub.dartlang.org"
+ sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
+ url: "https://pub.dev"
source: hosted
- version: "1.1.1"
+ version: "1.2.0"
synchronized:
dependency: transitive
description:
name: synchronized
- url: "https://pub.dartlang.org"
+ sha256: "51b08572b9f091f8c3eb4d9d4be253f196ff0075d5ec9b10a884026d5b55d7bc"
+ url: "https://pub.dev"
source: hosted
- version: "3.0.1"
+ version: "3.3.0+2"
term_glyph:
dependency: transitive
description:
name: term_glyph
- url: "https://pub.dartlang.org"
+ sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
+ url: "https://pub.dev"
source: hosted
version: "1.2.1"
test_api:
dependency: transitive
description:
name: test_api
- url: "https://pub.dartlang.org"
+ sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb"
+ url: "https://pub.dev"
source: hosted
- version: "0.4.12"
+ version: "0.7.2"
typed_data:
dependency: transitive
description:
name: typed_data
- url: "https://pub.dartlang.org"
+ sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c
+ url: "https://pub.dev"
source: hosted
- version: "1.3.1"
+ version: "1.3.2"
url_launcher:
dependency: "direct main"
description:
name: url_launcher
- url: "https://pub.dartlang.org"
+ sha256: "21b704ce5fa560ea9f3b525b43601c678728ba46725bab9b01187b4831377ed3"
+ url: "https://pub.dev"
source: hosted
- version: "6.1.10"
+ version: "6.3.0"
url_launcher_android:
dependency: transitive
description:
name: url_launcher_android
- url: "https://pub.dartlang.org"
+ sha256: e35a698ac302dd68e41f73250bd9517fe3ab5fa4f18fe4647a0872db61bacbab
+ url: "https://pub.dev"
source: hosted
- version: "6.0.24"
+ version: "6.3.10"
url_launcher_ios:
dependency: transitive
description:
name: url_launcher_ios
- url: "https://pub.dartlang.org"
+ sha256: e43b677296fadce447e987a2f519dcf5f6d1e527dc35d01ffab4fff5b8a7063e
+ url: "https://pub.dev"
source: hosted
- version: "6.1.1"
+ version: "6.3.1"
url_launcher_linux:
dependency: transitive
description:
name: url_launcher_linux
- url: "https://pub.dartlang.org"
+ sha256: e2b9622b4007f97f504cd64c0128309dfb978ae66adbe944125ed9e1750f06af
+ url: "https://pub.dev"
source: hosted
- version: "3.0.3"
+ version: "3.2.0"
url_launcher_macos:
dependency: transitive
description:
name: url_launcher_macos
- url: "https://pub.dartlang.org"
+ sha256: "9a1a42d5d2d95400c795b2914c36fdcb525870c752569438e4ebb09a2b5d90de"
+ url: "https://pub.dev"
source: hosted
- version: "3.0.3"
+ version: "3.2.0"
url_launcher_platform_interface:
dependency: transitive
description:
name: url_launcher_platform_interface
- url: "https://pub.dartlang.org"
+ sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029"
+ url: "https://pub.dev"
source: hosted
- version: "2.1.2"
+ version: "2.3.2"
url_launcher_web:
dependency: transitive
description:
name: url_launcher_web
- url: "https://pub.dartlang.org"
+ sha256: "772638d3b34c779ede05ba3d38af34657a05ac55b06279ea6edd409e323dca8e"
+ url: "https://pub.dev"
source: hosted
- version: "2.0.15"
+ version: "2.3.3"
url_launcher_windows:
dependency: transitive
description:
name: url_launcher_windows
- url: "https://pub.dartlang.org"
+ sha256: "49c10f879746271804767cb45551ec5592cdab00ee105c06dddde1a98f73b185"
+ url: "https://pub.dev"
source: hosted
- version: "3.0.4"
+ version: "3.1.2"
uuid:
dependency: transitive
description:
name: uuid
- url: "https://pub.dartlang.org"
+ sha256: f33d6bb662f0e4f79dcd7ada2e6170f3b3a2530c28fc41f49a411ddedd576a77
+ url: "https://pub.dev"
source: hosted
- version: "3.0.7"
+ version: "4.5.0"
validators:
dependency: "direct main"
description:
name: validators
- url: "https://pub.dartlang.org"
+ sha256: "884515951f831a9c669a41ed6c4d3c61c2a0e8ec6bca761a4480b28e99cecf5d"
+ url: "https://pub.dev"
source: hosted
version: "3.0.0"
+ vector_graphics:
+ dependency: transitive
+ description:
+ name: vector_graphics
+ sha256: "32c3c684e02f9bc0afb0ae0aa653337a2fe022e8ab064bcd7ffda27a74e288e3"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.11+1"
+ vector_graphics_codec:
+ dependency: transitive
+ description:
+ name: vector_graphics_codec
+ sha256: c86987475f162fadff579e7320c7ddda04cd2fdeffbe1129227a85d9ac9e03da
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.11+1"
+ vector_graphics_compiler:
+ dependency: transitive
+ description:
+ name: vector_graphics_compiler
+ sha256: "12faff3f73b1741a36ca7e31b292ddeb629af819ca9efe9953b70bd63fc8cd81"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.11+1"
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"
video_player:
dependency: transitive
description:
name: video_player
- url: "https://pub.dartlang.org"
+ sha256: e30df0d226c4ef82e2c150ebf6834b3522cf3f654d8e2f9419d376cdc071425d
+ url: "https://pub.dev"
source: hosted
- version: "2.5.2"
+ version: "2.9.1"
video_player_android:
dependency: transitive
description:
name: video_player_android
- url: "https://pub.dartlang.org"
+ sha256: "38d8fe136c427abdce68b5e8c3c08ea29d7a794b453c7a51b12ecfad4aad9437"
+ url: "https://pub.dev"
source: hosted
- version: "2.3.11"
+ version: "2.7.3"
video_player_avfoundation:
dependency: transitive
description:
name: video_player_avfoundation
- url: "https://pub.dartlang.org"
+ sha256: d1e9a824f2b324000dc8fb2dcb2a3285b6c1c7c487521c63306cc5b394f68a7c
+ url: "https://pub.dev"
source: hosted
- version: "2.3.9"
+ version: "2.6.1"
video_player_platform_interface:
dependency: transitive
description:
name: video_player_platform_interface
- url: "https://pub.dartlang.org"
+ sha256: "236454725fafcacf98f0f39af0d7c7ab2ce84762e3b63f2cbb3ef9a7e0550bc6"
+ url: "https://pub.dev"
source: hosted
- version: "6.0.2"
+ version: "6.2.2"
video_player_web:
dependency: transitive
description:
name: video_player_web
- url: "https://pub.dartlang.org"
+ sha256: "6dcdd298136523eaf7dfc31abaf0dfba9aa8a8dbc96670e87e9d42b6f2caf774"
+ url: "https://pub.dev"
source: hosted
- version: "2.0.14"
+ version: "2.3.2"
visibility_detector:
dependency: transitive
description:
name: visibility_detector
- url: "https://pub.dartlang.org"
- source: hosted
- version: "0.3.3"
- wakelock:
- dependency: transitive
- description:
- name: wakelock
- url: "https://pub.dartlang.org"
+ sha256: dd5cc11e13494f432d15939c3aa8ae76844c42b723398643ce9addb88a5ed420
+ url: "https://pub.dev"
source: hosted
- version: "0.6.2"
- wakelock_macos:
+ version: "0.4.0+2"
+ vm_service:
dependency: transitive
description:
- name: wakelock_macos
- url: "https://pub.dartlang.org"
+ name: vm_service
+ sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d"
+ url: "https://pub.dev"
source: hosted
- version: "0.4.0"
- wakelock_platform_interface:
+ version: "14.2.5"
+ wakelock_plus:
dependency: transitive
description:
- name: wakelock_platform_interface
- url: "https://pub.dartlang.org"
+ name: wakelock_plus
+ sha256: bf4ee6f17a2fa373ed3753ad0e602b7603f8c75af006d5b9bdade263928c0484
+ url: "https://pub.dev"
source: hosted
- version: "0.3.0"
- wakelock_web:
+ version: "1.2.8"
+ wakelock_plus_platform_interface:
dependency: transitive
description:
- name: wakelock_web
- url: "https://pub.dartlang.org"
+ name: wakelock_plus_platform_interface
+ sha256: "422d1cdbb448079a8a62a5a770b69baa489f8f7ca21aef47800c726d404f9d16"
+ url: "https://pub.dev"
source: hosted
- version: "0.4.0"
- wakelock_windows:
+ version: "1.2.1"
+ web:
dependency: transitive
description:
- name: wakelock_windows
- url: "https://pub.dartlang.org"
+ name: web
+ sha256: d43c1d6b787bf0afad444700ae7f4db8827f701bc61c255ac8d328c6f4d52062
+ url: "https://pub.dev"
source: hosted
- version: "0.2.1"
+ version: "1.0.0"
webview_flutter:
dependency: transitive
description:
name: webview_flutter
- url: "https://pub.dartlang.org"
+ sha256: ec81f57aa1611f8ebecf1d2259da4ef052281cb5ad624131c93546c79ccc7736
+ url: "https://pub.dev"
source: hosted
- version: "3.0.4"
+ version: "4.9.0"
webview_flutter_android:
dependency: transitive
description:
name: webview_flutter_android
- url: "https://pub.dartlang.org"
+ sha256: "6e64fcb1c19d92024da8f33503aaeeda35825d77142c01d0ea2aa32edc79fdc8"
+ url: "https://pub.dev"
source: hosted
- version: "2.10.4"
+ version: "3.16.7"
webview_flutter_platform_interface:
dependency: transitive
description:
name: webview_flutter_platform_interface
- url: "https://pub.dartlang.org"
+ sha256: d937581d6e558908d7ae3dc1989c4f87b786891ab47bb9df7de548a151779d8d
+ url: "https://pub.dev"
source: hosted
- version: "1.9.5"
+ version: "2.10.0"
webview_flutter_wkwebview:
dependency: transitive
description:
name: webview_flutter_wkwebview
- url: "https://pub.dartlang.org"
+ sha256: "1942a12224ab31e9508cf00c0c6347b931b023b8a4f0811e5dec3b06f94f117d"
+ url: "https://pub.dev"
source: hosted
- version: "2.9.5"
+ version: "3.15.0"
win32:
dependency: transitive
description:
name: win32
- url: "https://pub.dartlang.org"
+ sha256: "68d1e89a91ed61ad9c370f9f8b6effed9ae5e0ede22a270bdfa6daf79fc2290a"
+ url: "https://pub.dev"
source: hosted
- version: "3.1.3"
+ version: "5.5.4"
xdg_directories:
dependency: transitive
description:
name: xdg_directories
- url: "https://pub.dartlang.org"
+ sha256: faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d
+ url: "https://pub.dev"
source: hosted
- version: "1.0.0"
+ version: "1.0.4"
xml:
dependency: transitive
description:
name: xml
- url: "https://pub.dartlang.org"
+ sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226
+ url: "https://pub.dev"
source: hosted
- version: "6.1.0"
+ version: "6.5.0"
zoom_tap_animation:
dependency: "direct main"
description:
name: zoom_tap_animation
- url: "https://pub.dartlang.org"
+ sha256: d9f7a73cab65aa1546ba6886b5e21d3c8ccccb34e4e5f770301c306d4868bee0
+ url: "https://pub.dev"
source: hosted
version: "1.1.0"
sdks:
- dart: ">=2.18.0 <3.0.0"
- flutter: ">=3.3.0"
+ dart: ">=3.5.0 <4.0.0"
+ flutter: ">=3.24.0"
diff --git a/pubspec.yaml b/pubspec.yaml
index 39a1ee6..b44df41 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -36,27 +36,28 @@ dependencies:
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^1.0.2
- flutter_svg: ^1.0.3
+ flutter_svg: ^2.0.10+1
validators: ^3.0.0
get: ^4.6.5
- share_plus: ^4.0.10
+ share_plus: ^10.0.2
url_launcher: ^6.1.5
- dio: ^4.0.6
+ dio: ^5.6.0
cached_network_image: ^3.2.1
- flutter_widget_from_html: ^0.8.5
+ flutter_widget_from_html: ^0.15.2
get_storage: ^2.0.3
- file_picker: ^5.2.5
+ file_picker: ^8.1.2
html_editor_enhanced: ^2.5.1
percent_indicator: ^4.2.2
just_audio: ^0.9.30
- audio_video_progress_bar: ^0.11.0
+ audio_video_progress_bar: ^2.0.3
zoom_tap_animation: ^1.1.0
- email_validator: ^2.1.17
+ email_validator: ^3.0.0
+ numberpicker: ^2.1.2
dev_dependencies:
flutter_test:
sdk: flutter
- flutter_lints: ^1.0.0
+ flutter_lints: ^4.0.0
diff --git a/windows/runner/grunner.exe.manifest b/windows/runner/grunner.exe.manifest
deleted file mode 100644
index c977c4a..0000000
--- a/windows/runner/grunner.exe.manifest
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
- PerMonitorV2
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/windows/runner/grunner.exe.manifico b/windows/runner/grunner.exe.manifico
deleted file mode 100644
index e69de29..0000000