mirror of
				https://github.com/ImranR98/Obtainium.git
				synced 2025-11-03 23:03:29 +01:00 
			
		
		
		
	init - still figuring out download/install
This commit is contained in:
		
							
								
								
									
										44
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,44 @@
 | 
				
			|||||||
 | 
					# Miscellaneous
 | 
				
			||||||
 | 
					*.class
 | 
				
			||||||
 | 
					*.log
 | 
				
			||||||
 | 
					*.pyc
 | 
				
			||||||
 | 
					*.swp
 | 
				
			||||||
 | 
					.DS_Store
 | 
				
			||||||
 | 
					.atom/
 | 
				
			||||||
 | 
					.buildlog/
 | 
				
			||||||
 | 
					.history
 | 
				
			||||||
 | 
					.svn/
 | 
				
			||||||
 | 
					migrate_working_dir/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# IntelliJ related
 | 
				
			||||||
 | 
					*.iml
 | 
				
			||||||
 | 
					*.ipr
 | 
				
			||||||
 | 
					*.iws
 | 
				
			||||||
 | 
					.idea/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# The .vscode folder contains launch configuration and tasks you configure in
 | 
				
			||||||
 | 
					# VS Code which you may wish to be included in version control, so this line
 | 
				
			||||||
 | 
					# is commented out by default.
 | 
				
			||||||
 | 
					#.vscode/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Flutter/Dart/Pub related
 | 
				
			||||||
 | 
					**/doc/api/
 | 
				
			||||||
 | 
					**/ios/Flutter/.last_build_id
 | 
				
			||||||
 | 
					.dart_tool/
 | 
				
			||||||
 | 
					.flutter-plugins
 | 
				
			||||||
 | 
					.flutter-plugins-dependencies
 | 
				
			||||||
 | 
					.packages
 | 
				
			||||||
 | 
					.pub-cache/
 | 
				
			||||||
 | 
					.pub/
 | 
				
			||||||
 | 
					/build/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Symbolication related
 | 
				
			||||||
 | 
					app.*.symbols
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Obfuscation related
 | 
				
			||||||
 | 
					app.*.map.json
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Android Studio will place build artifacts here
 | 
				
			||||||
 | 
					/android/app/debug
 | 
				
			||||||
 | 
					/android/app/profile
 | 
				
			||||||
 | 
					/android/app/release
 | 
				
			||||||
							
								
								
									
										33
									
								
								.metadata
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								.metadata
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,33 @@
 | 
				
			|||||||
 | 
					# This file tracks properties of this Flutter project.
 | 
				
			||||||
 | 
					# Used by Flutter tool to assess capabilities and perform upgrades etc.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This file should be version controlled.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					version:
 | 
				
			||||||
 | 
					  revision: 543dac2f35de563fcb6905e9146bdce712c44000
 | 
				
			||||||
 | 
					  channel: master
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					project_type: app
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Tracks metadata for the flutter migrate command
 | 
				
			||||||
 | 
					migration:
 | 
				
			||||||
 | 
					  platforms:
 | 
				
			||||||
 | 
					    - platform: root
 | 
				
			||||||
 | 
					      create_revision: 543dac2f35de563fcb6905e9146bdce712c44000
 | 
				
			||||||
 | 
					      base_revision: 543dac2f35de563fcb6905e9146bdce712c44000
 | 
				
			||||||
 | 
					    - platform: android
 | 
				
			||||||
 | 
					      create_revision: 543dac2f35de563fcb6905e9146bdce712c44000
 | 
				
			||||||
 | 
					      base_revision: 543dac2f35de563fcb6905e9146bdce712c44000
 | 
				
			||||||
 | 
					    - platform: ios
 | 
				
			||||||
 | 
					      create_revision: 543dac2f35de563fcb6905e9146bdce712c44000
 | 
				
			||||||
 | 
					      base_revision: 543dac2f35de563fcb6905e9146bdce712c44000
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # User provided section
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # List of Local paths (relative to this file) that should be
 | 
				
			||||||
 | 
					  # ignored by the migrate tool.
 | 
				
			||||||
 | 
					  #
 | 
				
			||||||
 | 
					  # Files that are not part of the templates will be ignored by default.
 | 
				
			||||||
 | 
					  unmanaged_files:
 | 
				
			||||||
 | 
					    - 'lib/main.dart'
 | 
				
			||||||
 | 
					    - 'ios/Runner.xcodeproj/project.pbxproj'
 | 
				
			||||||
							
								
								
									
										16
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
				
			|||||||
 | 
					# obtainium
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					A new Flutter project.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Getting Started
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This project is a starting point for a Flutter application.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					A few resources to get you started if this is your first Flutter project:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab)
 | 
				
			||||||
 | 
					- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					For help getting started with Flutter development, view the
 | 
				
			||||||
 | 
					[online documentation](https://docs.flutter.dev/), which offers tutorials,
 | 
				
			||||||
 | 
					samples, guidance on mobile development, and a full API reference.
 | 
				
			||||||
							
								
								
									
										29
									
								
								analysis_options.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								analysis_options.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,29 @@
 | 
				
			|||||||
 | 
					# This file configures the analyzer, which statically analyzes Dart code to
 | 
				
			||||||
 | 
					# check for errors, warnings, and lints.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# The issues identified by the analyzer are surfaced in the UI of Dart-enabled
 | 
				
			||||||
 | 
					# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
 | 
				
			||||||
 | 
					# invoked from the command line by running `flutter analyze`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# The following line activates a set of recommended lints for Flutter apps,
 | 
				
			||||||
 | 
					# packages, and plugins designed to encourage good coding practices.
 | 
				
			||||||
 | 
					include: package:flutter_lints/flutter.yaml
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					linter:
 | 
				
			||||||
 | 
					  # The lint rules applied to this project can be customized in the
 | 
				
			||||||
 | 
					  # section below to disable rules from the `package:flutter_lints/flutter.yaml`
 | 
				
			||||||
 | 
					  # included above or to enable additional rules. A list of all available lints
 | 
				
			||||||
 | 
					  # and their documentation is published at
 | 
				
			||||||
 | 
					  # https://dart-lang.github.io/linter/lints/index.html.
 | 
				
			||||||
 | 
					  #
 | 
				
			||||||
 | 
					  # Instead of disabling a lint rule for the entire project in the
 | 
				
			||||||
 | 
					  # section below, it can also be suppressed for a single line of code
 | 
				
			||||||
 | 
					  # or a specific dart file by using the `// ignore: name_of_lint` and
 | 
				
			||||||
 | 
					  # `// ignore_for_file: name_of_lint` syntax on the line or in the file
 | 
				
			||||||
 | 
					  # producing the lint.
 | 
				
			||||||
 | 
					  rules:
 | 
				
			||||||
 | 
					    # avoid_print: false  # Uncomment to disable the `avoid_print` rule
 | 
				
			||||||
 | 
					    # prefer_single_quotes: true  # Uncomment to enable the `prefer_single_quotes` rule
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Additional information about this file can be found at
 | 
				
			||||||
 | 
					# https://dart.dev/guides/language/analysis-options
 | 
				
			||||||
							
								
								
									
										13
									
								
								android/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								android/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,13 @@
 | 
				
			|||||||
 | 
					gradle-wrapper.jar
 | 
				
			||||||
 | 
					/.gradle
 | 
				
			||||||
 | 
					/captures/
 | 
				
			||||||
 | 
					/gradlew
 | 
				
			||||||
 | 
					/gradlew.bat
 | 
				
			||||||
 | 
					/local.properties
 | 
				
			||||||
 | 
					GeneratedPluginRegistrant.java
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Remember to never publicly share your keystore.
 | 
				
			||||||
 | 
					# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
 | 
				
			||||||
 | 
					key.properties
 | 
				
			||||||
 | 
					**/*.keystore
 | 
				
			||||||
 | 
					**/*.jks
 | 
				
			||||||
							
								
								
									
										71
									
								
								android/app/build.gradle
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								android/app/build.gradle
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,71 @@
 | 
				
			|||||||
 | 
					def localProperties = new Properties()
 | 
				
			||||||
 | 
					def localPropertiesFile = rootProject.file('local.properties')
 | 
				
			||||||
 | 
					if (localPropertiesFile.exists()) {
 | 
				
			||||||
 | 
					    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')
 | 
				
			||||||
 | 
					if (flutterVersionCode == null) {
 | 
				
			||||||
 | 
					    flutterVersionCode = '1'
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def flutterVersionName = localProperties.getProperty('flutter.versionName')
 | 
				
			||||||
 | 
					if (flutterVersionName == null) {
 | 
				
			||||||
 | 
					    flutterVersionName = '1.0'
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					apply plugin: 'com.android.application'
 | 
				
			||||||
 | 
					apply plugin: 'kotlin-android'
 | 
				
			||||||
 | 
					apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					android {
 | 
				
			||||||
 | 
					    compileSdkVersion flutter.compileSdkVersion
 | 
				
			||||||
 | 
					    ndkVersion flutter.ndkVersion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    compileOptions {
 | 
				
			||||||
 | 
					        sourceCompatibility JavaVersion.VERSION_1_8
 | 
				
			||||||
 | 
					        targetCompatibility JavaVersion.VERSION_1_8
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    kotlinOptions {
 | 
				
			||||||
 | 
					        jvmTarget = '1.8'
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    sourceSets {
 | 
				
			||||||
 | 
					        main.java.srcDirs += 'src/main/kotlin'
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    defaultConfig {
 | 
				
			||||||
 | 
					        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
 | 
				
			||||||
 | 
					        applicationId "dev.imranr.obtainium"
 | 
				
			||||||
 | 
					        // You can update the following values to match your application needs.
 | 
				
			||||||
 | 
					        // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration.
 | 
				
			||||||
 | 
					        minSdkVersion 19
 | 
				
			||||||
 | 
					        targetSdkVersion 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
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					flutter {
 | 
				
			||||||
 | 
					    source '../..'
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					dependencies {
 | 
				
			||||||
 | 
					    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										8
									
								
								android/app/src/debug/AndroidManifest.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								android/app/src/debug/AndroidManifest.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
				
			|||||||
 | 
					<manifest xmlns:android="http://schemas.android.com/apk/res/android"
 | 
				
			||||||
 | 
					    package="dev.imranr.obtainium">
 | 
				
			||||||
 | 
					    <!-- The INTERNET permission is required for development. Specifically,
 | 
				
			||||||
 | 
					         the Flutter tool needs it to communicate with the running application
 | 
				
			||||||
 | 
					         to allow setting breakpoints, to provide hot reload, etc.
 | 
				
			||||||
 | 
					    -->
 | 
				
			||||||
 | 
					    <uses-permission android:name="android.permission.INTERNET"/>
 | 
				
			||||||
 | 
					</manifest>
 | 
				
			||||||
							
								
								
									
										45
									
								
								android/app/src/main/AndroidManifest.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								android/app/src/main/AndroidManifest.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,45 @@
 | 
				
			|||||||
 | 
					<manifest xmlns:android="http://schemas.android.com/apk/res/android"
 | 
				
			||||||
 | 
					    package="dev.imranr.obtainium">
 | 
				
			||||||
 | 
					    <application
 | 
				
			||||||
 | 
					        android:label="Obtainium"
 | 
				
			||||||
 | 
					        android:name="${applicationName}"
 | 
				
			||||||
 | 
					        android:icon="@mipmap/ic_launcher">
 | 
				
			||||||
 | 
					        <activity
 | 
				
			||||||
 | 
					            android:name=".MainActivity"
 | 
				
			||||||
 | 
					            android:exported="true"
 | 
				
			||||||
 | 
					            android:launchMode="singleTop"
 | 
				
			||||||
 | 
					            android:theme="@style/LaunchTheme"
 | 
				
			||||||
 | 
					            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
 | 
				
			||||||
 | 
					            android:hardwareAccelerated="true"
 | 
				
			||||||
 | 
					            android:windowSoftInputMode="adjustResize">
 | 
				
			||||||
 | 
					            <!-- Specifies an Android theme to apply to this Activity as soon as
 | 
				
			||||||
 | 
					                 the Android process has started. This theme is visible to the user
 | 
				
			||||||
 | 
					                 while the Flutter UI initializes. After that, this theme continues
 | 
				
			||||||
 | 
					                 to determine the Window background behind the Flutter UI. -->
 | 
				
			||||||
 | 
					            <meta-data
 | 
				
			||||||
 | 
					                android:name="io.flutter.embedding.android.NormalTheme"
 | 
				
			||||||
 | 
					                android:resource="@style/NormalTheme"
 | 
				
			||||||
 | 
					            />
 | 
				
			||||||
 | 
					            <intent-filter>
 | 
				
			||||||
 | 
					                <action android:name="android.intent.action.MAIN" />
 | 
				
			||||||
 | 
					                <category android:name="android.intent.category.LAUNCHER" />
 | 
				
			||||||
 | 
					            </intent-filter>
 | 
				
			||||||
 | 
					        </activity>
 | 
				
			||||||
 | 
					        <!-- Don't delete the meta-data below.
 | 
				
			||||||
 | 
					             This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
 | 
				
			||||||
 | 
					        <meta-data
 | 
				
			||||||
 | 
					            android:name="flutterEmbedding"
 | 
				
			||||||
 | 
					            android:value="2" />
 | 
				
			||||||
 | 
					        <provider
 | 
				
			||||||
 | 
					            android:name="vn.hunghd.flutterdownloader.DownloadedFileProvider"
 | 
				
			||||||
 | 
					            android:authorities="${applicationId}.flutter_downloader.provider"
 | 
				
			||||||
 | 
					            android:exported="false"
 | 
				
			||||||
 | 
					            android:grantUriPermissions="true">
 | 
				
			||||||
 | 
					            <meta-data
 | 
				
			||||||
 | 
					                android:name="android.support.FILE_PROVIDER_PATHS"
 | 
				
			||||||
 | 
					                android:resource="@xml/provider_paths" />
 | 
				
			||||||
 | 
					        </provider>
 | 
				
			||||||
 | 
					    </application>
 | 
				
			||||||
 | 
					    <uses-permission android:name="android.permission.INTERNET" />
 | 
				
			||||||
 | 
					    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
 | 
				
			||||||
 | 
					</manifest>
 | 
				
			||||||
@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					package dev.imranr.obtainium
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import io.flutter.embedding.android.FlutterActivity
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class MainActivity: FlutterActivity() {
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										12
									
								
								android/app/src/main/res/drawable-v21/launch_background.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								android/app/src/main/res/drawable-v21/launch_background.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="utf-8"?>
 | 
				
			||||||
 | 
					<!-- Modify this file to customize your launch splash screen -->
 | 
				
			||||||
 | 
					<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
 | 
				
			||||||
 | 
					    <item android:drawable="?android:colorBackground" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- You can insert your own image assets here -->
 | 
				
			||||||
 | 
					    <!-- <item>
 | 
				
			||||||
 | 
					        <bitmap
 | 
				
			||||||
 | 
					            android:gravity="center"
 | 
				
			||||||
 | 
					            android:src="@mipmap/launch_image" />
 | 
				
			||||||
 | 
					    </item> -->
 | 
				
			||||||
 | 
					</layer-list>
 | 
				
			||||||
							
								
								
									
										12
									
								
								android/app/src/main/res/drawable/launch_background.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								android/app/src/main/res/drawable/launch_background.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="utf-8"?>
 | 
				
			||||||
 | 
					<!-- Modify this file to customize your launch splash screen -->
 | 
				
			||||||
 | 
					<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
 | 
				
			||||||
 | 
					    <item android:drawable="@android:color/white" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- You can insert your own image assets here -->
 | 
				
			||||||
 | 
					    <!-- <item>
 | 
				
			||||||
 | 
					        <bitmap
 | 
				
			||||||
 | 
					            android:gravity="center"
 | 
				
			||||||
 | 
					            android:src="@mipmap/launch_image" />
 | 
				
			||||||
 | 
					    </item> -->
 | 
				
			||||||
 | 
					</layer-list>
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								android/app/src/main/res/mipmap-hdpi/ic_launcher.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								android/app/src/main/res/mipmap-hdpi/ic_launcher.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 544 B  | 
							
								
								
									
										
											BIN
										
									
								
								android/app/src/main/res/mipmap-mdpi/ic_launcher.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								android/app/src/main/res/mipmap-mdpi/ic_launcher.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 442 B  | 
							
								
								
									
										
											BIN
										
									
								
								android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 721 B  | 
							
								
								
									
										
											BIN
										
									
								
								android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 1.0 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 1.4 KiB  | 
							
								
								
									
										18
									
								
								android/app/src/main/res/values-night/styles.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								android/app/src/main/res/values-night/styles.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="utf-8"?>
 | 
				
			||||||
 | 
					<resources>
 | 
				
			||||||
 | 
					    <!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on -->
 | 
				
			||||||
 | 
					    <style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
 | 
				
			||||||
 | 
					        <!-- Show a splash screen on the activity. Automatically removed when
 | 
				
			||||||
 | 
					             the Flutter engine draws its first frame -->
 | 
				
			||||||
 | 
					        <item name="android:windowBackground">@drawable/launch_background</item>
 | 
				
			||||||
 | 
					    </style>
 | 
				
			||||||
 | 
					    <!-- Theme applied to the Android Window as soon as the process has started.
 | 
				
			||||||
 | 
					         This theme determines the color of the Android Window while your
 | 
				
			||||||
 | 
					         Flutter UI initializes, as well as behind your Flutter UI while its
 | 
				
			||||||
 | 
					         running.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         This Theme is only used starting with V2 of Flutter's Android embedding. -->
 | 
				
			||||||
 | 
					    <style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
 | 
				
			||||||
 | 
					        <item name="android:windowBackground">?android:colorBackground</item>
 | 
				
			||||||
 | 
					    </style>
 | 
				
			||||||
 | 
					</resources>
 | 
				
			||||||
							
								
								
									
										18
									
								
								android/app/src/main/res/values/styles.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								android/app/src/main/res/values/styles.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="utf-8"?>
 | 
				
			||||||
 | 
					<resources>
 | 
				
			||||||
 | 
					    <!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
 | 
				
			||||||
 | 
					    <style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
 | 
				
			||||||
 | 
					        <!-- Show a splash screen on the activity. Automatically removed when
 | 
				
			||||||
 | 
					             the Flutter engine draws its first frame -->
 | 
				
			||||||
 | 
					        <item name="android:windowBackground">@drawable/launch_background</item>
 | 
				
			||||||
 | 
					    </style>
 | 
				
			||||||
 | 
					    <!-- Theme applied to the Android Window as soon as the process has started.
 | 
				
			||||||
 | 
					         This theme determines the color of the Android Window while your
 | 
				
			||||||
 | 
					         Flutter UI initializes, as well as behind your Flutter UI while its
 | 
				
			||||||
 | 
					         running.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         This Theme is only used starting with V2 of Flutter's Android embedding. -->
 | 
				
			||||||
 | 
					    <style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar">
 | 
				
			||||||
 | 
					        <item name="android:windowBackground">?android:colorBackground</item>
 | 
				
			||||||
 | 
					    </style>
 | 
				
			||||||
 | 
					</resources>
 | 
				
			||||||
							
								
								
									
										8
									
								
								android/app/src/profile/AndroidManifest.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								android/app/src/profile/AndroidManifest.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
				
			|||||||
 | 
					<manifest xmlns:android="http://schemas.android.com/apk/res/android"
 | 
				
			||||||
 | 
					    package="dev.imranr.obtainium">
 | 
				
			||||||
 | 
					    <!-- The INTERNET permission is required for development. Specifically,
 | 
				
			||||||
 | 
					         the Flutter tool needs it to communicate with the running application
 | 
				
			||||||
 | 
					         to allow setting breakpoints, to provide hot reload, etc.
 | 
				
			||||||
 | 
					    -->
 | 
				
			||||||
 | 
					    <uses-permission android:name="android.permission.INTERNET"/>
 | 
				
			||||||
 | 
					</manifest>
 | 
				
			||||||
							
								
								
									
										31
									
								
								android/build.gradle
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								android/build.gradle
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,31 @@
 | 
				
			|||||||
 | 
					buildscript {
 | 
				
			||||||
 | 
					    ext.kotlin_version = '1.7.10'
 | 
				
			||||||
 | 
					    repositories {
 | 
				
			||||||
 | 
					        google()
 | 
				
			||||||
 | 
					        mavenCentral()
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    dependencies {
 | 
				
			||||||
 | 
					        classpath 'com.android.tools.build:gradle:7.2.0'
 | 
				
			||||||
 | 
					        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					allprojects {
 | 
				
			||||||
 | 
					    repositories {
 | 
				
			||||||
 | 
					        google()
 | 
				
			||||||
 | 
					        mavenCentral()
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					rootProject.buildDir = '../build'
 | 
				
			||||||
 | 
					subprojects {
 | 
				
			||||||
 | 
					    project.buildDir = "${rootProject.buildDir}/${project.name}"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					subprojects {
 | 
				
			||||||
 | 
					    project.evaluationDependsOn(':app')
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					task clean(type: Delete) {
 | 
				
			||||||
 | 
					    delete rootProject.buildDir
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										3
									
								
								android/gradle.properties
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								android/gradle.properties
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					org.gradle.jvmargs=-Xmx1536M
 | 
				
			||||||
 | 
					android.useAndroidX=true
 | 
				
			||||||
 | 
					android.enableJetifier=true
 | 
				
			||||||
							
								
								
									
										5
									
								
								android/gradle/wrapper/gradle-wrapper.properties
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								android/gradle/wrapper/gradle-wrapper.properties
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
				
			|||||||
 | 
					distributionBase=GRADLE_USER_HOME
 | 
				
			||||||
 | 
					distributionPath=wrapper/dists
 | 
				
			||||||
 | 
					zipStoreBase=GRADLE_USER_HOME
 | 
				
			||||||
 | 
					zipStorePath=wrapper/dists
 | 
				
			||||||
 | 
					distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip
 | 
				
			||||||
							
								
								
									
										11
									
								
								android/settings.gradle
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								android/settings.gradle
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
				
			|||||||
 | 
					include ':app'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
 | 
				
			||||||
 | 
					def properties = new Properties()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					assert localPropertiesFile.exists()
 | 
				
			||||||
 | 
					localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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"
 | 
				
			||||||
							
								
								
									
										165
									
								
								lib/main.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										165
									
								
								lib/main.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,165 @@
 | 
				
			|||||||
 | 
					import 'dart:io';
 | 
				
			||||||
 | 
					import 'dart:isolate';
 | 
				
			||||||
 | 
					import 'dart:math';
 | 
				
			||||||
 | 
					import 'dart:ui';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import 'package:flutter/material.dart';
 | 
				
			||||||
 | 
					import 'package:file_picker/file_picker.dart';
 | 
				
			||||||
 | 
					import 'package:install_plugin_v2/install_plugin_v2.dart';
 | 
				
			||||||
 | 
					import 'package:path_provider/path_provider.dart';
 | 
				
			||||||
 | 
					import 'package:permission_handler/permission_handler.dart';
 | 
				
			||||||
 | 
					import 'package:flutter_downloader/flutter_downloader.dart';
 | 
				
			||||||
 | 
					import 'package:app_installer/app_installer.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Port for FlutterDownloader background/foreground communication
 | 
				
			||||||
 | 
					ReceivePort _port = ReceivePort();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void main() async {
 | 
				
			||||||
 | 
					  await initializeDownloader();
 | 
				
			||||||
 | 
					  runApp(const MyApp());
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Setup the FlutterDownloader plugin
 | 
				
			||||||
 | 
					Future<void> initializeDownloader() async {
 | 
				
			||||||
 | 
					  // Make sure FlutterDownloader can be used
 | 
				
			||||||
 | 
					  WidgetsFlutterBinding.ensureInitialized();
 | 
				
			||||||
 | 
					  await FlutterDownloader.initialize();
 | 
				
			||||||
 | 
					  // Set up the status update callback for FlutterDownloader
 | 
				
			||||||
 | 
					  FlutterDownloader.registerCallback(downloadCallbackBackground);
 | 
				
			||||||
 | 
					  // The actual callback is in the background isolate
 | 
				
			||||||
 | 
					  // So setup a port to pass the data to a foreground callback
 | 
				
			||||||
 | 
					  IsolateNameServer.registerPortWithName(
 | 
				
			||||||
 | 
					      _port.sendPort, 'downloader_send_port');
 | 
				
			||||||
 | 
					  _port.listen((dynamic data) {
 | 
				
			||||||
 | 
					    String id = data[0];
 | 
				
			||||||
 | 
					    DownloadTaskStatus status = data[1];
 | 
				
			||||||
 | 
					    int progress = data[2];
 | 
				
			||||||
 | 
					    downloadCallbackForeground(id, status, progress);
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Callback that receives FlutterDownloader status and forwards to a foreground function
 | 
				
			||||||
 | 
					@pragma('vm:entry-point')
 | 
				
			||||||
 | 
					void downloadCallbackBackground(
 | 
				
			||||||
 | 
					    String id, DownloadTaskStatus status, int progress) {
 | 
				
			||||||
 | 
					  final SendPort? send =
 | 
				
			||||||
 | 
					      IsolateNameServer.lookupPortByName('downloader_send_port');
 | 
				
			||||||
 | 
					  send!.send([id, status, progress]);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Foreground function to act on FlutterDownloader status updates (install then delete downloaded APK)
 | 
				
			||||||
 | 
					void downloadCallbackForeground(
 | 
				
			||||||
 | 
					    String id, DownloadTaskStatus status, int progress) async {
 | 
				
			||||||
 | 
					  if (status == DownloadTaskStatus.complete) {
 | 
				
			||||||
 | 
					    FlutterDownloader.open(taskId: id);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Given a URL (assumed valid), initiate an APK download (will trigger install callback when complete)
 | 
				
			||||||
 | 
					void downloadAPK(String url, String appId) async {
 | 
				
			||||||
 | 
					  var apkDir = Directory(
 | 
				
			||||||
 | 
					      "${(await getExternalStorageDirectory())?.path as String}/$appId");
 | 
				
			||||||
 | 
					  if (apkDir.existsSync()) apkDir.deleteSync(recursive: true);
 | 
				
			||||||
 | 
					  apkDir.createSync();
 | 
				
			||||||
 | 
					  await FlutterDownloader.enqueue(
 | 
				
			||||||
 | 
					    url: url,
 | 
				
			||||||
 | 
					    savedDir: apkDir.path,
 | 
				
			||||||
 | 
					    showNotification: true,
 | 
				
			||||||
 | 
					    openFileFromNotification: true,
 | 
				
			||||||
 | 
					  );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Extract a GitHub project name and author account name from a GitHub URL (can be any sub-URL of the project)
 | 
				
			||||||
 | 
					Map<String, String>? getAppNamesFromGitHubURL(String url) {
 | 
				
			||||||
 | 
					  RegExp regex = RegExp(r"://github.com/[^/]*/[^/]*");
 | 
				
			||||||
 | 
					  var match = regex.firstMatch(url.toLowerCase());
 | 
				
			||||||
 | 
					  if (match != null) {
 | 
				
			||||||
 | 
					    var uri = url.substring(match.start + 14, match.end);
 | 
				
			||||||
 | 
					    var slashIndex = uri.indexOf("/");
 | 
				
			||||||
 | 
					    var author = uri.substring(0, slashIndex);
 | 
				
			||||||
 | 
					    var appName = uri.substring(slashIndex + 1);
 | 
				
			||||||
 | 
					    return {"author": author, "appName": appName};
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Future<Directory> getAPKDir() async {
 | 
				
			||||||
 | 
					//   var apkDir = Directory("${(await getExternalStorageDirectory())!.path}/apks");
 | 
				
			||||||
 | 
					//   if (!apkDir.existsSync()) {
 | 
				
			||||||
 | 
					//     apkDir.createSync();
 | 
				
			||||||
 | 
					//   }
 | 
				
			||||||
 | 
					//   return apkDir;
 | 
				
			||||||
 | 
					// }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class MyApp extends StatelessWidget {
 | 
				
			||||||
 | 
					  const MyApp({super.key});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  Widget build(BuildContext context) {
 | 
				
			||||||
 | 
					    return MaterialApp(
 | 
				
			||||||
 | 
					      title: 'Obtainium',
 | 
				
			||||||
 | 
					      theme: ThemeData(
 | 
				
			||||||
 | 
					        primarySwatch: Colors.blue,
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      home: const MyHomePage(title: 'Obtainium'),
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class MyHomePage extends StatefulWidget {
 | 
				
			||||||
 | 
					  const MyHomePage({super.key, required this.title});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  final String title;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  State<MyHomePage> createState() => _MyHomePageState();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class _MyHomePageState extends State<MyHomePage> {
 | 
				
			||||||
 | 
					  int ind = 0;
 | 
				
			||||||
 | 
					  var urls = [
 | 
				
			||||||
 | 
					    "https://github.com/Ashinch/ReadYou/releases/download/0.8.0/ReadYou-0.8.0-eec397e.apk",
 | 
				
			||||||
 | 
					    "https://github.com/Ashinch/ReadYou/releases/download/0.8.1/ReadYou-0.8.1-c741f19.apk",
 | 
				
			||||||
 | 
					    "https://github.com/Ashinch/ReadYou/releases/download/0.8.3/ReadYou-0.8.3-7a47329.apk"
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  Widget build(BuildContext context) {
 | 
				
			||||||
 | 
					    return Scaffold(
 | 
				
			||||||
 | 
					      appBar: AppBar(
 | 
				
			||||||
 | 
					        title: Text(widget.title),
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      body: Center(
 | 
				
			||||||
 | 
					        child: Column(
 | 
				
			||||||
 | 
					          mainAxisAlignment: MainAxisAlignment.center,
 | 
				
			||||||
 | 
					          children: <Widget>[
 | 
				
			||||||
 | 
					            Text(
 | 
				
			||||||
 | 
					              urls[ind] + ind.toString(),
 | 
				
			||||||
 | 
					              style: Theme.of(context).textTheme.headline4,
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      floatingActionButton: FloatingActionButton(
 | 
				
			||||||
 | 
					        onPressed: () {
 | 
				
			||||||
 | 
					          var names = getAppNamesFromGitHubURL(urls[ind]);
 | 
				
			||||||
 | 
					          if (names != null) {
 | 
				
			||||||
 | 
					            downloadAPK(urls[ind], "${names["author"]!}_${names["appName"]!}");
 | 
				
			||||||
 | 
					            setState(() {
 | 
				
			||||||
 | 
					              ind = ind == (urls.length - 1) ? 0 : ind + 1;
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        tooltip: 'Increment',
 | 
				
			||||||
 | 
					        child: const Icon(Icons.add),
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  void dispose() {
 | 
				
			||||||
 | 
					    // Remove the FlutterDownloader communication port
 | 
				
			||||||
 | 
					    IsolateNameServer.removePortNameMapping('downloader_send_port');
 | 
				
			||||||
 | 
					    super.dispose();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										341
									
								
								pubspec.lock
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										341
									
								
								pubspec.lock
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,341 @@
 | 
				
			|||||||
 | 
					# Generated by pub
 | 
				
			||||||
 | 
					# See https://dart.dev/tools/pub/glossary#lockfile
 | 
				
			||||||
 | 
					packages:
 | 
				
			||||||
 | 
					  app_installer:
 | 
				
			||||||
 | 
					    dependency: "direct main"
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: app_installer
 | 
				
			||||||
 | 
					      url: "https://pub.dartlang.org"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "1.1.0"
 | 
				
			||||||
 | 
					  async:
 | 
				
			||||||
 | 
					    dependency: transitive
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: async
 | 
				
			||||||
 | 
					      url: "https://pub.dartlang.org"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "2.9.0"
 | 
				
			||||||
 | 
					  boolean_selector:
 | 
				
			||||||
 | 
					    dependency: transitive
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: boolean_selector
 | 
				
			||||||
 | 
					      url: "https://pub.dartlang.org"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "2.1.0"
 | 
				
			||||||
 | 
					  characters:
 | 
				
			||||||
 | 
					    dependency: transitive
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: characters
 | 
				
			||||||
 | 
					      url: "https://pub.dartlang.org"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "1.2.1"
 | 
				
			||||||
 | 
					  clock:
 | 
				
			||||||
 | 
					    dependency: transitive
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: clock
 | 
				
			||||||
 | 
					      url: "https://pub.dartlang.org"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "1.1.1"
 | 
				
			||||||
 | 
					  collection:
 | 
				
			||||||
 | 
					    dependency: transitive
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: collection
 | 
				
			||||||
 | 
					      url: "https://pub.dartlang.org"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "1.16.0"
 | 
				
			||||||
 | 
					  cupertino_icons:
 | 
				
			||||||
 | 
					    dependency: "direct main"
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: cupertino_icons
 | 
				
			||||||
 | 
					      url: "https://pub.dartlang.org"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "1.0.5"
 | 
				
			||||||
 | 
					  fake_async:
 | 
				
			||||||
 | 
					    dependency: transitive
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: fake_async
 | 
				
			||||||
 | 
					      url: "https://pub.dartlang.org"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "1.3.1"
 | 
				
			||||||
 | 
					  ffi:
 | 
				
			||||||
 | 
					    dependency: transitive
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: ffi
 | 
				
			||||||
 | 
					      url: "https://pub.dartlang.org"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "2.0.1"
 | 
				
			||||||
 | 
					  file:
 | 
				
			||||||
 | 
					    dependency: transitive
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: file
 | 
				
			||||||
 | 
					      url: "https://pub.dartlang.org"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "6.1.2"
 | 
				
			||||||
 | 
					  file_picker:
 | 
				
			||||||
 | 
					    dependency: "direct main"
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: file_picker
 | 
				
			||||||
 | 
					      url: "https://pub.dartlang.org"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "5.0.1"
 | 
				
			||||||
 | 
					  flutter:
 | 
				
			||||||
 | 
					    dependency: "direct main"
 | 
				
			||||||
 | 
					    description: flutter
 | 
				
			||||||
 | 
					    source: sdk
 | 
				
			||||||
 | 
					    version: "0.0.0"
 | 
				
			||||||
 | 
					  flutter_downloader:
 | 
				
			||||||
 | 
					    dependency: "direct main"
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: flutter_downloader
 | 
				
			||||||
 | 
					      url: "https://pub.dartlang.org"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "1.8.1"
 | 
				
			||||||
 | 
					  flutter_lints:
 | 
				
			||||||
 | 
					    dependency: "direct dev"
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: flutter_lints
 | 
				
			||||||
 | 
					      url: "https://pub.dartlang.org"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "2.0.1"
 | 
				
			||||||
 | 
					  flutter_plugin_android_lifecycle:
 | 
				
			||||||
 | 
					    dependency: transitive
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: flutter_plugin_android_lifecycle
 | 
				
			||||||
 | 
					      url: "https://pub.dartlang.org"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "2.0.7"
 | 
				
			||||||
 | 
					  flutter_test:
 | 
				
			||||||
 | 
					    dependency: "direct dev"
 | 
				
			||||||
 | 
					    description: flutter
 | 
				
			||||||
 | 
					    source: sdk
 | 
				
			||||||
 | 
					    version: "0.0.0"
 | 
				
			||||||
 | 
					  flutter_web_plugins:
 | 
				
			||||||
 | 
					    dependency: transitive
 | 
				
			||||||
 | 
					    description: flutter
 | 
				
			||||||
 | 
					    source: sdk
 | 
				
			||||||
 | 
					    version: "0.0.0"
 | 
				
			||||||
 | 
					  install_plugin_v2:
 | 
				
			||||||
 | 
					    dependency: "direct main"
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: install_plugin_v2
 | 
				
			||||||
 | 
					      url: "https://pub.dartlang.org"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "1.0.0"
 | 
				
			||||||
 | 
					  js:
 | 
				
			||||||
 | 
					    dependency: transitive
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: js
 | 
				
			||||||
 | 
					      url: "https://pub.dartlang.org"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "0.6.4"
 | 
				
			||||||
 | 
					  lints:
 | 
				
			||||||
 | 
					    dependency: transitive
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: lints
 | 
				
			||||||
 | 
					      url: "https://pub.dartlang.org"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "2.0.0"
 | 
				
			||||||
 | 
					  matcher:
 | 
				
			||||||
 | 
					    dependency: transitive
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: matcher
 | 
				
			||||||
 | 
					      url: "https://pub.dartlang.org"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "0.12.12"
 | 
				
			||||||
 | 
					  material_color_utilities:
 | 
				
			||||||
 | 
					    dependency: transitive
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: material_color_utilities
 | 
				
			||||||
 | 
					      url: "https://pub.dartlang.org"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "0.2.0"
 | 
				
			||||||
 | 
					  meta:
 | 
				
			||||||
 | 
					    dependency: transitive
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: meta
 | 
				
			||||||
 | 
					      url: "https://pub.dartlang.org"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "1.8.0"
 | 
				
			||||||
 | 
					  path:
 | 
				
			||||||
 | 
					    dependency: transitive
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: path
 | 
				
			||||||
 | 
					      url: "https://pub.dartlang.org"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "1.8.2"
 | 
				
			||||||
 | 
					  path_provider:
 | 
				
			||||||
 | 
					    dependency: "direct main"
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: path_provider
 | 
				
			||||||
 | 
					      url: "https://pub.dartlang.org"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "2.0.11"
 | 
				
			||||||
 | 
					  path_provider_android:
 | 
				
			||||||
 | 
					    dependency: transitive
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: path_provider_android
 | 
				
			||||||
 | 
					      url: "https://pub.dartlang.org"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "2.0.17"
 | 
				
			||||||
 | 
					  path_provider_ios:
 | 
				
			||||||
 | 
					    dependency: transitive
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: path_provider_ios
 | 
				
			||||||
 | 
					      url: "https://pub.dartlang.org"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "2.0.11"
 | 
				
			||||||
 | 
					  path_provider_linux:
 | 
				
			||||||
 | 
					    dependency: transitive
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: path_provider_linux
 | 
				
			||||||
 | 
					      url: "https://pub.dartlang.org"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "2.1.7"
 | 
				
			||||||
 | 
					  path_provider_macos:
 | 
				
			||||||
 | 
					    dependency: transitive
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: path_provider_macos
 | 
				
			||||||
 | 
					      url: "https://pub.dartlang.org"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "2.0.6"
 | 
				
			||||||
 | 
					  path_provider_platform_interface:
 | 
				
			||||||
 | 
					    dependency: transitive
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: path_provider_platform_interface
 | 
				
			||||||
 | 
					      url: "https://pub.dartlang.org"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "2.0.4"
 | 
				
			||||||
 | 
					  path_provider_windows:
 | 
				
			||||||
 | 
					    dependency: transitive
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: path_provider_windows
 | 
				
			||||||
 | 
					      url: "https://pub.dartlang.org"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "2.1.2"
 | 
				
			||||||
 | 
					  permission_handler:
 | 
				
			||||||
 | 
					    dependency: "direct main"
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: permission_handler
 | 
				
			||||||
 | 
					      url: "https://pub.dartlang.org"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "10.0.0"
 | 
				
			||||||
 | 
					  permission_handler_android:
 | 
				
			||||||
 | 
					    dependency: transitive
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: permission_handler_android
 | 
				
			||||||
 | 
					      url: "https://pub.dartlang.org"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "10.0.0"
 | 
				
			||||||
 | 
					  permission_handler_apple:
 | 
				
			||||||
 | 
					    dependency: transitive
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: permission_handler_apple
 | 
				
			||||||
 | 
					      url: "https://pub.dartlang.org"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "9.0.4"
 | 
				
			||||||
 | 
					  permission_handler_platform_interface:
 | 
				
			||||||
 | 
					    dependency: transitive
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: permission_handler_platform_interface
 | 
				
			||||||
 | 
					      url: "https://pub.dartlang.org"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "3.7.0"
 | 
				
			||||||
 | 
					  permission_handler_windows:
 | 
				
			||||||
 | 
					    dependency: transitive
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: permission_handler_windows
 | 
				
			||||||
 | 
					      url: "https://pub.dartlang.org"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "0.1.0"
 | 
				
			||||||
 | 
					  platform:
 | 
				
			||||||
 | 
					    dependency: transitive
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: platform
 | 
				
			||||||
 | 
					      url: "https://pub.dartlang.org"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "3.1.0"
 | 
				
			||||||
 | 
					  plugin_platform_interface:
 | 
				
			||||||
 | 
					    dependency: transitive
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: plugin_platform_interface
 | 
				
			||||||
 | 
					      url: "https://pub.dartlang.org"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "2.1.2"
 | 
				
			||||||
 | 
					  process:
 | 
				
			||||||
 | 
					    dependency: transitive
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: process
 | 
				
			||||||
 | 
					      url: "https://pub.dartlang.org"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "4.2.4"
 | 
				
			||||||
 | 
					  sky_engine:
 | 
				
			||||||
 | 
					    dependency: transitive
 | 
				
			||||||
 | 
					    description: flutter
 | 
				
			||||||
 | 
					    source: sdk
 | 
				
			||||||
 | 
					    version: "0.0.99"
 | 
				
			||||||
 | 
					  source_span:
 | 
				
			||||||
 | 
					    dependency: transitive
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: source_span
 | 
				
			||||||
 | 
					      url: "https://pub.dartlang.org"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "1.9.1"
 | 
				
			||||||
 | 
					  stack_trace:
 | 
				
			||||||
 | 
					    dependency: transitive
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: stack_trace
 | 
				
			||||||
 | 
					      url: "https://pub.dartlang.org"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "1.10.0"
 | 
				
			||||||
 | 
					  stream_channel:
 | 
				
			||||||
 | 
					    dependency: transitive
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: stream_channel
 | 
				
			||||||
 | 
					      url: "https://pub.dartlang.org"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "2.1.0"
 | 
				
			||||||
 | 
					  string_scanner:
 | 
				
			||||||
 | 
					    dependency: transitive
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: string_scanner
 | 
				
			||||||
 | 
					      url: "https://pub.dartlang.org"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "1.1.1"
 | 
				
			||||||
 | 
					  term_glyph:
 | 
				
			||||||
 | 
					    dependency: transitive
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: term_glyph
 | 
				
			||||||
 | 
					      url: "https://pub.dartlang.org"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "1.2.1"
 | 
				
			||||||
 | 
					  test_api:
 | 
				
			||||||
 | 
					    dependency: transitive
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: test_api
 | 
				
			||||||
 | 
					      url: "https://pub.dartlang.org"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "0.4.12"
 | 
				
			||||||
 | 
					  vector_math:
 | 
				
			||||||
 | 
					    dependency: transitive
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: vector_math
 | 
				
			||||||
 | 
					      url: "https://pub.dartlang.org"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "2.1.2"
 | 
				
			||||||
 | 
					  win32:
 | 
				
			||||||
 | 
					    dependency: transitive
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: win32
 | 
				
			||||||
 | 
					      url: "https://pub.dartlang.org"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "2.7.0"
 | 
				
			||||||
 | 
					  xdg_directories:
 | 
				
			||||||
 | 
					    dependency: transitive
 | 
				
			||||||
 | 
					    description:
 | 
				
			||||||
 | 
					      name: xdg_directories
 | 
				
			||||||
 | 
					      url: "https://pub.dartlang.org"
 | 
				
			||||||
 | 
					    source: hosted
 | 
				
			||||||
 | 
					    version: "0.2.0+1"
 | 
				
			||||||
 | 
					sdks:
 | 
				
			||||||
 | 
					  dart: ">=2.19.0-79.0.dev <3.0.0"
 | 
				
			||||||
 | 
					  flutter: ">=3.0.0"
 | 
				
			||||||
							
								
								
									
										97
									
								
								pubspec.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										97
									
								
								pubspec.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,97 @@
 | 
				
			|||||||
 | 
					name: obtainium
 | 
				
			||||||
 | 
					description: A new Flutter project.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# The following line prevents the package from being accidentally published to
 | 
				
			||||||
 | 
					# pub.dev using `flutter pub publish`. This is preferred for private packages.
 | 
				
			||||||
 | 
					publish_to: 'none' # Remove this line if you wish to publish to pub.dev
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# The following defines the version and build number for your application.
 | 
				
			||||||
 | 
					# A version number is three numbers separated by dots, like 1.2.43
 | 
				
			||||||
 | 
					# followed by an optional build number separated by a +.
 | 
				
			||||||
 | 
					# Both the version and the builder number may be overridden in flutter
 | 
				
			||||||
 | 
					# build by specifying --build-name and --build-number, respectively.
 | 
				
			||||||
 | 
					# In Android, build-name is used as versionName while build-number used as versionCode.
 | 
				
			||||||
 | 
					# Read more about Android versioning at https://developer.android.com/studio/publish/versioning
 | 
				
			||||||
 | 
					# In iOS, build-name is used as CFBundleShortVersionString while build-number is used as CFBundleVersion.
 | 
				
			||||||
 | 
					# Read more about iOS versioning at
 | 
				
			||||||
 | 
					# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
 | 
				
			||||||
 | 
					# In Windows, build-name is used as the major, minor, and patch parts
 | 
				
			||||||
 | 
					# of the product and file versions while build-number is used as the build suffix.
 | 
				
			||||||
 | 
					version: 1.0.0+1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					environment:
 | 
				
			||||||
 | 
					  sdk: '>=2.19.0-79.0.dev <3.0.0'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Dependencies specify other packages that your package needs in order to work.
 | 
				
			||||||
 | 
					# To automatically upgrade your package dependencies to the latest versions
 | 
				
			||||||
 | 
					# consider running `flutter pub upgrade --major-versions`. Alternatively,
 | 
				
			||||||
 | 
					# dependencies can be manually updated by changing the version numbers below to
 | 
				
			||||||
 | 
					# the latest version available on pub.dev. To see which dependencies have newer
 | 
				
			||||||
 | 
					# versions available, run `flutter pub outdated`.
 | 
				
			||||||
 | 
					dependencies:
 | 
				
			||||||
 | 
					  flutter:
 | 
				
			||||||
 | 
					    sdk: flutter
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # The following adds the Cupertino Icons font to your application.
 | 
				
			||||||
 | 
					  # Use with the CupertinoIcons class for iOS style icons.
 | 
				
			||||||
 | 
					  cupertino_icons: ^1.0.2
 | 
				
			||||||
 | 
					  file_picker: ^5.0.1
 | 
				
			||||||
 | 
					  install_plugin_v2: ^1.0.0
 | 
				
			||||||
 | 
					  permission_handler: ^10.0.0
 | 
				
			||||||
 | 
					  path_provider: ^2.0.11
 | 
				
			||||||
 | 
					  flutter_downloader: ^1.8.1
 | 
				
			||||||
 | 
					  app_installer: ^1.1.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					dev_dependencies:
 | 
				
			||||||
 | 
					  flutter_test:
 | 
				
			||||||
 | 
					    sdk: flutter
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # The "flutter_lints" package below contains a set of recommended lints to
 | 
				
			||||||
 | 
					  # encourage good coding practices. The lint set provided by the package is
 | 
				
			||||||
 | 
					  # activated in the `analysis_options.yaml` file located at the root of your
 | 
				
			||||||
 | 
					  # package. See that file for information about deactivating specific lint
 | 
				
			||||||
 | 
					  # rules and activating additional ones.
 | 
				
			||||||
 | 
					  flutter_lints: ^2.0.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# For information on the generic Dart part of this file, see the
 | 
				
			||||||
 | 
					# following page: https://dart.dev/tools/pub/pubspec
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# The following section is specific to Flutter packages.
 | 
				
			||||||
 | 
					flutter:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # The following line ensures that the Material Icons font is
 | 
				
			||||||
 | 
					  # included with your application, so that you can use the icons in
 | 
				
			||||||
 | 
					  # the material Icons class.
 | 
				
			||||||
 | 
					  uses-material-design: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # To add assets to your application, add an assets section, like this:
 | 
				
			||||||
 | 
					  # assets:
 | 
				
			||||||
 | 
					  #   - images/a_dot_burr.jpeg
 | 
				
			||||||
 | 
					  #   - images/a_dot_ham.jpeg
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # An image asset can refer to one or more resolution-specific "variants", see
 | 
				
			||||||
 | 
					  # https://flutter.dev/assets-and-images/#resolution-aware
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # For details regarding adding assets from package dependencies, see
 | 
				
			||||||
 | 
					  # https://flutter.dev/assets-and-images/#from-packages
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # To add custom fonts to your application, add a fonts section here,
 | 
				
			||||||
 | 
					  # in this "flutter" section. Each entry in this list should have a
 | 
				
			||||||
 | 
					  # "family" key with the font family name, and a "fonts" key with a
 | 
				
			||||||
 | 
					  # list giving the asset and other descriptors for the font. For
 | 
				
			||||||
 | 
					  # example:
 | 
				
			||||||
 | 
					  # fonts:
 | 
				
			||||||
 | 
					  #   - family: Schyler
 | 
				
			||||||
 | 
					  #     fonts:
 | 
				
			||||||
 | 
					  #       - asset: fonts/Schyler-Regular.ttf
 | 
				
			||||||
 | 
					  #       - asset: fonts/Schyler-Italic.ttf
 | 
				
			||||||
 | 
					  #         style: italic
 | 
				
			||||||
 | 
					  #   - family: Trajan Pro
 | 
				
			||||||
 | 
					  #     fonts:
 | 
				
			||||||
 | 
					  #       - asset: fonts/TrajanPro.ttf
 | 
				
			||||||
 | 
					  #       - asset: fonts/TrajanPro_Bold.ttf
 | 
				
			||||||
 | 
					  #         weight: 700
 | 
				
			||||||
 | 
					  #
 | 
				
			||||||
 | 
					  # For details regarding fonts from package dependencies,
 | 
				
			||||||
 | 
					  # see https://flutter.dev/custom-fonts/#from-packages
 | 
				
			||||||
							
								
								
									
										30
									
								
								test/widget_test.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								test/widget_test.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,30 @@
 | 
				
			|||||||
 | 
					// This is a basic Flutter widget test.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// To perform an interaction with a widget in your test, use the WidgetTester
 | 
				
			||||||
 | 
					// utility in the flutter_test package. For example, you can send tap and scroll
 | 
				
			||||||
 | 
					// gestures. You can also use WidgetTester to find child widgets in the widget
 | 
				
			||||||
 | 
					// tree, read text, and verify that the values of widget properties are correct.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import 'package:flutter/material.dart';
 | 
				
			||||||
 | 
					import 'package:flutter_test/flutter_test.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import 'package:obtainium/main.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void main() {
 | 
				
			||||||
 | 
					  testWidgets('Counter increments smoke test', (WidgetTester tester) async {
 | 
				
			||||||
 | 
					    // Build our app and trigger a frame.
 | 
				
			||||||
 | 
					    await tester.pumpWidget(const MyApp());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Verify that our counter starts at 0.
 | 
				
			||||||
 | 
					    expect(find.text('0'), findsOneWidget);
 | 
				
			||||||
 | 
					    expect(find.text('1'), findsNothing);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Tap the '+' icon and trigger a frame.
 | 
				
			||||||
 | 
					    await tester.tap(find.byIcon(Icons.add));
 | 
				
			||||||
 | 
					    await tester.pump();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Verify that our counter has incremented.
 | 
				
			||||||
 | 
					    expect(find.text('0'), findsNothing);
 | 
				
			||||||
 | 
					    expect(find.text('1'), findsOneWidget);
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user