├── .gitignore ├── .metadata ├── Firebase Security Rules Introduction.png ├── README.md ├── analysis_options.yaml ├── android ├── .gitignore ├── app │ ├── build.gradle │ └── src │ │ ├── debug │ │ └── AndroidManifest.xml │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── kotlin │ │ │ └── com │ │ │ │ └── example │ │ │ │ └── infinite_pagination │ │ │ │ └── MainActivity.kt │ │ └── res │ │ │ ├── drawable-v21 │ │ │ └── launch_background.xml │ │ │ ├── drawable │ │ │ └── launch_background.xml │ │ │ ├── mipmap-hdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-mdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxxhdpi │ │ │ └── ic_launcher.png │ │ │ ├── values-night │ │ │ └── styles.xml │ │ │ └── values │ │ │ └── styles.xml │ │ └── profile │ │ └── AndroidManifest.xml ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ └── gradle-wrapper.properties └── settings.gradle ├── ios ├── .gitignore ├── Flutter │ ├── AppFrameworkInfo.plist │ ├── Debug.xcconfig │ └── Release.xcconfig ├── Podfile ├── Podfile.lock ├── Runner.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ └── WorkspaceSettings.xcsettings │ └── xcshareddata │ │ └── xcschemes │ │ └── Runner.xcscheme ├── Runner.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ ├── IDEWorkspaceChecks.plist │ │ └── WorkspaceSettings.xcsettings └── Runner │ ├── AppDelegate.swift │ ├── Assets.xcassets │ ├── AppIcon.appiconset │ │ ├── Contents.json │ │ ├── Icon-App-1024x1024@1x.png │ │ ├── Icon-App-20x20@1x.png │ │ ├── Icon-App-20x20@2x.png │ │ ├── Icon-App-20x20@3x.png │ │ ├── Icon-App-29x29@1x.png │ │ ├── Icon-App-29x29@2x.png │ │ ├── Icon-App-29x29@3x.png │ │ ├── Icon-App-40x40@1x.png │ │ ├── Icon-App-40x40@2x.png │ │ ├── Icon-App-40x40@3x.png │ │ ├── Icon-App-60x60@2x.png │ │ ├── Icon-App-60x60@3x.png │ │ ├── Icon-App-76x76@1x.png │ │ ├── Icon-App-76x76@2x.png │ │ └── Icon-App-83.5x83.5@2x.png │ └── LaunchImage.imageset │ │ ├── Contents.json │ │ ├── LaunchImage.png │ │ ├── LaunchImage@2x.png │ │ ├── LaunchImage@3x.png │ │ └── README.md │ ├── Base.lproj │ ├── LaunchScreen.storyboard │ └── Main.storyboard │ ├── Info.plist │ ├── Runner-Bridging-Header.h │ ├── YouTube.html │ └── YouTube_files │ ├── base.js │ ├── cast_sender.js │ ├── channels4_profile(1).jpg │ ├── channels4_profile(2).jpg │ ├── channels4_profile(3).jpg │ ├── channels4_profile(4).jpg │ ├── channels4_profile(5).jpg │ ├── channels4_profile(6).jpg │ ├── channels4_profile(7).jpg │ ├── channels4_profile(8).jpg │ ├── channels4_profile.jpg │ ├── css │ ├── css(1) │ ├── css2 │ ├── custom-elements-es5-adapter.js │ ├── desktop_polymer.js │ ├── ed7ea9be9d5d6ec28d3e1038aa31e35771529feb8ecc54788fe1bab62e354916_2560x520.jpeg │ ├── hq720(1).jpg │ ├── hq720(2).jpg │ ├── hq720(3).jpg │ ├── hq720(4).jpg │ ├── hq720(5).jpg │ ├── hq720(6).jpg │ ├── hq720(7).jpg │ ├── hq720.jpg │ ├── hq720_live.jpg │ ├── hqdefault(1).jpg │ ├── hqdefault(2).jpg │ ├── hqdefault.jpg │ ├── intersection-observer.min.js │ ├── miniplayer.js │ ├── network.js │ ├── remote.js │ ├── saved_resource.html │ ├── scheduler.js │ ├── spf.js │ ├── unnamed(1).jpg │ ├── unnamed(10).jpg │ ├── unnamed(11).jpg │ ├── unnamed(12).jpg │ ├── unnamed(13).jpg │ ├── unnamed(14).jpg │ ├── unnamed(15).jpg │ ├── unnamed(16).jpg │ ├── unnamed(2).jpg │ ├── unnamed(3).jpg │ ├── unnamed(4).jpg │ ├── unnamed(5).jpg │ ├── unnamed(6).jpg │ ├── unnamed(7).jpg │ ├── unnamed(8).jpg │ ├── unnamed(9).jpg │ ├── unnamed.jpg │ ├── unnamed.png │ ├── web-animations-next-lite.min.js │ ├── webcomponents-sd.js │ ├── www-i18n-constants.js │ ├── www-main-desktop-home-page-skeleton-2x.css │ ├── www-main-desktop-watch-page-skeleton-2x.css │ ├── www-onepick-2x.css │ ├── www-player-2x-webp.css │ └── www-tampering.js ├── lib ├── main.dart └── src │ ├── database.dart │ ├── pagination_notifier.dart │ ├── pagination_state │ ├── pagination_state.dart │ └── pagination_state.freezed.dart │ └── providers.dart ├── macos ├── .gitignore ├── Flutter │ ├── Flutter-Debug.xcconfig │ ├── Flutter-Release.xcconfig │ └── GeneratedPluginRegistrant.swift ├── Podfile ├── Runner.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── xcshareddata │ │ └── xcschemes │ │ └── Runner.xcscheme ├── Runner.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist └── Runner │ ├── AppDelegate.swift │ ├── Assets.xcassets │ └── AppIcon.appiconset │ │ ├── Contents.json │ │ ├── app_icon_1024.png │ │ ├── app_icon_128.png │ │ ├── app_icon_16.png │ │ ├── app_icon_256.png │ │ ├── app_icon_32.png │ │ ├── app_icon_512.png │ │ └── app_icon_64.png │ ├── Base.lproj │ └── MainMenu.xib │ ├── Configs │ ├── AppInfo.xcconfig │ ├── Debug.xcconfig │ ├── Release.xcconfig │ └── Warnings.xcconfig │ ├── DebugProfile.entitlements │ ├── Info.plist │ ├── MainFlutterWindow.swift │ └── Release.entitlements ├── pubspec.lock ├── pubspec.yaml ├── test └── widget_test.dart └── web ├── favicon.png ├── icons ├── Icon-192.png ├── Icon-512.png ├── Icon-maskable-192.png └── Icon-maskable-512.png ├── index.html └── manifest.json /.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | 12 | # IntelliJ related 13 | *.iml 14 | *.ipr 15 | *.iws 16 | .idea/ 17 | 18 | # The .vscode folder contains launch configuration and tasks you configure in 19 | # VS Code which you may wish to be included in version control, so this line 20 | # is commented out by default. 21 | #.vscode/ 22 | 23 | # Flutter/Dart/Pub related 24 | **/doc/api/ 25 | **/ios/Flutter/.last_build_id 26 | .dart_tool/ 27 | .flutter-plugins 28 | .flutter-plugins-dependencies 29 | .packages 30 | .pub-cache/ 31 | .pub/ 32 | /build/ 33 | 34 | # Web related 35 | lib/generated_plugin_registrant.dart 36 | 37 | # Symbolication related 38 | app.*.symbols 39 | 40 | # Obfuscation related 41 | app.*.map.json 42 | 43 | # Android Studio will place build artifacts here 44 | /android/app/debug 45 | /android/app/profile 46 | /android/app/release 47 | 48 | 49 | # Firebase 50 | GoogleService-Info.plist 51 | 52 | # fvm 53 | .fvm/ -------------------------------------------------------------------------------- /.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: cf4400006550b70f28e4b4af815151d1e74846c6 8 | channel: stable 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /Firebase Security Rules Introduction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/Firebase Security Rules Introduction.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Infinite Pagination in Flutter with Riverpod, Freeze and Firebase 2 | 3 | ## Read the article [here](https://www.freecodecamp.org/news/infinite-pagination-in-flutter-with-riverpod/). 4 | 5 | 6 | -------------------------------------------------------------------------------- /analysis_options.yaml: -------------------------------------------------------------------------------- 1 | # This file configures the analyzer, which statically analyzes Dart code to 2 | # check for errors, warnings, and lints. 3 | # 4 | # The issues identified by the analyzer are surfaced in the UI of Dart-enabled 5 | # IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be 6 | # invoked from the command line by running `flutter analyze`. 7 | 8 | # The following line activates a set of recommended lints for Flutter apps, 9 | # packages, and plugins designed to encourage good coding practices. 10 | include: package:flutter_lints/flutter.yaml 11 | 12 | linter: 13 | # The lint rules applied to this project can be customized in the 14 | # section below to disable rules from the `package:flutter_lints/flutter.yaml` 15 | # included above or to enable additional rules. A list of all available lints 16 | # and their documentation is published at 17 | # https://dart-lang.github.io/linter/lints/index.html. 18 | # 19 | # Instead of disabling a lint rule for the entire project in the 20 | # section below, it can also be suppressed for a single line of code 21 | # or a specific dart file by using the `// ignore: name_of_lint` and 22 | # `// ignore_for_file: name_of_lint` syntax on the line or in the file 23 | # producing the lint. 24 | rules: 25 | # avoid_print: false # Uncomment to disable the `avoid_print` rule 26 | # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule 27 | 28 | # Additional information about this file can be found at 29 | # https://dart.dev/guides/language/analysis-options 30 | -------------------------------------------------------------------------------- /android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | 9 | # Remember to never publicly share your keystore. 10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app 11 | key.properties 12 | **/*.keystore 13 | **/*.jks 14 | -------------------------------------------------------------------------------- /android/app/build.gradle: -------------------------------------------------------------------------------- 1 | def localProperties = new Properties() 2 | def localPropertiesFile = rootProject.file('local.properties') 3 | if (localPropertiesFile.exists()) { 4 | localPropertiesFile.withReader('UTF-8') { reader -> 5 | localProperties.load(reader) 6 | } 7 | } 8 | 9 | def flutterRoot = localProperties.getProperty('flutter.sdk') 10 | if (flutterRoot == null) { 11 | throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") 12 | } 13 | 14 | def flutterVersionCode = localProperties.getProperty('flutter.versionCode') 15 | if (flutterVersionCode == null) { 16 | flutterVersionCode = '1' 17 | } 18 | 19 | def flutterVersionName = localProperties.getProperty('flutter.versionName') 20 | if (flutterVersionName == null) { 21 | flutterVersionName = '1.0' 22 | } 23 | 24 | apply plugin: 'com.android.application' 25 | apply plugin: 'kotlin-android' 26 | apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" 27 | 28 | android { 29 | compileSdkVersion flutter.compileSdkVersion 30 | 31 | compileOptions { 32 | sourceCompatibility JavaVersion.VERSION_1_8 33 | targetCompatibility JavaVersion.VERSION_1_8 34 | } 35 | 36 | kotlinOptions { 37 | jvmTarget = '1.8' 38 | } 39 | 40 | sourceSets { 41 | main.java.srcDirs += 'src/main/kotlin' 42 | } 43 | 44 | defaultConfig { 45 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). 46 | applicationId "com.example.infinite_pagination" 47 | minSdkVersion 19 48 | multiDexEnabled true 49 | targetSdkVersion flutter.targetSdkVersion 50 | versionCode flutterVersionCode.toInteger() 51 | versionName flutterVersionName 52 | } 53 | 54 | buildTypes { 55 | release { 56 | // TODO: Add your own signing config for the release build. 57 | // Signing with the debug keys for now, so `flutter run --release` works. 58 | signingConfig signingConfigs.debug 59 | } 60 | } 61 | } 62 | 63 | flutter { 64 | source '../..' 65 | } 66 | 67 | dependencies { 68 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" 69 | } 70 | -------------------------------------------------------------------------------- /android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 7 | 15 | 19 | 23 | 24 | 25 | 26 | 27 | 28 | 30 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /android/app/src/main/kotlin/com/example/infinite_pagination/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.example.infinite_pagination 2 | 3 | import io.flutter.embedding.android.FlutterActivity 4 | 5 | class MainActivity: FlutterActivity() { 6 | } 7 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-v21/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/values-night/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | ext.kotlin_version = '1.3.50' 3 | repositories { 4 | google() 5 | mavenCentral() 6 | } 7 | 8 | dependencies { 9 | classpath 'com.android.tools.build:gradle:4.2.0' 10 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 11 | } 12 | } 13 | 14 | allprojects { 15 | repositories { 16 | google() 17 | mavenCentral() 18 | } 19 | } 20 | 21 | rootProject.buildDir = '../build' 22 | subprojects { 23 | project.buildDir = "${rootProject.buildDir}/${project.name}" 24 | } 25 | subprojects { 26 | project.evaluationDependsOn(':app') 27 | } 28 | 29 | task clean(type: Delete) { 30 | delete rootProject.buildDir 31 | } 32 | -------------------------------------------------------------------------------- /android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.useAndroidX=true 3 | android.enableJetifier=true 4 | -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 23 08:50:38 CEST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-all.zip 7 | -------------------------------------------------------------------------------- /android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def localPropertiesFile = new File(rootProject.projectDir, "local.properties") 4 | def properties = new Properties() 5 | 6 | assert localPropertiesFile.exists() 7 | localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } 8 | 9 | def flutterSdkPath = properties.getProperty("flutter.sdk") 10 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties" 11 | apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" 12 | -------------------------------------------------------------------------------- /ios/.gitignore: -------------------------------------------------------------------------------- 1 | **/dgph 2 | *.mode1v3 3 | *.mode2v3 4 | *.moved-aside 5 | *.pbxuser 6 | *.perspectivev3 7 | **/*sync/ 8 | .sconsign.dblite 9 | .tags* 10 | **/.vagrant/ 11 | **/DerivedData/ 12 | Icon? 13 | **/Pods/ 14 | **/.symlinks/ 15 | profile 16 | xcuserdata 17 | **/.generated/ 18 | Flutter/App.framework 19 | Flutter/Flutter.framework 20 | Flutter/Flutter.podspec 21 | Flutter/Generated.xcconfig 22 | Flutter/ephemeral/ 23 | Flutter/app.flx 24 | Flutter/app.zip 25 | Flutter/flutter_assets/ 26 | Flutter/flutter_export_environment.sh 27 | ServiceDefinitions.json 28 | Runner/GeneratedPluginRegistrant.* 29 | 30 | # Exceptions to above rules. 31 | !default.mode1v3 32 | !default.mode2v3 33 | !default.pbxuser 34 | !default.perspectivev3 35 | -------------------------------------------------------------------------------- /ios/Flutter/AppFrameworkInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | App 9 | CFBundleIdentifier 10 | io.flutter.flutter.app 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | App 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | MinimumOSVersion 24 | 9.0 25 | 26 | 27 | -------------------------------------------------------------------------------- /ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /ios/Podfile: -------------------------------------------------------------------------------- 1 | # Uncomment this line to define a global platform for your project 2 | # platform :ios, '9.0' 3 | 4 | # CocoaPods analytics sends network stats synchronously affecting flutter build latency. 5 | ENV['COCOAPODS_DISABLE_STATS'] = 'true' 6 | 7 | project 'Runner', { 8 | 'Debug' => :debug, 9 | 'Profile' => :release, 10 | 'Release' => :release, 11 | } 12 | 13 | def flutter_root 14 | generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) 15 | unless File.exist?(generated_xcode_build_settings_path) 16 | raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" 17 | end 18 | 19 | File.foreach(generated_xcode_build_settings_path) do |line| 20 | matches = line.match(/FLUTTER_ROOT\=(.*)/) 21 | return matches[1].strip if matches 22 | end 23 | raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" 24 | end 25 | 26 | require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) 27 | 28 | flutter_ios_podfile_setup 29 | 30 | target 'Runner' do 31 | use_frameworks! 32 | use_modular_headers! 33 | 34 | flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) 35 | end 36 | 37 | post_install do |installer| 38 | installer.pods_project.targets.each do |target| 39 | flutter_additional_ios_build_settings(target) 40 | end 41 | end 42 | -------------------------------------------------------------------------------- /ios/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - abseil/algorithm (0.20200225.0): 3 | - abseil/algorithm/algorithm (= 0.20200225.0) 4 | - abseil/algorithm/container (= 0.20200225.0) 5 | - abseil/algorithm/algorithm (0.20200225.0): 6 | - abseil/base/config 7 | - abseil/algorithm/container (0.20200225.0): 8 | - abseil/algorithm/algorithm 9 | - abseil/base/core_headers 10 | - abseil/meta/type_traits 11 | - abseil/base (0.20200225.0): 12 | - abseil/base/atomic_hook (= 0.20200225.0) 13 | - abseil/base/base (= 0.20200225.0) 14 | - abseil/base/base_internal (= 0.20200225.0) 15 | - abseil/base/bits (= 0.20200225.0) 16 | - abseil/base/config (= 0.20200225.0) 17 | - abseil/base/core_headers (= 0.20200225.0) 18 | - abseil/base/dynamic_annotations (= 0.20200225.0) 19 | - abseil/base/endian (= 0.20200225.0) 20 | - abseil/base/errno_saver (= 0.20200225.0) 21 | - abseil/base/exponential_biased (= 0.20200225.0) 22 | - abseil/base/log_severity (= 0.20200225.0) 23 | - abseil/base/malloc_internal (= 0.20200225.0) 24 | - abseil/base/periodic_sampler (= 0.20200225.0) 25 | - abseil/base/pretty_function (= 0.20200225.0) 26 | - abseil/base/raw_logging_internal (= 0.20200225.0) 27 | - abseil/base/spinlock_wait (= 0.20200225.0) 28 | - abseil/base/throw_delegate (= 0.20200225.0) 29 | - abseil/base/atomic_hook (0.20200225.0): 30 | - abseil/base/config 31 | - abseil/base/core_headers 32 | - abseil/base/base (0.20200225.0): 33 | - abseil/base/atomic_hook 34 | - abseil/base/base_internal 35 | - abseil/base/config 36 | - abseil/base/core_headers 37 | - abseil/base/dynamic_annotations 38 | - abseil/base/log_severity 39 | - abseil/base/raw_logging_internal 40 | - abseil/base/spinlock_wait 41 | - abseil/meta/type_traits 42 | - abseil/base/base_internal (0.20200225.0): 43 | - abseil/base/config 44 | - abseil/meta/type_traits 45 | - abseil/base/bits (0.20200225.0): 46 | - abseil/base/config 47 | - abseil/base/core_headers 48 | - abseil/base/config (0.20200225.0) 49 | - abseil/base/core_headers (0.20200225.0): 50 | - abseil/base/config 51 | - abseil/base/dynamic_annotations (0.20200225.0) 52 | - abseil/base/endian (0.20200225.0): 53 | - abseil/base/config 54 | - abseil/base/core_headers 55 | - abseil/base/errno_saver (0.20200225.0): 56 | - abseil/base/config 57 | - abseil/base/exponential_biased (0.20200225.0): 58 | - abseil/base/config 59 | - abseil/base/core_headers 60 | - abseil/base/log_severity (0.20200225.0): 61 | - abseil/base/config 62 | - abseil/base/core_headers 63 | - abseil/base/malloc_internal (0.20200225.0): 64 | - abseil/base/base 65 | - abseil/base/base_internal 66 | - abseil/base/config 67 | - abseil/base/core_headers 68 | - abseil/base/dynamic_annotations 69 | - abseil/base/raw_logging_internal 70 | - abseil/base/periodic_sampler (0.20200225.0): 71 | - abseil/base/core_headers 72 | - abseil/base/exponential_biased 73 | - abseil/base/pretty_function (0.20200225.0) 74 | - abseil/base/raw_logging_internal (0.20200225.0): 75 | - abseil/base/atomic_hook 76 | - abseil/base/config 77 | - abseil/base/core_headers 78 | - abseil/base/log_severity 79 | - abseil/base/spinlock_wait (0.20200225.0): 80 | - abseil/base/base_internal 81 | - abseil/base/core_headers 82 | - abseil/base/errno_saver 83 | - abseil/base/throw_delegate (0.20200225.0): 84 | - abseil/base/config 85 | - abseil/base/raw_logging_internal 86 | - abseil/container/common (0.20200225.0): 87 | - abseil/meta/type_traits 88 | - abseil/types/optional 89 | - abseil/container/compressed_tuple (0.20200225.0): 90 | - abseil/utility/utility 91 | - abseil/container/container_memory (0.20200225.0): 92 | - abseil/memory/memory 93 | - abseil/utility/utility 94 | - abseil/container/fixed_array (0.20200225.0): 95 | - abseil/algorithm/algorithm 96 | - abseil/base/core_headers 97 | - abseil/base/dynamic_annotations 98 | - abseil/base/throw_delegate 99 | - abseil/container/compressed_tuple 100 | - abseil/memory/memory 101 | - abseil/container/flat_hash_map (0.20200225.0): 102 | - abseil/algorithm/container 103 | - abseil/container/container_memory 104 | - abseil/container/hash_function_defaults 105 | - abseil/container/raw_hash_map 106 | - abseil/memory/memory 107 | - abseil/container/hash_function_defaults (0.20200225.0): 108 | - abseil/base/config 109 | - abseil/hash/hash 110 | - abseil/strings/strings 111 | - abseil/container/hash_policy_traits (0.20200225.0): 112 | - abseil/meta/type_traits 113 | - abseil/container/hashtable_debug_hooks (0.20200225.0): 114 | - abseil/base/config 115 | - abseil/container/hashtablez_sampler (0.20200225.0): 116 | - abseil/base/base 117 | - abseil/base/core_headers 118 | - abseil/base/exponential_biased 119 | - abseil/container/have_sse 120 | - abseil/debugging/stacktrace 121 | - abseil/memory/memory 122 | - abseil/synchronization/synchronization 123 | - abseil/utility/utility 124 | - abseil/container/have_sse (0.20200225.0) 125 | - abseil/container/inlined_vector (0.20200225.0): 126 | - abseil/algorithm/algorithm 127 | - abseil/base/core_headers 128 | - abseil/base/throw_delegate 129 | - abseil/container/inlined_vector_internal 130 | - abseil/memory/memory 131 | - abseil/container/inlined_vector_internal (0.20200225.0): 132 | - abseil/base/core_headers 133 | - abseil/container/compressed_tuple 134 | - abseil/memory/memory 135 | - abseil/meta/type_traits 136 | - abseil/types/span 137 | - abseil/container/layout (0.20200225.0): 138 | - abseil/base/core_headers 139 | - abseil/meta/type_traits 140 | - abseil/strings/strings 141 | - abseil/types/span 142 | - abseil/utility/utility 143 | - abseil/container/raw_hash_map (0.20200225.0): 144 | - abseil/base/throw_delegate 145 | - abseil/container/container_memory 146 | - abseil/container/raw_hash_set 147 | - abseil/container/raw_hash_set (0.20200225.0): 148 | - abseil/base/bits 149 | - abseil/base/config 150 | - abseil/base/core_headers 151 | - abseil/base/endian 152 | - abseil/container/common 153 | - abseil/container/compressed_tuple 154 | - abseil/container/container_memory 155 | - abseil/container/hash_policy_traits 156 | - abseil/container/hashtable_debug_hooks 157 | - abseil/container/hashtablez_sampler 158 | - abseil/container/have_sse 159 | - abseil/container/layout 160 | - abseil/memory/memory 161 | - abseil/meta/type_traits 162 | - abseil/utility/utility 163 | - abseil/debugging/debugging_internal (0.20200225.0): 164 | - abseil/base/config 165 | - abseil/base/core_headers 166 | - abseil/base/dynamic_annotations 167 | - abseil/base/errno_saver 168 | - abseil/base/raw_logging_internal 169 | - abseil/debugging/demangle_internal (0.20200225.0): 170 | - abseil/base/base 171 | - abseil/base/config 172 | - abseil/base/core_headers 173 | - abseil/debugging/stacktrace (0.20200225.0): 174 | - abseil/base/config 175 | - abseil/base/core_headers 176 | - abseil/debugging/debugging_internal 177 | - abseil/debugging/symbolize (0.20200225.0): 178 | - abseil/base/base 179 | - abseil/base/config 180 | - abseil/base/core_headers 181 | - abseil/base/dynamic_annotations 182 | - abseil/base/malloc_internal 183 | - abseil/base/raw_logging_internal 184 | - abseil/debugging/debugging_internal 185 | - abseil/debugging/demangle_internal 186 | - abseil/hash/city (0.20200225.0): 187 | - abseil/base/config 188 | - abseil/base/core_headers 189 | - abseil/base/endian 190 | - abseil/hash/hash (0.20200225.0): 191 | - abseil/base/core_headers 192 | - abseil/base/endian 193 | - abseil/container/fixed_array 194 | - abseil/hash/city 195 | - abseil/meta/type_traits 196 | - abseil/numeric/int128 197 | - abseil/strings/strings 198 | - abseil/types/optional 199 | - abseil/types/variant 200 | - abseil/utility/utility 201 | - abseil/memory (0.20200225.0): 202 | - abseil/memory/memory (= 0.20200225.0) 203 | - abseil/memory/memory (0.20200225.0): 204 | - abseil/base/core_headers 205 | - abseil/meta/type_traits 206 | - abseil/meta (0.20200225.0): 207 | - abseil/meta/type_traits (= 0.20200225.0) 208 | - abseil/meta/type_traits (0.20200225.0): 209 | - abseil/base/config 210 | - abseil/numeric/int128 (0.20200225.0): 211 | - abseil/base/config 212 | - abseil/base/core_headers 213 | - abseil/strings/internal (0.20200225.0): 214 | - abseil/base/config 215 | - abseil/base/core_headers 216 | - abseil/base/endian 217 | - abseil/base/raw_logging_internal 218 | - abseil/meta/type_traits 219 | - abseil/strings/str_format (0.20200225.0): 220 | - abseil/strings/str_format_internal 221 | - abseil/strings/str_format_internal (0.20200225.0): 222 | - abseil/base/config 223 | - abseil/base/core_headers 224 | - abseil/meta/type_traits 225 | - abseil/numeric/int128 226 | - abseil/strings/strings 227 | - abseil/types/span 228 | - abseil/strings/strings (0.20200225.0): 229 | - abseil/base/base 230 | - abseil/base/bits 231 | - abseil/base/config 232 | - abseil/base/core_headers 233 | - abseil/base/endian 234 | - abseil/base/raw_logging_internal 235 | - abseil/base/throw_delegate 236 | - abseil/memory/memory 237 | - abseil/meta/type_traits 238 | - abseil/numeric/int128 239 | - abseil/strings/internal 240 | - abseil/synchronization/graphcycles_internal (0.20200225.0): 241 | - abseil/base/base 242 | - abseil/base/base_internal 243 | - abseil/base/config 244 | - abseil/base/core_headers 245 | - abseil/base/malloc_internal 246 | - abseil/base/raw_logging_internal 247 | - abseil/synchronization/kernel_timeout_internal (0.20200225.0): 248 | - abseil/base/core_headers 249 | - abseil/base/raw_logging_internal 250 | - abseil/time/time 251 | - abseil/synchronization/synchronization (0.20200225.0): 252 | - abseil/base/atomic_hook 253 | - abseil/base/base 254 | - abseil/base/base_internal 255 | - abseil/base/config 256 | - abseil/base/core_headers 257 | - abseil/base/dynamic_annotations 258 | - abseil/base/malloc_internal 259 | - abseil/base/raw_logging_internal 260 | - abseil/debugging/stacktrace 261 | - abseil/debugging/symbolize 262 | - abseil/synchronization/graphcycles_internal 263 | - abseil/synchronization/kernel_timeout_internal 264 | - abseil/time/time 265 | - abseil/time (0.20200225.0): 266 | - abseil/time/internal (= 0.20200225.0) 267 | - abseil/time/time (= 0.20200225.0) 268 | - abseil/time/internal (0.20200225.0): 269 | - abseil/time/internal/cctz (= 0.20200225.0) 270 | - abseil/time/internal/cctz (0.20200225.0): 271 | - abseil/time/internal/cctz/civil_time (= 0.20200225.0) 272 | - abseil/time/internal/cctz/time_zone (= 0.20200225.0) 273 | - abseil/time/internal/cctz/civil_time (0.20200225.0): 274 | - abseil/base/config 275 | - abseil/time/internal/cctz/time_zone (0.20200225.0): 276 | - abseil/base/config 277 | - abseil/time/internal/cctz/civil_time 278 | - abseil/time/time (0.20200225.0): 279 | - abseil/base/base 280 | - abseil/base/core_headers 281 | - abseil/base/raw_logging_internal 282 | - abseil/numeric/int128 283 | - abseil/strings/strings 284 | - abseil/time/internal/cctz/civil_time 285 | - abseil/time/internal/cctz/time_zone 286 | - abseil/types (0.20200225.0): 287 | - abseil/types/any (= 0.20200225.0) 288 | - abseil/types/bad_any_cast (= 0.20200225.0) 289 | - abseil/types/bad_any_cast_impl (= 0.20200225.0) 290 | - abseil/types/bad_optional_access (= 0.20200225.0) 291 | - abseil/types/bad_variant_access (= 0.20200225.0) 292 | - abseil/types/compare (= 0.20200225.0) 293 | - abseil/types/optional (= 0.20200225.0) 294 | - abseil/types/span (= 0.20200225.0) 295 | - abseil/types/variant (= 0.20200225.0) 296 | - abseil/types/any (0.20200225.0): 297 | - abseil/base/config 298 | - abseil/base/core_headers 299 | - abseil/meta/type_traits 300 | - abseil/types/bad_any_cast 301 | - abseil/utility/utility 302 | - abseil/types/bad_any_cast (0.20200225.0): 303 | - abseil/base/config 304 | - abseil/types/bad_any_cast_impl 305 | - abseil/types/bad_any_cast_impl (0.20200225.0): 306 | - abseil/base/config 307 | - abseil/base/raw_logging_internal 308 | - abseil/types/bad_optional_access (0.20200225.0): 309 | - abseil/base/config 310 | - abseil/base/raw_logging_internal 311 | - abseil/types/bad_variant_access (0.20200225.0): 312 | - abseil/base/config 313 | - abseil/base/raw_logging_internal 314 | - abseil/types/compare (0.20200225.0): 315 | - abseil/base/core_headers 316 | - abseil/meta/type_traits 317 | - abseil/types/optional (0.20200225.0): 318 | - abseil/base/base_internal 319 | - abseil/base/config 320 | - abseil/base/core_headers 321 | - abseil/memory/memory 322 | - abseil/meta/type_traits 323 | - abseil/types/bad_optional_access 324 | - abseil/utility/utility 325 | - abseil/types/span (0.20200225.0): 326 | - abseil/algorithm/algorithm 327 | - abseil/base/core_headers 328 | - abseil/base/throw_delegate 329 | - abseil/meta/type_traits 330 | - abseil/types/variant (0.20200225.0): 331 | - abseil/base/base_internal 332 | - abseil/base/config 333 | - abseil/base/core_headers 334 | - abseil/meta/type_traits 335 | - abseil/types/bad_variant_access 336 | - abseil/utility/utility 337 | - abseil/utility/utility (0.20200225.0): 338 | - abseil/base/base_internal 339 | - abseil/base/config 340 | - abseil/meta/type_traits 341 | - BoringSSL-GRPC (0.0.7): 342 | - BoringSSL-GRPC/Implementation (= 0.0.7) 343 | - BoringSSL-GRPC/Interface (= 0.0.7) 344 | - BoringSSL-GRPC/Implementation (0.0.7): 345 | - BoringSSL-GRPC/Interface (= 0.0.7) 346 | - BoringSSL-GRPC/Interface (0.0.7) 347 | - cloud_firestore (3.1.8): 348 | - Firebase/Firestore (= 8.11.0) 349 | - firebase_core 350 | - Flutter 351 | - Firebase/CoreOnly (8.11.0): 352 | - FirebaseCore (= 8.11.0) 353 | - Firebase/Firestore (8.11.0): 354 | - Firebase/CoreOnly 355 | - FirebaseFirestore (~> 8.11.0) 356 | - firebase_core (1.12.0): 357 | - Firebase/CoreOnly (= 8.11.0) 358 | - Flutter 359 | - FirebaseCore (8.11.0): 360 | - FirebaseCoreDiagnostics (~> 8.0) 361 | - GoogleUtilities/Environment (~> 7.7) 362 | - GoogleUtilities/Logger (~> 7.7) 363 | - FirebaseCoreDiagnostics (8.12.0): 364 | - GoogleDataTransport (~> 9.1) 365 | - GoogleUtilities/Environment (~> 7.7) 366 | - GoogleUtilities/Logger (~> 7.7) 367 | - nanopb (~> 2.30908.0) 368 | - FirebaseFirestore (8.11.0): 369 | - abseil/algorithm (= 0.20200225.0) 370 | - abseil/base (= 0.20200225.0) 371 | - abseil/container/flat_hash_map (= 0.20200225.0) 372 | - abseil/memory (= 0.20200225.0) 373 | - abseil/meta (= 0.20200225.0) 374 | - abseil/strings/strings (= 0.20200225.0) 375 | - abseil/time (= 0.20200225.0) 376 | - abseil/types (= 0.20200225.0) 377 | - FirebaseCore (~> 8.0) 378 | - "gRPC-C++ (~> 1.28.0)" 379 | - leveldb-library (~> 1.22) 380 | - nanopb (~> 2.30908.0) 381 | - Flutter (1.0.0) 382 | - GoogleDataTransport (9.1.2): 383 | - GoogleUtilities/Environment (~> 7.2) 384 | - nanopb (~> 2.30908.0) 385 | - PromisesObjC (< 3.0, >= 1.2) 386 | - GoogleUtilities/Environment (7.7.0): 387 | - PromisesObjC (< 3.0, >= 1.2) 388 | - GoogleUtilities/Logger (7.7.0): 389 | - GoogleUtilities/Environment 390 | - "gRPC-C++ (1.28.2)": 391 | - "gRPC-C++/Implementation (= 1.28.2)" 392 | - "gRPC-C++/Interface (= 1.28.2)" 393 | - "gRPC-C++/Implementation (1.28.2)": 394 | - abseil/container/inlined_vector (= 0.20200225.0) 395 | - abseil/memory/memory (= 0.20200225.0) 396 | - abseil/strings/str_format (= 0.20200225.0) 397 | - abseil/strings/strings (= 0.20200225.0) 398 | - abseil/types/optional (= 0.20200225.0) 399 | - "gRPC-C++/Interface (= 1.28.2)" 400 | - gRPC-Core (= 1.28.2) 401 | - "gRPC-C++/Interface (1.28.2)" 402 | - gRPC-Core (1.28.2): 403 | - gRPC-Core/Implementation (= 1.28.2) 404 | - gRPC-Core/Interface (= 1.28.2) 405 | - gRPC-Core/Implementation (1.28.2): 406 | - abseil/container/inlined_vector (= 0.20200225.0) 407 | - abseil/memory/memory (= 0.20200225.0) 408 | - abseil/strings/str_format (= 0.20200225.0) 409 | - abseil/strings/strings (= 0.20200225.0) 410 | - abseil/types/optional (= 0.20200225.0) 411 | - BoringSSL-GRPC (= 0.0.7) 412 | - gRPC-Core/Interface (= 1.28.2) 413 | - gRPC-Core/Interface (1.28.2) 414 | - leveldb-library (1.22.1) 415 | - nanopb (2.30908.0): 416 | - nanopb/decode (= 2.30908.0) 417 | - nanopb/encode (= 2.30908.0) 418 | - nanopb/decode (2.30908.0) 419 | - nanopb/encode (2.30908.0) 420 | - PromisesObjC (2.0.0) 421 | 422 | DEPENDENCIES: 423 | - cloud_firestore (from `.symlinks/plugins/cloud_firestore/ios`) 424 | - firebase_core (from `.symlinks/plugins/firebase_core/ios`) 425 | - Flutter (from `Flutter`) 426 | 427 | SPEC REPOS: 428 | trunk: 429 | - abseil 430 | - BoringSSL-GRPC 431 | - Firebase 432 | - FirebaseCore 433 | - FirebaseCoreDiagnostics 434 | - FirebaseFirestore 435 | - GoogleDataTransport 436 | - GoogleUtilities 437 | - "gRPC-C++" 438 | - gRPC-Core 439 | - leveldb-library 440 | - nanopb 441 | - PromisesObjC 442 | 443 | EXTERNAL SOURCES: 444 | cloud_firestore: 445 | :path: ".symlinks/plugins/cloud_firestore/ios" 446 | firebase_core: 447 | :path: ".symlinks/plugins/firebase_core/ios" 448 | Flutter: 449 | :path: Flutter 450 | 451 | SPEC CHECKSUMS: 452 | abseil: 6c8eb7892aefa08d929b39f9bb108e5367e3228f 453 | BoringSSL-GRPC: 8edf627ee524575e2f8d19d56f068b448eea3879 454 | cloud_firestore: 8bd22e19f6ccf3a0d1976ea298e0ce37c9ad5839 455 | Firebase: 44dd9724c84df18b486639e874f31436eaa9a20c 456 | firebase_core: 443bccfd6aa6b42f07be365b500773dc69db2d87 457 | FirebaseCore: 2f4f85b453cc8fea4bb2b37e370007d2bcafe3f0 458 | FirebaseCoreDiagnostics: 3b40dfadef5b90433a60ae01f01e90fe87aa76aa 459 | FirebaseFirestore: 3b2e4b532c68809b3df5f8d39d28b3398ffc196b 460 | Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a 461 | GoogleDataTransport: 629c20a4d363167143f30ea78320d5a7eb8bd940 462 | GoogleUtilities: e0913149f6b0625b553d70dae12b49fc62914fd1 463 | "gRPC-C++": 13d8ccef97d5c3c441b7e3c529ef28ebee86fad2 464 | gRPC-Core: 4afa11bfbedf7cdecd04de535a9e046893404ed5 465 | leveldb-library: 50c7b45cbd7bf543c81a468fe557a16ae3db8729 466 | nanopb: a0ba3315591a9ae0a16a309ee504766e90db0c96 467 | PromisesObjC: 68159ce6952d93e17b2dfe273b8c40907db5ba58 468 | 469 | PODFILE CHECKSUM: aafe91acc616949ddb318b77800a7f51bffa2a4c 470 | 471 | COCOAPODS: 1.10.2 472 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 37 | 38 | 39 | 40 | 41 | 42 | 52 | 54 | 60 | 61 | 62 | 63 | 69 | 71 | 77 | 78 | 79 | 80 | 82 | 83 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import Flutter 3 | 4 | @UIApplicationMain 5 | @objc class AppDelegate: FlutterAppDelegate { 6 | override func application( 7 | _ application: UIApplication, 8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? 9 | ) -> Bool { 10 | GeneratedPluginRegistrant.register(with: self) 11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "20x20", 5 | "idiom" : "iphone", 6 | "filename" : "Icon-App-20x20@2x.png", 7 | "scale" : "2x" 8 | }, 9 | { 10 | "size" : "20x20", 11 | "idiom" : "iphone", 12 | "filename" : "Icon-App-20x20@3x.png", 13 | "scale" : "3x" 14 | }, 15 | { 16 | "size" : "29x29", 17 | "idiom" : "iphone", 18 | "filename" : "Icon-App-29x29@1x.png", 19 | "scale" : "1x" 20 | }, 21 | { 22 | "size" : "29x29", 23 | "idiom" : "iphone", 24 | "filename" : "Icon-App-29x29@2x.png", 25 | "scale" : "2x" 26 | }, 27 | { 28 | "size" : "29x29", 29 | "idiom" : "iphone", 30 | "filename" : "Icon-App-29x29@3x.png", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "size" : "40x40", 35 | "idiom" : "iphone", 36 | "filename" : "Icon-App-40x40@2x.png", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "size" : "40x40", 41 | "idiom" : "iphone", 42 | "filename" : "Icon-App-40x40@3x.png", 43 | "scale" : "3x" 44 | }, 45 | { 46 | "size" : "60x60", 47 | "idiom" : "iphone", 48 | "filename" : "Icon-App-60x60@2x.png", 49 | "scale" : "2x" 50 | }, 51 | { 52 | "size" : "60x60", 53 | "idiom" : "iphone", 54 | "filename" : "Icon-App-60x60@3x.png", 55 | "scale" : "3x" 56 | }, 57 | { 58 | "size" : "20x20", 59 | "idiom" : "ipad", 60 | "filename" : "Icon-App-20x20@1x.png", 61 | "scale" : "1x" 62 | }, 63 | { 64 | "size" : "20x20", 65 | "idiom" : "ipad", 66 | "filename" : "Icon-App-20x20@2x.png", 67 | "scale" : "2x" 68 | }, 69 | { 70 | "size" : "29x29", 71 | "idiom" : "ipad", 72 | "filename" : "Icon-App-29x29@1x.png", 73 | "scale" : "1x" 74 | }, 75 | { 76 | "size" : "29x29", 77 | "idiom" : "ipad", 78 | "filename" : "Icon-App-29x29@2x.png", 79 | "scale" : "2x" 80 | }, 81 | { 82 | "size" : "40x40", 83 | "idiom" : "ipad", 84 | "filename" : "Icon-App-40x40@1x.png", 85 | "scale" : "1x" 86 | }, 87 | { 88 | "size" : "40x40", 89 | "idiom" : "ipad", 90 | "filename" : "Icon-App-40x40@2x.png", 91 | "scale" : "2x" 92 | }, 93 | { 94 | "size" : "76x76", 95 | "idiom" : "ipad", 96 | "filename" : "Icon-App-76x76@1x.png", 97 | "scale" : "1x" 98 | }, 99 | { 100 | "size" : "76x76", 101 | "idiom" : "ipad", 102 | "filename" : "Icon-App-76x76@2x.png", 103 | "scale" : "2x" 104 | }, 105 | { 106 | "size" : "83.5x83.5", 107 | "idiom" : "ipad", 108 | "filename" : "Icon-App-83.5x83.5@2x.png", 109 | "scale" : "2x" 110 | }, 111 | { 112 | "size" : "1024x1024", 113 | "idiom" : "ios-marketing", 114 | "filename" : "Icon-App-1024x1024@1x.png", 115 | "scale" : "1x" 116 | } 117 | ], 118 | "info" : { 119 | "version" : 1, 120 | "author" : "xcode" 121 | } 122 | } 123 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /ios/Runner/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /ios/Runner/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /ios/Runner/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleDisplayName 8 | Infinite Pagination 9 | CFBundleExecutable 10 | $(EXECUTABLE_NAME) 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | infinite_pagination 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | $(FLUTTER_BUILD_NAME) 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | $(FLUTTER_BUILD_NUMBER) 25 | LSRequiresIPhoneOS 26 | 27 | UILaunchStoryboardName 28 | LaunchScreen 29 | UIMainStoryboardFile 30 | Main 31 | UISupportedInterfaceOrientations 32 | 33 | UIInterfaceOrientationPortrait 34 | UIInterfaceOrientationLandscapeLeft 35 | UIInterfaceOrientationLandscapeRight 36 | 37 | UISupportedInterfaceOrientations~ipad 38 | 39 | UIInterfaceOrientationPortrait 40 | UIInterfaceOrientationPortraitUpsideDown 41 | UIInterfaceOrientationLandscapeLeft 42 | UIInterfaceOrientationLandscapeRight 43 | 44 | UIViewControllerBasedStatusBarAppearance 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" 2 | -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/channels4_profile(1).jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/YouTube_files/channels4_profile(1).jpg -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/channels4_profile(2).jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/YouTube_files/channels4_profile(2).jpg -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/channels4_profile(3).jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/YouTube_files/channels4_profile(3).jpg -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/channels4_profile(4).jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/YouTube_files/channels4_profile(4).jpg -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/channels4_profile(5).jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/YouTube_files/channels4_profile(5).jpg -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/channels4_profile(6).jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/YouTube_files/channels4_profile(6).jpg -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/channels4_profile(7).jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/YouTube_files/channels4_profile(7).jpg -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/channels4_profile(8).jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/YouTube_files/channels4_profile(8).jpg -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/channels4_profile.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/YouTube_files/channels4_profile.jpg -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/css: -------------------------------------------------------------------------------- 1 | /* cyrillic-ext */ 2 | @font-face { 3 | font-family: 'Roboto'; 4 | font-style: italic; 5 | font-weight: 300; 6 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOjCnqEu92Fr1Mu51TjASc3CsTYl4BOQ3o.woff2) format('woff2'); 7 | unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 8 | } 9 | /* cyrillic */ 10 | @font-face { 11 | font-family: 'Roboto'; 12 | font-style: italic; 13 | font-weight: 300; 14 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOjCnqEu92Fr1Mu51TjASc-CsTYl4BOQ3o.woff2) format('woff2'); 15 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 16 | } 17 | /* greek-ext */ 18 | @font-face { 19 | font-family: 'Roboto'; 20 | font-style: italic; 21 | font-weight: 300; 22 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOjCnqEu92Fr1Mu51TjASc2CsTYl4BOQ3o.woff2) format('woff2'); 23 | unicode-range: U+1F00-1FFF; 24 | } 25 | /* greek */ 26 | @font-face { 27 | font-family: 'Roboto'; 28 | font-style: italic; 29 | font-weight: 300; 30 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOjCnqEu92Fr1Mu51TjASc5CsTYl4BOQ3o.woff2) format('woff2'); 31 | unicode-range: U+0370-03FF; 32 | } 33 | /* vietnamese */ 34 | @font-face { 35 | font-family: 'Roboto'; 36 | font-style: italic; 37 | font-weight: 300; 38 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOjCnqEu92Fr1Mu51TjASc1CsTYl4BOQ3o.woff2) format('woff2'); 39 | unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; 40 | } 41 | /* latin-ext */ 42 | @font-face { 43 | font-family: 'Roboto'; 44 | font-style: italic; 45 | font-weight: 300; 46 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOjCnqEu92Fr1Mu51TjASc0CsTYl4BOQ3o.woff2) format('woff2'); 47 | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; 48 | } 49 | /* latin */ 50 | @font-face { 51 | font-family: 'Roboto'; 52 | font-style: italic; 53 | font-weight: 300; 54 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOjCnqEu92Fr1Mu51TjASc6CsTYl4BO.woff2) format('woff2'); 55 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 56 | } 57 | /* cyrillic-ext */ 58 | @font-face { 59 | font-family: 'Roboto'; 60 | font-style: italic; 61 | font-weight: 400; 62 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOkCnqEu92Fr1Mu51xFIzIXKMnyrYk.woff2) format('woff2'); 63 | unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 64 | } 65 | /* cyrillic */ 66 | @font-face { 67 | font-family: 'Roboto'; 68 | font-style: italic; 69 | font-weight: 400; 70 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOkCnqEu92Fr1Mu51xMIzIXKMnyrYk.woff2) format('woff2'); 71 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 72 | } 73 | /* greek-ext */ 74 | @font-face { 75 | font-family: 'Roboto'; 76 | font-style: italic; 77 | font-weight: 400; 78 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOkCnqEu92Fr1Mu51xEIzIXKMnyrYk.woff2) format('woff2'); 79 | unicode-range: U+1F00-1FFF; 80 | } 81 | /* greek */ 82 | @font-face { 83 | font-family: 'Roboto'; 84 | font-style: italic; 85 | font-weight: 400; 86 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOkCnqEu92Fr1Mu51xLIzIXKMnyrYk.woff2) format('woff2'); 87 | unicode-range: U+0370-03FF; 88 | } 89 | /* vietnamese */ 90 | @font-face { 91 | font-family: 'Roboto'; 92 | font-style: italic; 93 | font-weight: 400; 94 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOkCnqEu92Fr1Mu51xHIzIXKMnyrYk.woff2) format('woff2'); 95 | unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; 96 | } 97 | /* latin-ext */ 98 | @font-face { 99 | font-family: 'Roboto'; 100 | font-style: italic; 101 | font-weight: 400; 102 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOkCnqEu92Fr1Mu51xGIzIXKMnyrYk.woff2) format('woff2'); 103 | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; 104 | } 105 | /* latin */ 106 | @font-face { 107 | font-family: 'Roboto'; 108 | font-style: italic; 109 | font-weight: 400; 110 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOkCnqEu92Fr1Mu51xIIzIXKMny.woff2) format('woff2'); 111 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 112 | } 113 | /* cyrillic-ext */ 114 | @font-face { 115 | font-family: 'Roboto'; 116 | font-style: italic; 117 | font-weight: 500; 118 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOjCnqEu92Fr1Mu51S7ACc3CsTYl4BOQ3o.woff2) format('woff2'); 119 | unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 120 | } 121 | /* cyrillic */ 122 | @font-face { 123 | font-family: 'Roboto'; 124 | font-style: italic; 125 | font-weight: 500; 126 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOjCnqEu92Fr1Mu51S7ACc-CsTYl4BOQ3o.woff2) format('woff2'); 127 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 128 | } 129 | /* greek-ext */ 130 | @font-face { 131 | font-family: 'Roboto'; 132 | font-style: italic; 133 | font-weight: 500; 134 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOjCnqEu92Fr1Mu51S7ACc2CsTYl4BOQ3o.woff2) format('woff2'); 135 | unicode-range: U+1F00-1FFF; 136 | } 137 | /* greek */ 138 | @font-face { 139 | font-family: 'Roboto'; 140 | font-style: italic; 141 | font-weight: 500; 142 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOjCnqEu92Fr1Mu51S7ACc5CsTYl4BOQ3o.woff2) format('woff2'); 143 | unicode-range: U+0370-03FF; 144 | } 145 | /* vietnamese */ 146 | @font-face { 147 | font-family: 'Roboto'; 148 | font-style: italic; 149 | font-weight: 500; 150 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOjCnqEu92Fr1Mu51S7ACc1CsTYl4BOQ3o.woff2) format('woff2'); 151 | unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; 152 | } 153 | /* latin-ext */ 154 | @font-face { 155 | font-family: 'Roboto'; 156 | font-style: italic; 157 | font-weight: 500; 158 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOjCnqEu92Fr1Mu51S7ACc0CsTYl4BOQ3o.woff2) format('woff2'); 159 | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; 160 | } 161 | /* latin */ 162 | @font-face { 163 | font-family: 'Roboto'; 164 | font-style: italic; 165 | font-weight: 500; 166 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOjCnqEu92Fr1Mu51S7ACc6CsTYl4BO.woff2) format('woff2'); 167 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 168 | } 169 | /* cyrillic-ext */ 170 | @font-face { 171 | font-family: 'Roboto'; 172 | font-style: italic; 173 | font-weight: 700; 174 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOjCnqEu92Fr1Mu51TzBic3CsTYl4BOQ3o.woff2) format('woff2'); 175 | unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 176 | } 177 | /* cyrillic */ 178 | @font-face { 179 | font-family: 'Roboto'; 180 | font-style: italic; 181 | font-weight: 700; 182 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOjCnqEu92Fr1Mu51TzBic-CsTYl4BOQ3o.woff2) format('woff2'); 183 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 184 | } 185 | /* greek-ext */ 186 | @font-face { 187 | font-family: 'Roboto'; 188 | font-style: italic; 189 | font-weight: 700; 190 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOjCnqEu92Fr1Mu51TzBic2CsTYl4BOQ3o.woff2) format('woff2'); 191 | unicode-range: U+1F00-1FFF; 192 | } 193 | /* greek */ 194 | @font-face { 195 | font-family: 'Roboto'; 196 | font-style: italic; 197 | font-weight: 700; 198 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOjCnqEu92Fr1Mu51TzBic5CsTYl4BOQ3o.woff2) format('woff2'); 199 | unicode-range: U+0370-03FF; 200 | } 201 | /* vietnamese */ 202 | @font-face { 203 | font-family: 'Roboto'; 204 | font-style: italic; 205 | font-weight: 700; 206 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOjCnqEu92Fr1Mu51TzBic1CsTYl4BOQ3o.woff2) format('woff2'); 207 | unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; 208 | } 209 | /* latin-ext */ 210 | @font-face { 211 | font-family: 'Roboto'; 212 | font-style: italic; 213 | font-weight: 700; 214 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOjCnqEu92Fr1Mu51TzBic0CsTYl4BOQ3o.woff2) format('woff2'); 215 | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; 216 | } 217 | /* latin */ 218 | @font-face { 219 | font-family: 'Roboto'; 220 | font-style: italic; 221 | font-weight: 700; 222 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOjCnqEu92Fr1Mu51TzBic6CsTYl4BO.woff2) format('woff2'); 223 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 224 | } 225 | -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/css(1): -------------------------------------------------------------------------------- 1 | /* cyrillic-ext */ 2 | @font-face { 3 | font-family: 'Roboto Mono'; 4 | font-style: normal; 5 | font-weight: 400; 6 | src: url(https://fonts.gstatic.com/s/robotomono/v13/L0xuDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vq_SeW-AJi8SJQtQ4Y.woff) format('woff'); 7 | unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 8 | } 9 | /* cyrillic */ 10 | @font-face { 11 | font-family: 'Roboto Mono'; 12 | font-style: normal; 13 | font-weight: 400; 14 | src: url(https://fonts.gstatic.com/s/robotomono/v13/L0xuDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vq_QOW-AJi8SJQtQ4Y.woff) format('woff'); 15 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 16 | } 17 | /* greek */ 18 | @font-face { 19 | font-family: 'Roboto Mono'; 20 | font-style: normal; 21 | font-weight: 400; 22 | src: url(https://fonts.gstatic.com/s/robotomono/v13/L0xuDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vq_R-W-AJi8SJQtQ4Y.woff) format('woff'); 23 | unicode-range: U+0370-03FF; 24 | } 25 | /* vietnamese */ 26 | @font-face { 27 | font-family: 'Roboto Mono'; 28 | font-style: normal; 29 | font-weight: 400; 30 | src: url(https://fonts.gstatic.com/s/robotomono/v13/L0xuDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vq_S-W-AJi8SJQtQ4Y.woff) format('woff'); 31 | unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; 32 | } 33 | /* latin-ext */ 34 | @font-face { 35 | font-family: 'Roboto Mono'; 36 | font-style: normal; 37 | font-weight: 400; 38 | src: url(https://fonts.gstatic.com/s/robotomono/v13/L0xuDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vq_SuW-AJi8SJQtQ4Y.woff) format('woff'); 39 | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; 40 | } 41 | /* latin */ 42 | @font-face { 43 | font-family: 'Roboto Mono'; 44 | font-style: normal; 45 | font-weight: 400; 46 | src: url(https://fonts.gstatic.com/s/robotomono/v13/L0xuDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vq_ROW-AJi8SJQt.woff) format('woff'); 47 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 48 | } 49 | -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/css2: -------------------------------------------------------------------------------- 1 | /* 2 | * See: https://fonts.google.com/license/googlerestricted 3 | */ 4 | /* cyrillic-ext */ 5 | @font-face { 6 | font-family: 'Roboto'; 7 | font-style: normal; 8 | font-weight: 300; 9 | font-display: swap; 10 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOlCnqEu92Fr1MmSU5fCRc4AMP6lbBP.woff2) format('woff2'); 11 | unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 12 | } 13 | /* cyrillic */ 14 | @font-face { 15 | font-family: 'Roboto'; 16 | font-style: normal; 17 | font-weight: 300; 18 | font-display: swap; 19 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOlCnqEu92Fr1MmSU5fABc4AMP6lbBP.woff2) format('woff2'); 20 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 21 | } 22 | /* greek-ext */ 23 | @font-face { 24 | font-family: 'Roboto'; 25 | font-style: normal; 26 | font-weight: 300; 27 | font-display: swap; 28 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOlCnqEu92Fr1MmSU5fCBc4AMP6lbBP.woff2) format('woff2'); 29 | unicode-range: U+1F00-1FFF; 30 | } 31 | /* greek */ 32 | @font-face { 33 | font-family: 'Roboto'; 34 | font-style: normal; 35 | font-weight: 300; 36 | font-display: swap; 37 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOlCnqEu92Fr1MmSU5fBxc4AMP6lbBP.woff2) format('woff2'); 38 | unicode-range: U+0370-03FF; 39 | } 40 | /* vietnamese */ 41 | @font-face { 42 | font-family: 'Roboto'; 43 | font-style: normal; 44 | font-weight: 300; 45 | font-display: swap; 46 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOlCnqEu92Fr1MmSU5fCxc4AMP6lbBP.woff2) format('woff2'); 47 | unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; 48 | } 49 | /* latin-ext */ 50 | @font-face { 51 | font-family: 'Roboto'; 52 | font-style: normal; 53 | font-weight: 300; 54 | font-display: swap; 55 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOlCnqEu92Fr1MmSU5fChc4AMP6lbBP.woff2) format('woff2'); 56 | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; 57 | } 58 | /* latin */ 59 | @font-face { 60 | font-family: 'Roboto'; 61 | font-style: normal; 62 | font-weight: 300; 63 | font-display: swap; 64 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOlCnqEu92Fr1MmSU5fBBc4AMP6lQ.woff2) format('woff2'); 65 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 66 | } 67 | /* cyrillic-ext */ 68 | @font-face { 69 | font-family: 'Roboto'; 70 | font-style: normal; 71 | font-weight: 400; 72 | font-display: swap; 73 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu72xKKTU1Kvnz.woff2) format('woff2'); 74 | unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 75 | } 76 | /* cyrillic */ 77 | @font-face { 78 | font-family: 'Roboto'; 79 | font-style: normal; 80 | font-weight: 400; 81 | font-display: swap; 82 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu5mxKKTU1Kvnz.woff2) format('woff2'); 83 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 84 | } 85 | /* greek-ext */ 86 | @font-face { 87 | font-family: 'Roboto'; 88 | font-style: normal; 89 | font-weight: 400; 90 | font-display: swap; 91 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu7mxKKTU1Kvnz.woff2) format('woff2'); 92 | unicode-range: U+1F00-1FFF; 93 | } 94 | /* greek */ 95 | @font-face { 96 | font-family: 'Roboto'; 97 | font-style: normal; 98 | font-weight: 400; 99 | font-display: swap; 100 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu4WxKKTU1Kvnz.woff2) format('woff2'); 101 | unicode-range: U+0370-03FF; 102 | } 103 | /* vietnamese */ 104 | @font-face { 105 | font-family: 'Roboto'; 106 | font-style: normal; 107 | font-weight: 400; 108 | font-display: swap; 109 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu7WxKKTU1Kvnz.woff2) format('woff2'); 110 | unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; 111 | } 112 | /* latin-ext */ 113 | @font-face { 114 | font-family: 'Roboto'; 115 | font-style: normal; 116 | font-weight: 400; 117 | font-display: swap; 118 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu7GxKKTU1Kvnz.woff2) format('woff2'); 119 | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; 120 | } 121 | /* latin */ 122 | @font-face { 123 | font-family: 'Roboto'; 124 | font-style: normal; 125 | font-weight: 400; 126 | font-display: swap; 127 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOmCnqEu92Fr1Mu4mxKKTU1Kg.woff2) format('woff2'); 128 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 129 | } 130 | /* cyrillic-ext */ 131 | @font-face { 132 | font-family: 'Roboto'; 133 | font-style: normal; 134 | font-weight: 500; 135 | font-display: swap; 136 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOlCnqEu92Fr1MmEU9fCRc4AMP6lbBP.woff2) format('woff2'); 137 | unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 138 | } 139 | /* cyrillic */ 140 | @font-face { 141 | font-family: 'Roboto'; 142 | font-style: normal; 143 | font-weight: 500; 144 | font-display: swap; 145 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOlCnqEu92Fr1MmEU9fABc4AMP6lbBP.woff2) format('woff2'); 146 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 147 | } 148 | /* greek-ext */ 149 | @font-face { 150 | font-family: 'Roboto'; 151 | font-style: normal; 152 | font-weight: 500; 153 | font-display: swap; 154 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOlCnqEu92Fr1MmEU9fCBc4AMP6lbBP.woff2) format('woff2'); 155 | unicode-range: U+1F00-1FFF; 156 | } 157 | /* greek */ 158 | @font-face { 159 | font-family: 'Roboto'; 160 | font-style: normal; 161 | font-weight: 500; 162 | font-display: swap; 163 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOlCnqEu92Fr1MmEU9fBxc4AMP6lbBP.woff2) format('woff2'); 164 | unicode-range: U+0370-03FF; 165 | } 166 | /* vietnamese */ 167 | @font-face { 168 | font-family: 'Roboto'; 169 | font-style: normal; 170 | font-weight: 500; 171 | font-display: swap; 172 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOlCnqEu92Fr1MmEU9fCxc4AMP6lbBP.woff2) format('woff2'); 173 | unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; 174 | } 175 | /* latin-ext */ 176 | @font-face { 177 | font-family: 'Roboto'; 178 | font-style: normal; 179 | font-weight: 500; 180 | font-display: swap; 181 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOlCnqEu92Fr1MmEU9fChc4AMP6lbBP.woff2) format('woff2'); 182 | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; 183 | } 184 | /* latin */ 185 | @font-face { 186 | font-family: 'Roboto'; 187 | font-style: normal; 188 | font-weight: 500; 189 | font-display: swap; 190 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOlCnqEu92Fr1MmEU9fBBc4AMP6lQ.woff2) format('woff2'); 191 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 192 | } 193 | /* cyrillic-ext */ 194 | @font-face { 195 | font-family: 'Roboto'; 196 | font-style: normal; 197 | font-weight: 700; 198 | font-display: swap; 199 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOlCnqEu92Fr1MmWUlfCRc4AMP6lbBP.woff2) format('woff2'); 200 | unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 201 | } 202 | /* cyrillic */ 203 | @font-face { 204 | font-family: 'Roboto'; 205 | font-style: normal; 206 | font-weight: 700; 207 | font-display: swap; 208 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOlCnqEu92Fr1MmWUlfABc4AMP6lbBP.woff2) format('woff2'); 209 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 210 | } 211 | /* greek-ext */ 212 | @font-face { 213 | font-family: 'Roboto'; 214 | font-style: normal; 215 | font-weight: 700; 216 | font-display: swap; 217 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOlCnqEu92Fr1MmWUlfCBc4AMP6lbBP.woff2) format('woff2'); 218 | unicode-range: U+1F00-1FFF; 219 | } 220 | /* greek */ 221 | @font-face { 222 | font-family: 'Roboto'; 223 | font-style: normal; 224 | font-weight: 700; 225 | font-display: swap; 226 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOlCnqEu92Fr1MmWUlfBxc4AMP6lbBP.woff2) format('woff2'); 227 | unicode-range: U+0370-03FF; 228 | } 229 | /* vietnamese */ 230 | @font-face { 231 | font-family: 'Roboto'; 232 | font-style: normal; 233 | font-weight: 700; 234 | font-display: swap; 235 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOlCnqEu92Fr1MmWUlfCxc4AMP6lbBP.woff2) format('woff2'); 236 | unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; 237 | } 238 | /* latin-ext */ 239 | @font-face { 240 | font-family: 'Roboto'; 241 | font-style: normal; 242 | font-weight: 700; 243 | font-display: swap; 244 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOlCnqEu92Fr1MmWUlfChc4AMP6lbBP.woff2) format('woff2'); 245 | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; 246 | } 247 | /* latin */ 248 | @font-face { 249 | font-family: 'Roboto'; 250 | font-style: normal; 251 | font-weight: 700; 252 | font-display: swap; 253 | src: url(https://fonts.gstatic.com/s/roboto/v29/KFOlCnqEu92Fr1MmWUlfBBc4AMP6lQ.woff2) format('woff2'); 254 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 255 | } 256 | /* cyrillic-ext */ 257 | @font-face { 258 | font-family: 'YouTube Sans'; 259 | font-style: normal; 260 | font-weight: 300 900; 261 | font-display: swap; 262 | src: url(https://fonts.gstatic.com/s/youtubesans/v8/Qw38ZQNGEDjaO2m6tqIqX5E-AVS5_rSejo46_PCTRspJ0OosolrBEJL3HO_e7fHoCVHxtvY.woff2) format('woff2'); 263 | unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 264 | } 265 | /* cyrillic */ 266 | @font-face { 267 | font-family: 'YouTube Sans'; 268 | font-style: normal; 269 | font-weight: 300 900; 270 | font-display: swap; 271 | src: url(https://fonts.gstatic.com/s/youtubesans/v8/Qw38ZQNGEDjaO2m6tqIqX5E-AVS5_rSejo46_PCTRspJ0OosolrBEJL3HO_X7fHoCVHxtvY.woff2) format('woff2'); 272 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 273 | } 274 | /* vietnamese */ 275 | @font-face { 276 | font-family: 'YouTube Sans'; 277 | font-style: normal; 278 | font-weight: 300 900; 279 | font-display: swap; 280 | src: url(https://fonts.gstatic.com/s/youtubesans/v8/Qw38ZQNGEDjaO2m6tqIqX5E-AVS5_rSejo46_PCTRspJ0OosolrBEJL3HO_c7fHoCVHxtvY.woff2) format('woff2'); 281 | unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; 282 | } 283 | /* latin-ext */ 284 | @font-face { 285 | font-family: 'YouTube Sans'; 286 | font-style: normal; 287 | font-weight: 300 900; 288 | font-display: swap; 289 | src: url(https://fonts.gstatic.com/s/youtubesans/v8/Qw38ZQNGEDjaO2m6tqIqX5E-AVS5_rSejo46_PCTRspJ0OosolrBEJL3HO_d7fHoCVHxtvY.woff2) format('woff2'); 290 | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; 291 | } 292 | /* latin */ 293 | @font-face { 294 | font-family: 'YouTube Sans'; 295 | font-style: normal; 296 | font-weight: 300 900; 297 | font-display: swap; 298 | src: url(https://fonts.gstatic.com/s/youtubesans/v8/Qw38ZQNGEDjaO2m6tqIqX5E-AVS5_rSejo46_PCTRspJ0OosolrBEJL3HO_T7fHoCVHx.woff2) format('woff2'); 299 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 300 | } 301 | -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/custom-elements-es5-adapter.js: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Copyright The Closure Library Authors. 4 | SPDX-License-Identifier: Apache-2.0 5 | */ 6 | 'use strict';/* 7 | 8 | Copyright (c) 2016 The Polymer Project Authors. All rights reserved. 9 | This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt 10 | The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt 11 | The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt 12 | Code distributed by Google as part of the polymer project is also 13 | subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt 14 | */ 15 | (()=>{if(window.customElements){var h=window.HTMLElement,m=window.customElements.define,n=window.customElements.get,k=new Map,l=new Map,e=!1,f=!1;window.HTMLElement=function(){if(!e){var a=k.get(this.constructor);a=n.call(window.customElements,a);f=!0;return new a}e=!1};window.HTMLElement.prototype=h.prototype;window.HTMLElement.es5Shimmed=!0;Object.defineProperty(window,"customElements",{value:window.customElements,configurable:!0,writable:!0});Object.defineProperty(window.customElements,"define", 16 | {value:(a,b)=>{const c=b.prototype,g=class extends h{constructor(){super();Object.setPrototypeOf(this,c);f||(e=!0,b.call(this));f=!1}},d=g.prototype;g.observedAttributes=b.observedAttributes;d.connectedCallback=c.connectedCallback;d.disconnectedCallback=c.disconnectedCallback;d.attributeChangedCallback=c.attributeChangedCallback;d.adoptedCallback=c.adoptedCallback;k.set(b,a);l.set(a,b);m.call(window.customElements,a,g)},configurable:!0,writable:!0});Object.defineProperty(window.customElements,"get", 17 | {value:a=>l.get(a),configurable:!0,writable:!0});if(navigator.userAgent.match(/Version\/(10\..*|11\.0\..*)Safari/)){const a=HTMLElement.prototype.constructor;Object.defineProperty(HTMLElement.prototype,"constructor",{configurable:!0,get(){return a},set(b){Object.defineProperty(this,"constructor",{value:b,configurable:!0,writable:!0})}})}}})(); 18 | //# sourceMappingURL=blaze-out/k8-opt/bin/third_party/javascript/custom_elements/fast-shim.js.sourcemap 19 | -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/ed7ea9be9d5d6ec28d3e1038aa31e35771529feb8ecc54788fe1bab62e354916_2560x520.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/YouTube_files/ed7ea9be9d5d6ec28d3e1038aa31e35771529feb8ecc54788fe1bab62e354916_2560x520.jpeg -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/hq720(1).jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/YouTube_files/hq720(1).jpg -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/hq720(2).jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/YouTube_files/hq720(2).jpg -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/hq720(3).jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/YouTube_files/hq720(3).jpg -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/hq720(4).jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/YouTube_files/hq720(4).jpg -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/hq720(5).jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/YouTube_files/hq720(5).jpg -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/hq720(6).jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/YouTube_files/hq720(6).jpg -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/hq720(7).jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/YouTube_files/hq720(7).jpg -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/hq720.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/YouTube_files/hq720.jpg -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/hq720_live.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/YouTube_files/hq720_live.jpg -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/hqdefault(1).jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/YouTube_files/hqdefault(1).jpg -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/hqdefault(2).jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/YouTube_files/hqdefault(2).jpg -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/hqdefault.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/YouTube_files/hqdefault.jpg -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/intersection-observer.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Copyright 2016 Google Inc. All Rights Reserved. 4 | 5 | Licensed under the W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE. 6 | 7 | https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document 8 | 9 | */ 10 | (function(f,h){function t(a){this.time=a.time;this.target=a.target;this.rootBounds=a.rootBounds;this.boundingClientRect=a.boundingClientRect;this.intersectionRect=a.intersectionRect||q();this.isIntersecting=!!a.intersectionRect;a=this.boundingClientRect;a=a.width*a.height;var b=this.intersectionRect;b=b.width*b.height;this.intersectionRatio=a?b/a:this.isIntersecting?1:0}function d(a,b){b=b||{};if("function"!=typeof a)throw Error("callback must be a function");if(b.root&&1!=b.root.nodeType)throw Error("root must be an Element"); 11 | this.g=y(this.g.bind(this),this.B);this.D=a;this.h=[];this.i=[];this.s=this.L(b.rootMargin);this.thresholds=this.J(b.threshold);this.root=b.root||null;this.rootMargin=this.s.map(function(c){return c.value+c.unit}).join(" ")}function y(a,b){var c=null;return function(){c||(c=setTimeout(function(){a();c=null},b))}}function u(a,b,c,e){"function"==typeof a.addEventListener?a.addEventListener(b,c,e||!1):"function"==typeof a.attachEvent&&a.attachEvent("on"+b,c)}function v(a,b,c,e){"function"==typeof a.removeEventListener? 12 | a.removeEventListener(b,c,e||!1):"function"==typeof a.P&&a.P("on"+b,c)}function m(a){try{var b=a.getBoundingClientRect()}catch(c){}if(!b)return q();b.width&&b.height||(b={top:b.top,right:b.right,bottom:b.bottom,left:b.left,width:b.right-b.left,height:b.bottom-b.top});return b}function q(){return{top:0,bottom:0,left:0,right:0,width:0,height:0}}function w(a,b){for(;b;){if(b==a)return!0;b=r(b)}return!1}function r(a){return(a=a.parentNode)&&11==a.nodeType&&a.host?a.host:a}if("IntersectionObserver"in f&& 13 | "IntersectionObserverEntry"in f&&"intersectionRatio"in f.IntersectionObserverEntry.prototype)"isIntersecting"in f.IntersectionObserverEntry.prototype||Object.defineProperty(f.IntersectionObserverEntry.prototype,"isIntersecting",{get:function(){return 0b||1n.indexOf(this)&&n.push(this)};d.prototype.v=function(){var a=n.indexOf(this);-1!=a&&n.splice(a,1)};f.IntersectionObserver=d;f.IntersectionObserverEntry=t}})(window,document); 21 | -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/miniplayer.js: -------------------------------------------------------------------------------- 1 | (function(g){var window=this;'use strict';var F6=function(a){g.V.call(this,{D:"div",K:"ytp-miniplayer-ui"});this.oe=!1;this.player=a;this.S(a,"minimized",this.dg);this.S(a,"onStateChange",this.NH)},G6=function(a){g.mN.call(this,a); 2 | this.i=new F6(this.player);this.i.hide();g.ZM(this.player,this.i.element,4);a.Te()&&(this.load(),g.N(a.getRootNode(),"ytp-player-minimized",!0))}; 3 | g.v(F6,g.V);g.k=F6.prototype; 4 | g.k.DF=function(){this.tooltip=new g.eR(this.player,this);g.H(this,this.tooltip);g.ZM(this.player,this.tooltip.element,4);this.tooltip.scale=.6;this.yc=new g.hO(this.player);g.H(this,this.yc);this.Ig=new g.V({D:"div",K:"ytp-miniplayer-scrim"});g.H(this,this.Ig);this.Ig.Aa(this.element);this.S(this.Ig.element,"click",this.jB);var a=new g.V({D:"button",Fa:["ytp-miniplayer-close-button","ytp-button"],V:{"aria-label":"Close"},U:[g.oK()]});g.H(this,a);a.Aa(this.Ig.element);this.S(a.element,"click",this.Ri); 5 | a=new g.T1(this.player,this);g.H(this,a);a.Aa(this.Ig.element);this.bq=new g.V({D:"div",K:"ytp-miniplayer-controls"});g.H(this,this.bq);this.bq.Aa(this.Ig.element);this.S(this.bq.element,"click",this.jB);var b=new g.V({D:"div",K:"ytp-miniplayer-button-container"});g.H(this,b);b.Aa(this.bq.element);a=new g.V({D:"div",K:"ytp-miniplayer-play-button-container"});g.H(this,a);a.Aa(this.bq.element);var c=new g.V({D:"div",K:"ytp-miniplayer-button-container"});g.H(this,c);c.Aa(this.bq.element);this.BO=new g.GP(this.player, 6 | this,!1);g.H(this,this.BO);this.BO.Aa(b.element);b=new g.EP(this.player,this);g.H(this,b);b.Aa(a.element);this.nextButton=new g.GP(this.player,this,!0);g.H(this,this.nextButton);this.nextButton.Aa(c.element);this.Lg=new g.RQ(this.player,this);g.H(this,this.Lg);this.Lg.Aa(this.Ig.element);this.Jc=new g.PP(this.player,this);g.H(this,this.Jc);g.ZM(this.player,this.Jc.element,4);this.YA=new g.V({D:"div",K:"ytp-miniplayer-buttons"});g.H(this,this.YA);g.ZM(this.player,this.YA.element,4);a=new g.V({D:"button", 7 | Fa:["ytp-miniplayer-close-button","ytp-button"],V:{"aria-label":"Close"},U:[g.oK()]});g.H(this,a);a.Aa(this.YA.element);this.S(a.element,"click",this.Ri);a=new g.V({D:"button",Fa:["ytp-miniplayer-replay-button","ytp-button"],V:{"aria-label":"Close"},U:[g.uK()]});g.H(this,a);a.Aa(this.YA.element);this.S(a.element,"click",this.gX);this.S(this.player,"presentingplayerstatechange",this.Rc);this.S(this.player,"appresize",this.xb);this.S(this.player,"fullscreentoggled",this.xb);this.xb()}; 8 | g.k.show=function(){this.Rd=new g.eq(this.Mq,null,this);this.Rd.start();this.oe||(this.DF(),this.oe=!0);0!==this.player.getPlayerState()&&g.V.prototype.show.call(this);this.Jc.show();this.player.unloadModule("annotations_module")}; 9 | g.k.hide=function(){this.Rd&&(this.Rd.dispose(),this.Rd=void 0);g.V.prototype.hide.call(this);this.player.Te()||(this.oe&&this.Jc.hide(),this.player.loadModule("annotations_module"))}; 10 | g.k.ra=function(){this.Rd&&(this.Rd.dispose(),this.Rd=void 0);g.V.prototype.ra.call(this)}; 11 | g.k.Ri=function(){this.player.stopVideo();this.player.Ma("onCloseMiniplayer")}; 12 | g.k.gX=function(){this.player.playVideo()}; 13 | g.k.jB=function(a){if(a.target===this.Ig.element||a.target===this.bq.element)this.player.T().L("kevlar_miniplayer_play_pause_on_scrim")?g.cJ(this.player.yb())?this.player.pauseVideo():this.player.playVideo():this.player.Ma("onExpandMiniplayer")}; 14 | g.k.dg=function(){g.N(this.player.getRootNode(),"ytp-player-minimized",this.player.Te())}; 15 | g.k.Bd=function(){this.Jc.Rb();this.Lg.Rb()}; 16 | g.k.Mq=function(){this.Bd();this.Rd&&this.Rd.start()}; 17 | g.k.Rc=function(a){g.U(a.state,32)&&this.tooltip.hide()}; 18 | g.k.xb=function(){g.cQ(this.Jc,0,this.player.eb().getPlayerSize().width,!1);g.QP(this.Jc)}; 19 | g.k.NH=function(a){this.player.Te()&&(0===a?this.hide():this.show())}; 20 | g.k.jc=function(){return this.tooltip}; 21 | g.k.Ze=function(){return!1}; 22 | g.k.Bf=function(){return!1}; 23 | g.k.Ji=function(){return!1}; 24 | g.k.Yx=function(){}; 25 | g.k.Mn=function(){}; 26 | g.k.Os=function(){}; 27 | g.k.oo=function(){return null}; 28 | g.k.Ew=function(){return null}; 29 | g.k.Fj=function(){return new g.Tm(0,0,0,0)}; 30 | g.k.handleGlobalKeyDown=function(){return!1}; 31 | g.k.handleGlobalKeyUp=function(){return!1}; 32 | g.k.Tq=function(a,b,c,d,e){var f=0,h=d=0,l=g.jn(a);if(b){c=g.mq(b,"ytp-prev-button")||g.mq(b,"ytp-next-button");var m=g.mq(b,"ytp-play-button"),n=g.mq(b,"ytp-miniplayer-expand-watch-page-button");c?f=h=12:m?(b=g.gn(b,this.element),h=b.x,f=b.y-12):n&&(h=g.mq(b,"ytp-miniplayer-button-top-left"),f=g.gn(b,this.element),b=g.jn(b),h?(h=8,f=f.y+40):(h=f.x-l.width+b.width,f=f.y-20))}else h=c-l.width/2,d=25+(e||0);b=this.player.eb().getPlayerSize().width;e=f+(e||0);l=g.ch(h,0,b-l.width);e?(a.style.top=e+"px", 33 | a.style.bottom=""):(a.style.top="",a.style.bottom=d+"px");a.style.left=l+"px"}; 34 | g.k.showControls=function(){}; 35 | g.k.Fl=function(){}; 36 | g.k.Vk=function(){return!1};g.v(G6,g.mN);G6.prototype.create=function(){}; 37 | G6.prototype.Wh=function(){return!1}; 38 | G6.prototype.load=function(){this.player.hideControls();this.i.show()}; 39 | G6.prototype.unload=function(){this.player.showControls();this.i.hide()};g.lN("miniplayer",G6);})(_yt_player); 40 | -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/network.js: -------------------------------------------------------------------------------- 1 | (function(){/* 2 | 3 | SPF 4 | (c) 2012-2017 Google Inc. 5 | https://ajax.googleapis.com/ajax/libs/spf/2.4.0/LICENSE 6 | */ 7 | var l="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(a==Array.prototype||a==Object.prototype)return a;a[b]=c.value;return a};function aa(a){a=["object"==typeof globalThis&&globalThis,a,"object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof n&&n];for(var b=0;b>>0)+"_",e=0;return b}); 10 | r("Symbol.iterator",function(a){if(a)return a;a=Symbol("Symbol.iterator");for(var b="Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array".split(" "),c=0;c=b))for(var c=0;cd&&(f=a.substring(d),c&&H(f,"\r\n")&&(f=f.substring(0,f.length-2)));b=V(b);return{m:b,g:f}}a=JSON.parse(a);b=V(y(a));return{m:b,g:""}} 19 | function V(a){var b=y(a);w(b,function(c){if(c){c.head&&(c.head=W(c.head));if(c.body)for(var d in c.body)c.body[d]=W(c.body[d]);c.foot&&(c.foot=W(c.foot))}});return a} 20 | function W(a){var b=new la;if(!a)return b;if("[object String]"!=Object.prototype.toString.call(a))return a.scripts&&w(a.scripts,function(c){b.scripts.push({url:c.url||"",text:c.text||"",name:c.name||"",async:c.async||!1})}),a.styles&&w(a.styles,function(c){b.styles.push({url:c.url||"",text:c.text||"",name:c.name||""})}),a.links&&w(a.links,function(c){"spf-preconnect"==c.rel&&b.links.push({url:c.url||"",rel:c.rel||""})}),b.html=a.html||"",b;a=a.replace(ma,function(c,d,e,f){if("script"==d){d=(d=e.match(X))? 21 | d[1]:"";var h=e.match(na);h=h?h[1]:"";var k=oa.test(e);e=pa.exec(e);return(e=!e||-1!=e[1].indexOf("/javascript")||-1!=e[1].indexOf("/x-javascript")||-1!=e[1].indexOf("/ecmascript"))?(b.scripts.push({url:h,text:f,name:d,async:k}),""):c}return"style"==d&&(d=(d=e.match(X))?d[1]:"",e=pa.exec(e),e=!e||-1!=e[1].indexOf("text/css"))?(b.styles.push({url:"",text:f,name:d}),""):c});a=a.replace(qa,function(c,d){var e=d.match(ra);e=e?e[1]:"";return"stylesheet"==e?(e=(e=d.match(X))?e[1]:"",d=(d=d.match(sa))?d[1]: 22 | "",b.styles.push({url:d,text:"",name:e}),""):"spf-preconnect"==e?(d=(d=d.match(sa))?d[1]:"",b.links.push({url:d,rel:e}),""):c});b.html=a;return b}function la(){this.html="";this.scripts=[];this.styles=[];this.links=[]}(function(){var a=document.createElement("div");return"transition"in a.style?!0:x(["webkit","Moz","Ms","O","Khtml"],function(b){return b+"Transition"in a.style})})(); 23 | var qa=/\x3clink([\s\S]*?)\x3e/ig,ma=/\x3c(script|style)([\s\S]*?)\x3e([\s\S]*?)\x3c\/\1\x3e/ig,oa=/(?:\s|^)async(?:\s|=|$)/i,sa=/(?:\s|^)href\s*=\s*["']?([^\s"']+)/i,X=/(?:\s|^)name\s*=\s*["']?([^\s"']+)/i,ra=/(?:\s|^)rel\s*=\s*["']?([^\s"']+)/i,na=/(?:\s|^)src\s*=\s*["']?([^\s"']+)/i,pa=/(?:\s|^)type\s*=\s*["']([^"']+)["']/i;/* 24 | 25 | SPF 26 | (c) 2012-2017 Google Inc. 27 | https://ajax.googleapis.com/ajax/libs/spf/2.4.0/LICENSE 28 | */ 29 | function ta(a,b,c,d){var e=d||{},f=!1,h=0,k,g=new XMLHttpRequest;g.open(a,b,!0);g.timing={};var m=g.abort;g.abort=function(){clearTimeout(k);g.onreadystatechange=null;m.call(g)};g.onreadystatechange=function(){var q=g.timing;if(2==g.readyState){q.responseStart=q.responseStart||v();if("json"==g.responseType)f=!1;else if(C["assume-all-json-requests-chunked"]||-1<(g.getResponseHeader("Transfer-Encoding")||"").toLowerCase().indexOf("chunked"))f=!0;else{q=g.getResponseHeader("X-Firefox-Spdy");var B=window.chrome&& 30 | chrome.loadTimes&&chrome.loadTimes();B=B&&B.wasFetchedViaSpdy;f=!(!q&&!B)}e.u&&e.u(g)}else 3==g.readyState?f&&e.l&&(q=g.responseText.substring(h),h=g.responseText.length,e.l(g,q)):4==g.readyState&&(q.responseEnd=q.responseEnd||v(),window.performance&&window.performance.getEntriesByName&&(g.resourceTiming=window.performance.getEntriesByName(b).pop()),f&&e.l&&g.responseText.length>h&&(q=g.responseText.substring(h),h=g.responseText.length,e.l(g,q)),clearTimeout(k),e.s&&e.s(g))};"responseType"in g&&"json"== 31 | e.responseType&&(g.responseType="json");e.withCredentials&&(g.withCredentials=e.withCredentials);d="FormData"in window&&c instanceof FormData;a="POST"==a&&!d;if(e.headers)for(var t in e.headers)g.setRequestHeader(t,e.headers[t]),"content-type"==t.toLowerCase()&&(a=!1);a&&g.setRequestHeader("Content-Type","application/x-www-form-urlencoded");0=c.startTime))for(var k in e.resourceTiming)h=e.resourceTiming[k],void 0!==h&&(H(k,"Start")||H(k,"End")||"startTime"==k)&&(c[k]=f+Math.round(h));"load"!=b.type&&(c.navigationStart=c.startTime);d.h.length&& 34 | (d.g=I(d.g),d.g&&xa(a,b,c,d,e,"",!0));if("json"==e.responseType){if(!e.response){b.i&&b.i(a,Error("JSON response parsing failed"),e);return}var g=V(y(e.response))}else try{g=ka(e.responseText).m}catch(t){b.i&&b.i(a,t,e);return}if(b.j&&1=h||0>=k||(k=E(),f={data:f,life:h,time:v(),count:0},G(f),k[e]=f,setTimeout(fa,1E3))}d.timing=c;b.v&&b.v(a,d)} 36 | function za(a,b,c,d,e){a=S(a);var f;C["cache-unified"]?f=a:"navigate-back"==d||"navigate-forward"==d?f="history "+a:"navigate"==d?f=(e?"history ":"prefetch ")+a:"prefetch"==d&&(f=e?"prefetch "+a:"");b&&"url"==c?f+=" previous "+b:b&&"path"==c&&(f+=" previous "+R(b).pathname);return f||""} 37 | function Aa(a,b){var c=[];b&&(c.push(a+" previous "+b),c.push(a+" previous "+R(b).pathname));c.push(a);var d=null;x(c,function(e){a:{var f=E();if(e in f){f=f[e];if(F(f)){G(f);f=f.data;break a}D(e)}f=void 0}f&&(d={key:e,response:f.response,type:f.type});return!!f});return d}function Ba(){this.o=!1;this.g="";this.h=[]};function Y(a,b){if(a){var c=Array.prototype.slice.call(arguments);c[0]=a;c=ea.apply(null,c)}return!1!==c};function Ca(a,b,c,d){Y((a||{}).onError,{url:b,err:c,xhr:d})}function Da(a,b,c){Y((a||{}).onPartProcess,{url:b,part:c})&&Y((a||{}).onPartDone,{url:b,part:c})}function Ea(a,b,c){var d;(d="multipart"==c.type)||(d=Y((a||{}).onProcess,{url:b,response:c}));d&&Y((a||{}).onDone,{url:b,response:c})} 38 | var Fa={request:function(a,b){b=b||{};b={method:b.method,headers:b.experimental_headers,j:u(Da,null,b),i:u(Ca,null,b),v:u(Ea,null,b),D:b.postData,type:"",current:window.location.href,B:window.location.href};b.method=((b.method||"GET")+"").toUpperCase();b.type=b.type||"request";var c=a,d=C["url-identifier"]||"";if(d){d=d.replace("__type__",b.type||"");var e=J(c,"#"),f=J(e[0],"?");c=f[0];var h=f[1];f=f[2];var k=e[1];e=e[2];if(0==d.lastIndexOf("?",0))h&&(d=d.replace("?","&")),f+=d;else{if(0==d.lastIndexOf(".", 39 | 0))if(H(c,"/"))d="index"+d;else{var g=c.lastIndexOf(".");-1 3 | -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/scheduler.js: -------------------------------------------------------------------------------- 1 | (function(){/* 2 | 3 | Copyright The Closure Library Authors. 4 | SPDX-License-Identifier: Apache-2.0 5 | */ 6 | 'use strict';var h,l="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(a==Array.prototype||a==Object.prototype)return a;a[b]=c.value;return a}; 7 | function aa(a){a=["object"==typeof globalThis&&globalThis,a,"object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof global&&global];for(var b=0;b>>0)+"_",e=0;return b}); 13 | var da="function"==typeof Object.create?Object.create:function(a){function b(){} 14 | b.prototype=a;return new b},m; 15 | if("function"==typeof Object.setPrototypeOf)m=Object.setPrototypeOf;else{var n;a:{var ea={a:!0},p={};try{p.__proto__=ea;n=p.a;break a}catch(a){}n=!1}m=n?function(a,b){a.__proto__=b;if(a.__proto__!==b)throw new TypeError(a+" is not extensible");return a}:null}var fa=m; 16 | function q(a,b){a.prototype=da(b.prototype);a.prototype.constructor=a;if(fa)fa(a,b);else for(var c in b)if("prototype"!=c)if(Object.defineProperties){var d=Object.getOwnPropertyDescriptor(b,c);d&&Object.defineProperty(a,c,d)}else a[c]=b[c];a.V=b.prototype} 17 | var r=this||self;function u(a){a=a.split(".");for(var b=r,c=0;ce;e++){var f=c.concat(d[e].split(""));ja[e]=f;for(var g=0;g>2];t=b[(t&3)<<4|A>>4];A=b[(A&15)<<2|k>>6];k=b[k&63];c[e++]=""+g+t+A+k}g=0;k=d;switch(a.length-f){case 2:g=a[f+1],k=b[(g&15)<<2]||d;case 1:a=a[f],c[e]=""+b[a>>2]+b[(a&3)<<4|g>>4]+k+d}a=c.join("")}}return Array.isArray(a)?qa(a):a} 33 | function sa(a){return ka&&null!=a&&a instanceof Uint8Array?new Uint8Array(a):a} 34 | ;var va;function D(a,b,c){var d=va;va=null;a||(a=d);d=this.constructor.h;a||(a=d?[d]:[]);this.g=(d?0:-1)-(this.constructor.g||0);this.l=void 0;this.j=a;a:{d=this.j.length;a=d-1;if(d&&(d=this.j[a],ma(d))){this.h=a-this.g;this.i=d;break a}void 0!==b&&-1=a.l;b--)if(0c?a.l:c;if(!(Date.now()>=b)){do{a:{d=a;e=c;for(var f=3;f>=e;f--)for(var g=d.g[f];g.length;){var k=g.shift(),t=d.i[k];delete d.i[k];if(t){d=t;break a}}d=null}d&&S(d)}while(d&&Date.now()a)delete b.i[-a];else{var c=W[a];c?(delete b.i[c],delete W[a]):window.clearTimeout(a)}} 77 | function Ua(a){var b=u("ytcsi.tick");b&&b(a)} 78 | function Va(){Ua("jse");Wa()} 79 | function Wa(){window.clearTimeout(X);Z().start()} 80 | function Xa(){var a=Z();U(a);a.F=!0;window.clearTimeout(X);X=window.setTimeout(Va,Oa)} 81 | function Ya(){window.clearTimeout(Y);Y=window.setTimeout(function(){Ua("jset");Za(0)},Oa)} 82 | function Za(a){Ya();var b=Z();b.l=a;b.start()} 83 | function $a(a){Ya();var b=Z();b.l>a&&(b.l=a,b.start())} 84 | function ab(){window.clearTimeout(Y);var a=Z();a.l=0;a.start()} 85 | ;u("yt.scheduler.initialized")||(w("yt.scheduler.instance.dispose",Pa),w("yt.scheduler.instance.addJob",Ra),w("yt.scheduler.instance.addImmediateJob",Sa),w("yt.scheduler.instance.cancelJob",Ta),w("yt.scheduler.instance.cancelAllJobs",Qa),w("yt.scheduler.instance.start",Wa),w("yt.scheduler.instance.pause",Xa),w("yt.scheduler.instance.setPriorityThreshold",Za),w("yt.scheduler.instance.enablePriorityThreshold",$a),w("yt.scheduler.instance.clearPriorityThreshold",ab),w("yt.scheduler.initialized",!0));}).call(this); 86 | -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/unnamed(1).jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/YouTube_files/unnamed(1).jpg -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/unnamed(10).jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/YouTube_files/unnamed(10).jpg -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/unnamed(11).jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/YouTube_files/unnamed(11).jpg -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/unnamed(12).jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/YouTube_files/unnamed(12).jpg -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/unnamed(13).jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/YouTube_files/unnamed(13).jpg -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/unnamed(14).jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/YouTube_files/unnamed(14).jpg -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/unnamed(15).jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/YouTube_files/unnamed(15).jpg -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/unnamed(16).jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/YouTube_files/unnamed(16).jpg -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/unnamed(2).jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/YouTube_files/unnamed(2).jpg -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/unnamed(3).jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/YouTube_files/unnamed(3).jpg -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/unnamed(4).jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/YouTube_files/unnamed(4).jpg -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/unnamed(5).jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/YouTube_files/unnamed(5).jpg -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/unnamed(6).jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/YouTube_files/unnamed(6).jpg -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/unnamed(7).jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/YouTube_files/unnamed(7).jpg -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/unnamed(8).jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/YouTube_files/unnamed(8).jpg -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/unnamed(9).jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/YouTube_files/unnamed(9).jpg -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/unnamed.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/YouTube_files/unnamed.jpg -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/unnamed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/ios/Runner/YouTube_files/unnamed.png -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/www-i18n-constants.js: -------------------------------------------------------------------------------- 1 | (function(){/* 2 | 3 | Copyright The Closure Library Authors. 4 | SPDX-License-Identifier: Apache-2.0 5 | */ 6 | 'use strict';var e=this||self;function f(b,c){b=b.split(".");var a=e;b[0]in a||"undefined"==typeof a.execScript||a.execScript("var "+b[0]);for(var d;b.length&&(d=b.shift());)b.length||void 0===c?a[d]&&a[d]!==Object.prototype[d]?a=a[d]:a=a[d]={}:a[d]=c} 7 | ;var g={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",YEAR_MONTH_SHORT:"MM/y",MONTH_DAY_ABBR:"MMM d",MONTH_DAY_FULL:"MMMM dd",MONTH_DAY_SHORT:"M/d",MONTH_DAY_MEDIUM:"MMMM d",MONTH_DAY_YEAR_MEDIUM:"MMM d, y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, MMM d",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, MMM d, y",DAY_ABBR:"d",MONTH_DAY_TIME_ZONE_SHORT:"MMM d, h:mm a zzzz"},h=g;h=g;var k={ERAS:["BC","AD"],ERANAMES:["Before Christ","Anno Domini"],NARROWMONTHS:"JFMAMJJASOND".split(""),STANDALONENARROWMONTHS:"JFMAMJJASOND".split(""),MONTHS:"January February March April May June July August September October November December".split(" "),STANDALONEMONTHS:"January February March April May June July August September October November December".split(" "),SHORTMONTHS:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),STANDALONESHORTMONTHS:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "), 8 | WEEKDAYS:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),STANDALONEWEEKDAYS:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),SHORTWEEKDAYS:"Sun Mon Tue Wed Thu Fri Sat".split(" "),STANDALONESHORTWEEKDAYS:"Sun Mon Tue Wed Thu Fri Sat".split(" "),NARROWWEEKDAYS:"SMTWTFS".split(""),STANDALONENARROWWEEKDAYS:"SMTWTFS".split(""),SHORTQUARTERS:["Q1","Q2","Q3","Q4"],QUARTERS:["1st quarter","2nd quarter","3rd quarter","4th quarter"],AMPMS:["AM","PM"],DATEFORMATS:["EEEE, MMMM d, y", 9 | "MMMM d, y","MMM d, y","M/d/yy"],TIMEFORMATS:["h:mm:ss a zzzz","h:mm:ss a z","h:mm:ss a","h:mm a"],DATETIMEFORMATS:["{1} 'at' {0}","{1} 'at' {0}","{1}, {0}","{1}, {0}"],FIRSTDAYOFWEEK:6,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:5},l=k;l=k;function m(b,c){if(void 0===c){c=b+"";var a=c.indexOf(".");c=Math.min(-1===a?0:c.length-a-1,3)}return 1==(b|0)&&0==c?"one":"other"} 10 | var n=m;n=m;f("YT_I18N_FORMATTING_GOOG_LOCALE","en");f("YT_I18N_FORMATTING_DATE_TIME_PATTERNS",h);f("YT_I18N_FORMATTING_DATE_TIME_SYMBOLS",l); 11 | f("YT_I18N_FORMATTING_RELATIVE_DATE_TIME_SYMBOLS",{DAY:{LONG:{R:{"-1":"yesterday",0:"today",1:"tomorrow"},P:"one{# day ago}other{# days ago}",F:"one{in # day}other{in # days}"}},HOUR:{LONG:{R:{0:"this hour"},P:"one{# hour ago}other{# hours ago}",F:"one{in # hour}other{in # hours}"},SHORT:{R:{0:"this hour"},P:"one{# hr. ago}other{# hr. ago}",F:"one{in # hr.}other{in # hr.}"}},MINUTE:{LONG:{R:{0:"this minute"},P:"one{# minute ago}other{# minutes ago}",F:"one{in # minute}other{in # minutes}"},SHORT:{R:{0:"this minute"}, 12 | P:"one{# min. ago}other{# min. ago}",F:"one{in # min.}other{in # min.}"}},MONTH:{LONG:{R:{"-1":"last month",0:"this month",1:"next month"},P:"one{# month ago}other{# months ago}",F:"one{in # month}other{in # months}"},SHORT:{R:{"-1":"last mo.",0:"this mo.",1:"next mo."},P:"one{# mo. ago}other{# mo. ago}",F:"one{in # mo.}other{in # mo.}"}},QUARTER:{LONG:{R:{"-1":"last quarter",0:"this quarter",1:"next quarter"},P:"one{# quarter ago}other{# quarters ago}",F:"one{in # quarter}other{in # quarters}"}, 13 | SHORT:{R:{"-1":"last qtr.",0:"this qtr.",1:"next qtr."},P:"one{# qtr. ago}other{# qtrs. ago}",F:"one{in # qtr.}other{in # qtrs.}"}},SECOND:{LONG:{R:{0:"now"},P:"one{# second ago}other{# seconds ago}",F:"one{in # second}other{in # seconds}"},SHORT:{R:{0:"now"},P:"one{# sec. ago}other{# sec. ago}",F:"one{in # sec.}other{in # sec.}"}},WEEK:{LONG:{R:{"-1":"last week",0:"this week",1:"next week"},P:"one{# week ago}other{# weeks ago}",F:"one{in # week}other{in # weeks}"},SHORT:{R:{"-1":"last wk.",0:"this wk.", 14 | 1:"next wk."},P:"one{# wk. ago}other{# wk. ago}",F:"one{in # wk.}other{in # wk.}"}},YEAR:{LONG:{R:{"-1":"last year",0:"this year",1:"next year"},P:"one{# year ago}other{# years ago}",F:"one{in # year}other{in # years}"},SHORT:{R:{"-1":"last yr.",0:"this yr.",1:"next yr."},P:"one{# yr. ago}other{# yr. ago}",F:"one{in # yr.}other{in # yr.}"}}});f("YT_I18N_FORMATTING_PLURAL_RULES_SELECT",n);}).call(this); 15 | -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/www-main-desktop-home-page-skeleton-2x.css: -------------------------------------------------------------------------------- 1 | #home-page-skeleton{position:relative;z-index:0;pointer-events:none;min-width:0;opacity:1;margin:56px 0 0;display:-moz-flexbox;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-flex-direction:row;flex-direction:row}#home-page-skeleton.hidden:not(.layered){opacity:0}#guide-skeleton{display:none;background-color:hsl(0,0%,100%);width:240px;-webkit-flex-shrink:0;flex-shrink:0}@media (min-width:792px){#home-page-skeleton #guide-skeleton{display:-moz-flexbox;display:-ms-flexbox;display:-webkit-flex;display:flex}}@media (min-width:792px) and (max-width:1311px){#home-page-skeleton #guide-skeleton{width:72px}}#home-container-skeleton{background-color:hsl(0,0%,98%);overflow:hidden}#home-page-skeleton .text-shell{border-radius:2px}#home-page-skeleton .skeleton-bg-color{background-color:hsl(0,0%,89%)}html[dark] #home-page-skeleton .skeleton-bg-color,html[dark] #guide-skeleton{background-color:hsl(0,0%,16%)}html[dark] #home-container-skeleton{background-color:hsl(0,0%,12%)}#home-container-media{border-bottom:none;margin:24px -16px 0 24px;max-width:2256px;padding-right:24px;display:-moz-flexbox;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-flex-direction:row;flex-direction:row;-moz-justify-content:center;-webkit-justify-content:center;justify-content:center;-ms-flex-wrap:wrap;-webkit-flex-wrap:wrap;flex-wrap:wrap}#home-page-skeleton .rich-grid-media-skeleton{margin:0;flex-basis:320px;min-width:320px;max-width:360px;-webkit-flex-grow:1;flex-grow:1}@media only screen and (min-width:720px) and (max-width:1631px){#home-page-skeleton .rich-grid-media-skeleton.mini-mode{flex-basis:240px;min-width:240px;max-width:320px}}@media only screen and (min-width:1552px) and (max-width:1631px){#home-page-skeleton .rich-grid-media-skeleton.mini-mode{width:calc(25% - 16px);flex-basis:auto;-webkit-flex-grow:0;flex-grow:0}}@media only screen and (min-width:2528px){#home-page-skeleton .rich-grid-media-skeleton{width:calc(16.6% - 16px);flex-basis:auto;-webkit-flex-grow:0;flex-grow:0}}@media only screen and (min-width:392px){#home-page-skeleton .rich-grid-media-skeleton{margin:0 16px 0 0}}#home-page-skeleton .video-details{padding-bottom:40px;display:-moz-flexbox;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column}#home-page-skeleton .rich-thumbnail{position:relative;width:100%}#home-page-skeleton .rich-thumbnail:before{display:block;content:"";width:100%;padding-top:56.25%;background-color:rgba(0,0,0,0.1)}#home-page-skeleton .details{display:flex}#home-page-skeleton .channel-avatar{border-radius:50%;height:36px;margin-top:12px;margin-right:12px;width:36px}#home-page-skeleton .details-text-shell{flex:1 1 auto}#home-page-skeleton .rich-video-title{width:90%;height:20px;margin:10px 0}#home-page-skeleton .rich-video-meta{width:60%;height:20px;margin:10px 0} -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/www-main-desktop-watch-page-skeleton-2x.css: -------------------------------------------------------------------------------- 1 | #watch-page-skeleton{position:relative;z-index:1;margin:0 auto;box-sizing:border-box}#watch-page-skeleton #info-container,#watch-page-skeleton #related{box-sizing:border-box}.watch-skeleton .text-shell{height:20px;border-radius:2px}.watch-skeleton .skeleton-bg-color{background-color:hsl(0,0%,89%)}.watch-skeleton .skeleton-light-border-bottom{border-bottom:1px solid hsl(0,0%,93.3%)}html[dark] .watch-skeleton .skeleton-bg-color{background-color:hsl(0,0%,16%)}html[dark] .watch-skeleton .skeleton-light-border-bottom{border-bottom:1px solid hsla(0,100%,100%,.08)}.watch-skeleton .flex-1{-ms-flex:1;-webkit-flex:1;flex:1;-webkit-flex-basis:.000000001px;flex-basis:.000000001px}.watch-skeleton #primary-info{height:64px;padding:20px 0 8px}.watch-skeleton #primary-info #title{width:400px;margin-bottom:12px}.watch-skeleton #primary-info #info{display:-moz-flexbox;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-flex-direction:row;flex-direction:row;-webkit-align-items:center;align-items:center}.watch-skeleton #primary-info #info #count{width:200px}.watch-skeleton #primary-info #info #menu{display:-moz-flexbox;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-flex-direction:row;flex-direction:row;padding-right:8px}.watch-skeleton #primary-info .menu-button{height:20px;width:20px;border-radius:50%;margin-left:20px}.watch-skeleton #secondary-info{height:151px;margin-bottom:24px;padding:16px 0}.watch-skeleton #secondary-info #top-row,.watch-skeleton #secondary-info #top-row #video-owner{display:-moz-flexbox;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-flex-direction:row;flex-direction:row}.watch-skeleton #secondary-info #top-row #video-owner #channel-icon{height:48px;width:48px;border-radius:50%;margin-right:16px}.watch-skeleton #secondary-info #top-row #video-owner #upload-info{display:-moz-flexbox;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column;-moz-justify-content:center;-webkit-justify-content:center;justify-content:center}.watch-skeleton #secondary-info #top-row #video-owner #upload-info #owner-name{width:200px;margin-bottom:12px}.watch-skeleton #secondary-info #top-row #video-owner #upload-info #published-date{width:200px}.watch-skeleton #secondary-info #top-row #subscribe-button{width:137px;height:36px;border-radius:2px;margin:7px 4px 0 0}#watch-page-skeleton #related{float:right;position:relative;clear:right;max-width:426px;width:calc(100% - 640px)}#watch-page-skeleton.theater #related{width:100%}.watch-skeleton #related .autoplay{margin-bottom:16px}.watch-skeleton #related[playlist] .autoplay{border-bottom:none;margin-bottom:0}.watch-skeleton #related #upnext{height:20px;width:120px;margin-bottom:14px}.watch-skeleton #related[playlist] #upnext{display:none}.watch-skeleton #related .video-details{display:-moz-flexbox;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-flex-direction:row;flex-direction:row;padding-bottom:8px}.watch-skeleton #related:not([playlist]) .autoplay .video-details{padding-bottom:16px}.watch-skeleton #related .video-details .thumbnail{height:94px;width:168px;margin-right:8px}.watch-skeleton #related .video-details .video-title{width:200px;margin-bottom:12px}.watch-skeleton #related .video-details .video-meta{width:120px}@media (max-width:999px){#watch-page-skeleton{width:854px}#watch-page-skeleton #container{display:-moz-flexbox;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column}#watch-page-skeleton #info-container{order:1}#watch-page-skeleton #related{order:2;width:100%;max-width:100%}}@media (max-width:856px){#watch-page-skeleton{width:640px}}@media (max-width:656px){#watch-page-skeleton{width:426px}}@media (min-width:882px){#watch-page-skeleton.theater{width:100%;max-width:1706px;padding:0 32px}#watch-page-skeleton.theater #related{margin-top:0}#watch-page-skeleton.theater #info-container>*{margin-right:24px}}@media (min-width:1000px){#watch-page-skeleton{width:100%;max-width:1066px}#watch-page-skeleton #related{margin-top:-360px;padding-left:24px}#watch-page-skeleton #info-container{width:640px}#watch-page-skeleton.theater #info-container{width:100%;padding-right:426px}}@media (min-width:1294px) and (min-height:630px){#watch-page-skeleton{width:100%;max-width:1280px}#watch-page-skeleton #related{margin-top:-480px}#watch-page-skeleton #info-container{width:854px}}@media (min-width:1720px) and (min-height:980px){#watch-page-skeleton{width:100%;max-width:1706px}#watch-page-skeleton #related{margin-top:-720px}#watch-page-skeleton #info-container{width:1280px}}#watch-page-skeleton.theater.theater-all-widths{width:100%;max-width:1706px;padding:0 32px}#watch-page-skeleton.theater.theater-all-widths #related{margin-top:0}#watch-page-skeleton.theater.theater-all-widths #info-container>*{margin-right:24px}#watch-page-skeleton #related{display:none} -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/www-onepick-2x.css: -------------------------------------------------------------------------------- 1 | .picker-frame{width:100%;height:100%;border:0;overflow:hidden}.picker.modal-dialog-bg{position:absolute;top:0;left:0;background-color:#fff}.picker.modal-dialog{position:absolute;top:0;left:0;background-color:#fff;border:1px solid #acacac;width:auto;padding:0;z-index:1001;overflow:auto;-moz-box-shadow:rgba(0,0,0,.2) 0 4px 16px;-webkit-box-shadow:rgba(0,0,0,.2) 0 4px 16px;box-shadow:rgba(0,0,0,.2) 0 4px 16px;-webkit-transition:top .5s ease-in-out;-moz-transition:top .5s ease-in-out;-o-transition:top .5s ease-in-out;transition:top .5s ease-in-out}.picker-min{position:absolute;z-index:1002}.picker.modal-dialog-content{font-size:0;padding:0}.picker.modal-dialog-title{height:0;margin:0}.picker.modal-dialog-title-text,.picker.modal-dialog-buttons{display:none}.picker.modal-dialog-bg,.picker.modal-dialog.picker-dialog{z-index:1999999999} -------------------------------------------------------------------------------- /ios/Runner/YouTube_files/www-tampering.js: -------------------------------------------------------------------------------- 1 | (function(){/* 2 | 3 | Copyright The Closure Library Authors. 4 | SPDX-License-Identifier: Apache-2.0 5 | */ 6 | 'use strict';function n(a){var b=0;return function(){return b>>0)+"_",h=0;return b}); 14 | r("Symbol.iterator",function(a){if(a)return a;a=Symbol("Symbol.iterator");for(var b="Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array".split(" "),c=0;c=h}}); 51 | r("Set",function(a){function b(c){this.g=new Map;if(c){c=v(c);for(var d;!(d=c.next()).done;)this.add(d.value)}this.size=this.g.size} 52 | if(function(){if(!a||"function"!=typeof a||!a.prototype.entries||"function"!=typeof Object.seal)return!1;try{var c=Object.seal({x:4}),d=new a(v([c]));if(!d.has(c)||1!=d.size||d.add(c)!=d||1!=d.size||d.add({x:4})!=d||2!=d.size)return!1;var h=d.entries(),k=h.next();if(k.done||k.value[0]!=c||k.value[1]!=c)return!1;k=h.next();return k.done||k.value[0]==c||4!=k.value[0].x||k.value[1]!=k.value[0]?!1:h.next().done}catch(m){return!1}}())return a; 53 | b.prototype.add=function(c){c=0===c?0:c;this.g.set(c,c);this.size=this.g.size;return this}; 54 | b.prototype.delete=function(c){c=this.g.delete(c);this.size=this.g.size;return c}; 55 | b.prototype.clear=function(){this.g.clear();this.size=0}; 56 | b.prototype.has=function(c){return this.g.has(c)}; 57 | b.prototype.entries=function(){return this.g.entries()}; 58 | b.prototype.values=function(){return this.g.values()}; 59 | b.prototype.keys=b.prototype.values;b.prototype[Symbol.iterator]=b.prototype.values;b.prototype.forEach=function(c,d){var h=this;this.g.forEach(function(k){return c.call(d,k,k,h)})}; 60 | return b}); 61 | var D=this||self;function E(a,b){a=a.split(".");var c=D;a[0]in c||"undefined"==typeof c.execScript||c.execScript("var "+a[0]);for(var d;a.length&&(d=a.shift());)a.length||void 0===b?c[d]&&c[d]!==Object.prototype[d]?c=c[d]:c=c[d]={}:c[d]=b} 62 | ;var F={},G=null;var H="function"===typeof Uint8Array;var I="function"===typeof Symbol&&"symbol"===typeof Symbol()?Symbol(void 0):void 0;function J(a){var b;I?b=a[I]:b=a.g;return null==b?0:b} 63 | function K(a){Object.isFrozen(a)||(I?a[I]|=1:void 0!==a.g?a.g|=1:Object.defineProperties(a,{g:{value:1,configurable:!0,writable:!0,enumerable:!1}}));return a} 64 | ;function L(a){return null!==a&&"object"===typeof a&&!Array.isArray(a)&&a.constructor===Object} 65 | var da=Object.freeze(K([]));function ea(a){a=a.i;if(Array.isArray(a)&&J(a)&2)throw Error("Cannot mutate an immutable Message");} 66 | var M="undefined"!=typeof Symbol&&"undefined"!=typeof Symbol.hasInstance;function N(a){return{value:a,configurable:!1,writable:!1,enumerable:!1}} 67 | ;function fa(a){M&&Object.defineProperty(a,Symbol.hasInstance,N(Object[Symbol.hasInstance]))} 68 | ;function ha(a){var b=ia;b=void 0===b?ja:b;return ka(a,b)} 69 | function la(a,b){if(null!=a){if(Array.isArray(a))a=ka(a,b);else if(L(a)){var c={},d;for(d in a)c[d]=la(a[d],b);a=c}else a=b(a);return a}} 70 | function ka(a,b){for(var c=a.slice(),d=0;dh;h++){var k=c.concat(d[h].split(""));F[h]=k;for(var m=0;m>2];e=b[(e&3)<<4|g>>4];g=b[(g&15)<<2|f>>6];f=b[f&63];c[h++]=""+m+e+g+f}m=0;f=d;switch(a.length-k){case 2:m=a[k+1],f=b[(m&15)<<2]||d;case 1:a=a[k],c[h]=""+b[a>>2]+b[(a&3)<<4|m>>4]+f+d}a=c.join("")}}return Array.isArray(a)?ha(a):a} 73 | function ja(a){return H&&null!=a&&a instanceof Uint8Array?new Uint8Array(a):a} 74 | ;var ma;function O(a,b,c){var d=ma;ma=null;a||(a=d);d=this.constructor.j;a||(a=d?[d]:[]);this.g=(d?0:-1)-(this.constructor.g||0);this.m=void 0;this.i=a;a:{d=this.i.length;a=d-1;if(d&&(d=this.i[a],L(d))){this.j=a-this.g;this.l=d;break a}void 0!==b&&-1 MediaQuery.of(context).size.height * 0.5 92 | ? FloatingActionButton( 93 | tooltip: "Scroll to top", 94 | child: const Icon( 95 | Icons.arrow_upward, 96 | ), 97 | onPressed: () async { 98 | scrollController.animateTo( 99 | 0, 100 | duration: const Duration(milliseconds: 300), 101 | curve: Curves.easeInOut, 102 | ); 103 | }, 104 | ) 105 | : const SizedBox.shrink(), 106 | ); 107 | }, 108 | ); 109 | } 110 | } 111 | 112 | class NoMoreItems extends ConsumerWidget { 113 | const NoMoreItems({Key? key}) : super(key: key); 114 | 115 | @override 116 | Widget build(BuildContext context, WidgetRef ref) { 117 | final state = ref.watch(itemsProvider); 118 | 119 | return SliverToBoxAdapter( 120 | child: state.maybeWhen( 121 | orElse: () => const SizedBox.shrink(), 122 | data: (items) { 123 | final nomoreItems = ref.read(itemsProvider.notifier).noMoreItems; 124 | return nomoreItems 125 | ? const Padding( 126 | padding: EdgeInsets.only(bottom: 20), 127 | child: Text( 128 | "No More Items Found!", 129 | textAlign: TextAlign.center, 130 | ), 131 | ) 132 | : const SizedBox.shrink(); 133 | }), 134 | ); 135 | } 136 | } 137 | 138 | class ItemsList extends StatelessWidget { 139 | const ItemsList({Key? key}) : super(key: key); 140 | 141 | @override 142 | Widget build(BuildContext context) { 143 | return Consumer(builder: (context, ref, child) { 144 | final state = ref.watch(itemsProvider); 145 | return state.when( 146 | data: (items) { 147 | return items.isEmpty 148 | ? SliverToBoxAdapter( 149 | child: Column( 150 | children: [ 151 | IconButton( 152 | onPressed: () { 153 | ref.read(itemsProvider.notifier).fetchFirstBatch(); 154 | }, 155 | icon: const Icon(Icons.replay), 156 | ), 157 | const Chip( 158 | label: Text("No items Found!"), 159 | ), 160 | ], 161 | ), 162 | ) 163 | : ItemsListBuilder( 164 | items: items, 165 | ); 166 | }, 167 | loading: () => const SliverToBoxAdapter( 168 | child: Center(child: CircularProgressIndicator())), 169 | error: (e, stk) => SliverToBoxAdapter( 170 | child: Center( 171 | child: Column( 172 | children: const [ 173 | Icon(Icons.info), 174 | SizedBox( 175 | height: 20, 176 | ), 177 | Text( 178 | "Something Went Wrong!", 179 | style: TextStyle( 180 | color: Colors.black, 181 | ), 182 | ), 183 | ], 184 | ), 185 | ), 186 | ), 187 | onGoingLoading: (items) { 188 | return ItemsListBuilder( 189 | items: items, 190 | ); 191 | }, 192 | onGoingError: (items, e, stk) { 193 | return ItemsListBuilder( 194 | items: items, 195 | ); 196 | }, 197 | ); 198 | }); 199 | } 200 | } 201 | 202 | class ItemsListBuilder extends StatelessWidget { 203 | const ItemsListBuilder({ 204 | Key? key, 205 | required this.items, 206 | }) : super(key: key); 207 | 208 | final List items; 209 | 210 | @override 211 | Widget build(BuildContext context) { 212 | return SliverList( 213 | delegate: SliverChildBuilderDelegate( 214 | (context, index) { 215 | return ListTile( 216 | title: Text("Item ${index + 1}"), 217 | ); 218 | }, 219 | childCount: items.length, 220 | ), 221 | ); 222 | } 223 | } 224 | 225 | class OnGoingBottomWidget extends StatelessWidget { 226 | const OnGoingBottomWidget({Key? key}) : super(key: key); 227 | 228 | @override 229 | Widget build(BuildContext context) { 230 | return SliverPadding( 231 | padding: const EdgeInsets.all(40), 232 | sliver: SliverToBoxAdapter( 233 | child: Consumer(builder: (context, ref, child) { 234 | final state = ref.watch(itemsProvider); 235 | return state.maybeWhen( 236 | orElse: () => const SizedBox.shrink(), 237 | onGoingLoading: (items) => 238 | const Center(child: CircularProgressIndicator()), 239 | onGoingError: (items, e, stk) => Center( 240 | child: Column( 241 | children: const [ 242 | Icon(Icons.info), 243 | SizedBox( 244 | height: 20, 245 | ), 246 | Text( 247 | "Something Went Wrong!", 248 | style: TextStyle( 249 | color: Colors.black, 250 | ), 251 | ), 252 | ], 253 | ), 254 | ), 255 | ); 256 | }), 257 | ), 258 | ); 259 | } 260 | } 261 | -------------------------------------------------------------------------------- /lib/src/database.dart: -------------------------------------------------------------------------------- 1 | import 'package:cloud_firestore/cloud_firestore.dart'; 2 | 3 | class Item { 4 | Item({ 5 | required this.title, 6 | required this.body, 7 | required this.createdAt, 8 | }); 9 | String title; 10 | String body; 11 | Timestamp createdAt; 12 | } 13 | 14 | class MyDatabase { 15 | Future> fetchItems(Item? item) async { 16 | final itemsCollectionRef = FirebaseFirestore.instance.collection('posts'); 17 | 18 | if (item == null) { 19 | final documentSnapshot = await itemsCollectionRef 20 | .orderBy("createdAt", descending: true) 21 | .limit(1000) 22 | .get(); 23 | 24 | return documentSnapshot.docs 25 | .map( 26 | (data) => Item( 27 | title: data['title'], 28 | body: data['body'], 29 | createdAt: data['createdAt'], 30 | ), 31 | ) 32 | .toList(); 33 | } else { 34 | final documentSnapshot = await itemsCollectionRef 35 | .orderBy("createdAt", descending: true) 36 | .startAfter([item.createdAt]) 37 | .limit(1000) 38 | .get(); 39 | 40 | return documentSnapshot.docs 41 | .map( 42 | (data) => Item( 43 | title: data['title'], 44 | body: data['body'], 45 | createdAt: data['createdAt'], 46 | ), 47 | ) 48 | .toList(); 49 | } 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /lib/src/pagination_notifier.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | import 'dart:developer'; 3 | 4 | import 'package:flutter_riverpod/flutter_riverpod.dart'; 5 | import 'package:infinite_pagination/src/pagination_state/pagination_state.dart'; 6 | 7 | class PaginationNotifier extends StateNotifier> { 8 | PaginationNotifier({ 9 | required this.fetchNextItems, 10 | required this.itemsPerBatch, 11 | }) : super(const PaginationState.loading()); 12 | 13 | final Future> Function(T? item) fetchNextItems; 14 | final int itemsPerBatch; 15 | 16 | final List _items = []; 17 | 18 | Timer _timer = Timer(const Duration(milliseconds: 0), () {}); 19 | 20 | bool noMoreItems = false; 21 | 22 | void init() { 23 | if (_items.isEmpty) { 24 | fetchFirstBatch(); 25 | } 26 | } 27 | 28 | void updateData(List result) { 29 | noMoreItems = result.length < itemsPerBatch; 30 | 31 | if (result.isEmpty) { 32 | state = PaginationState.data(_items); 33 | } else { 34 | state = PaginationState.data(_items..addAll(result)); 35 | } 36 | } 37 | 38 | Future fetchFirstBatch() async { 39 | try { 40 | state = const PaginationState.loading(); 41 | 42 | final List result = _items.isEmpty 43 | ? await fetchNextItems(null) 44 | : await fetchNextItems(_items.last); 45 | updateData(result); 46 | } catch (e, stk) { 47 | state = PaginationState.error(e, stk); 48 | } 49 | } 50 | 51 | Future fetchNextBatch() async { 52 | if (_timer.isActive && _items.isNotEmpty) { 53 | return; 54 | } 55 | _timer = Timer(const Duration(milliseconds: 1000), () {}); 56 | 57 | if (noMoreItems) { 58 | return; 59 | } 60 | 61 | if (state == PaginationState.onGoingLoading(_items)) { 62 | log("Rejected"); 63 | return; 64 | } 65 | 66 | log("Fetching next batch of items"); 67 | 68 | state = PaginationState.onGoingLoading(_items); 69 | 70 | try { 71 | await Future.delayed(const Duration(seconds: 1)); 72 | final result = await fetchNextItems(_items.last); 73 | log(result.length.toString()); 74 | updateData(result); 75 | } catch (e, stk) { 76 | log("Error fetching next page", error: e, stackTrace: stk); 77 | state = PaginationState.onGoingError(_items, e, stk); 78 | } 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /lib/src/pagination_state/pagination_state.dart: -------------------------------------------------------------------------------- 1 | import 'package:freezed_annotation/freezed_annotation.dart'; 2 | 3 | part 'pagination_state.freezed.dart'; 4 | 5 | @freezed 6 | abstract class PaginationState with _$PaginationState { 7 | const factory PaginationState.data(List items) = _Data; 8 | const factory PaginationState.loading() = _Loading; 9 | const factory PaginationState.error(Object? e, [StackTrace? stk]) = _Error; 10 | const factory PaginationState.onGoingLoading(List items) = _OnGoingLoading; 11 | const factory PaginationState.onGoingError(List items, Object? e, 12 | [StackTrace? stk]) = _OnGoingError; 13 | } 14 | -------------------------------------------------------------------------------- /lib/src/providers.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter_riverpod/flutter_riverpod.dart'; 2 | import 'package:infinite_pagination/src/database.dart'; 3 | import 'package:infinite_pagination/src/pagination_notifier.dart'; 4 | import 'package:infinite_pagination/src/pagination_state/pagination_state.dart'; 5 | 6 | final itemsProvider = 7 | StateNotifierProvider, PaginationState>( 8 | (ref) { 9 | return PaginationNotifier( 10 | itemsPerBatch: 20, 11 | fetchNextItems: ( 12 | item, 13 | ) { 14 | return ref.read(databaseProvider).fetchItems(item); 15 | }, 16 | )..init(); 17 | }); 18 | 19 | final databaseProvider = Provider((ref) => MyDatabase()); 20 | -------------------------------------------------------------------------------- /macos/.gitignore: -------------------------------------------------------------------------------- 1 | # Flutter-related 2 | **/Flutter/ephemeral/ 3 | **/Pods/ 4 | 5 | # Xcode-related 6 | **/dgph 7 | **/xcuserdata/ 8 | -------------------------------------------------------------------------------- /macos/Flutter/Flutter-Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "ephemeral/Flutter-Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /macos/Flutter/Flutter-Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "ephemeral/Flutter-Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /macos/Flutter/GeneratedPluginRegistrant.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | import FlutterMacOS 6 | import Foundation 7 | 8 | import cloud_firestore 9 | import firebase_core 10 | 11 | func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { 12 | FLTFirebaseFirestorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseFirestorePlugin")) 13 | FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin")) 14 | } 15 | -------------------------------------------------------------------------------- /macos/Podfile: -------------------------------------------------------------------------------- 1 | platform :osx, '10.11' 2 | 3 | # CocoaPods analytics sends network stats synchronously affecting flutter build latency. 4 | ENV['COCOAPODS_DISABLE_STATS'] = 'true' 5 | 6 | project 'Runner', { 7 | 'Debug' => :debug, 8 | 'Profile' => :release, 9 | 'Release' => :release, 10 | } 11 | 12 | def flutter_root 13 | generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'ephemeral', 'Flutter-Generated.xcconfig'), __FILE__) 14 | unless File.exist?(generated_xcode_build_settings_path) 15 | raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure \"flutter pub get\" is executed first" 16 | end 17 | 18 | File.foreach(generated_xcode_build_settings_path) do |line| 19 | matches = line.match(/FLUTTER_ROOT\=(.*)/) 20 | return matches[1].strip if matches 21 | end 22 | raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Flutter-Generated.xcconfig, then run \"flutter pub get\"" 23 | end 24 | 25 | require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) 26 | 27 | flutter_macos_podfile_setup 28 | 29 | target 'Runner' do 30 | use_frameworks! 31 | use_modular_headers! 32 | 33 | flutter_install_all_macos_pods File.dirname(File.realpath(__FILE__)) 34 | end 35 | 36 | post_install do |installer| 37 | installer.pods_project.targets.each do |target| 38 | flutter_additional_macos_build_settings(target) 39 | end 40 | end 41 | -------------------------------------------------------------------------------- /macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 37 | 38 | 39 | 40 | 41 | 42 | 52 | 54 | 60 | 61 | 62 | 63 | 69 | 71 | 77 | 78 | 79 | 80 | 82 | 83 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /macos/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /macos/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 3 | 4 | @NSApplicationMain 5 | class AppDelegate: FlutterAppDelegate { 6 | override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { 7 | return true 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "16x16", 5 | "idiom" : "mac", 6 | "filename" : "app_icon_16.png", 7 | "scale" : "1x" 8 | }, 9 | { 10 | "size" : "16x16", 11 | "idiom" : "mac", 12 | "filename" : "app_icon_32.png", 13 | "scale" : "2x" 14 | }, 15 | { 16 | "size" : "32x32", 17 | "idiom" : "mac", 18 | "filename" : "app_icon_32.png", 19 | "scale" : "1x" 20 | }, 21 | { 22 | "size" : "32x32", 23 | "idiom" : "mac", 24 | "filename" : "app_icon_64.png", 25 | "scale" : "2x" 26 | }, 27 | { 28 | "size" : "128x128", 29 | "idiom" : "mac", 30 | "filename" : "app_icon_128.png", 31 | "scale" : "1x" 32 | }, 33 | { 34 | "size" : "128x128", 35 | "idiom" : "mac", 36 | "filename" : "app_icon_256.png", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "size" : "256x256", 41 | "idiom" : "mac", 42 | "filename" : "app_icon_256.png", 43 | "scale" : "1x" 44 | }, 45 | { 46 | "size" : "256x256", 47 | "idiom" : "mac", 48 | "filename" : "app_icon_512.png", 49 | "scale" : "2x" 50 | }, 51 | { 52 | "size" : "512x512", 53 | "idiom" : "mac", 54 | "filename" : "app_icon_512.png", 55 | "scale" : "1x" 56 | }, 57 | { 58 | "size" : "512x512", 59 | "idiom" : "mac", 60 | "filename" : "app_icon_1024.png", 61 | "scale" : "2x" 62 | } 63 | ], 64 | "info" : { 65 | "version" : 1, 66 | "author" : "xcode" 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png -------------------------------------------------------------------------------- /macos/Runner/Configs/AppInfo.xcconfig: -------------------------------------------------------------------------------- 1 | // Application-level settings for the Runner target. 2 | // 3 | // This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the 4 | // future. If not, the values below would default to using the project name when this becomes a 5 | // 'flutter create' template. 6 | 7 | // The application's name. By default this is also the title of the Flutter window. 8 | PRODUCT_NAME = infinite_pagination 9 | 10 | // The application's bundle identifier 11 | PRODUCT_BUNDLE_IDENTIFIER = com.example.infinitePagination 12 | 13 | // The copyright displayed in application information 14 | PRODUCT_COPYRIGHT = Copyright © 2022 com.example. All rights reserved. 15 | -------------------------------------------------------------------------------- /macos/Runner/Configs/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Debug.xcconfig" 2 | #include "Warnings.xcconfig" 3 | -------------------------------------------------------------------------------- /macos/Runner/Configs/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Release.xcconfig" 2 | #include "Warnings.xcconfig" 3 | -------------------------------------------------------------------------------- /macos/Runner/Configs/Warnings.xcconfig: -------------------------------------------------------------------------------- 1 | WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings 2 | GCC_WARN_UNDECLARED_SELECTOR = YES 3 | CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES 4 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE 5 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES 6 | CLANG_WARN_PRAGMA_PACK = YES 7 | CLANG_WARN_STRICT_PROTOTYPES = YES 8 | CLANG_WARN_COMMA = YES 9 | GCC_WARN_STRICT_SELECTOR_MATCH = YES 10 | CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES 11 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES 12 | GCC_WARN_SHADOW = YES 13 | CLANG_WARN_UNREACHABLE_CODE = YES 14 | -------------------------------------------------------------------------------- /macos/Runner/DebugProfile.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.cs.allow-jit 8 | 9 | com.apple.security.network.server 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /macos/Runner/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | $(FLUTTER_BUILD_NAME) 21 | CFBundleVersion 22 | $(FLUTTER_BUILD_NUMBER) 23 | LSMinimumSystemVersion 24 | $(MACOSX_DEPLOYMENT_TARGET) 25 | NSHumanReadableCopyright 26 | $(PRODUCT_COPYRIGHT) 27 | NSMainNibFile 28 | MainMenu 29 | NSPrincipalClass 30 | NSApplication 31 | 32 | 33 | -------------------------------------------------------------------------------- /macos/Runner/MainFlutterWindow.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 3 | 4 | class MainFlutterWindow: NSWindow { 5 | override func awakeFromNib() { 6 | let flutterViewController = FlutterViewController.init() 7 | let windowFrame = self.frame 8 | self.contentViewController = flutterViewController 9 | self.setFrame(windowFrame, display: true) 10 | 11 | RegisterGeneratedPlugins(registry: flutterViewController) 12 | 13 | super.awakeFromNib() 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /macos/Runner/Release.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /pubspec.lock: -------------------------------------------------------------------------------- 1 | # Generated by pub 2 | # See https://dart.dev/tools/pub/glossary#lockfile 3 | packages: 4 | _fe_analyzer_shared: 5 | dependency: transitive 6 | description: 7 | name: _fe_analyzer_shared 8 | url: "https://pub.dartlang.org" 9 | source: hosted 10 | version: "34.0.0" 11 | analyzer: 12 | dependency: transitive 13 | description: 14 | name: analyzer 15 | url: "https://pub.dartlang.org" 16 | source: hosted 17 | version: "3.2.0" 18 | args: 19 | dependency: transitive 20 | description: 21 | name: args 22 | url: "https://pub.dartlang.org" 23 | source: hosted 24 | version: "2.3.0" 25 | async: 26 | dependency: transitive 27 | description: 28 | name: async 29 | url: "https://pub.dartlang.org" 30 | source: hosted 31 | version: "2.8.2" 32 | boolean_selector: 33 | dependency: transitive 34 | description: 35 | name: boolean_selector 36 | url: "https://pub.dartlang.org" 37 | source: hosted 38 | version: "2.1.0" 39 | build: 40 | dependency: transitive 41 | description: 42 | name: build 43 | url: "https://pub.dartlang.org" 44 | source: hosted 45 | version: "2.2.1" 46 | build_config: 47 | dependency: transitive 48 | description: 49 | name: build_config 50 | url: "https://pub.dartlang.org" 51 | source: hosted 52 | version: "1.0.0" 53 | build_daemon: 54 | dependency: transitive 55 | description: 56 | name: build_daemon 57 | url: "https://pub.dartlang.org" 58 | source: hosted 59 | version: "3.0.1" 60 | build_resolvers: 61 | dependency: transitive 62 | description: 63 | name: build_resolvers 64 | url: "https://pub.dartlang.org" 65 | source: hosted 66 | version: "2.0.6" 67 | build_runner: 68 | dependency: "direct main" 69 | description: 70 | name: build_runner 71 | url: "https://pub.dartlang.org" 72 | source: hosted 73 | version: "2.1.7" 74 | build_runner_core: 75 | dependency: transitive 76 | description: 77 | name: build_runner_core 78 | url: "https://pub.dartlang.org" 79 | source: hosted 80 | version: "7.2.3" 81 | built_collection: 82 | dependency: transitive 83 | description: 84 | name: built_collection 85 | url: "https://pub.dartlang.org" 86 | source: hosted 87 | version: "5.1.1" 88 | built_value: 89 | dependency: transitive 90 | description: 91 | name: built_value 92 | url: "https://pub.dartlang.org" 93 | source: hosted 94 | version: "8.1.4" 95 | characters: 96 | dependency: transitive 97 | description: 98 | name: characters 99 | url: "https://pub.dartlang.org" 100 | source: hosted 101 | version: "1.2.0" 102 | charcode: 103 | dependency: transitive 104 | description: 105 | name: charcode 106 | url: "https://pub.dartlang.org" 107 | source: hosted 108 | version: "1.3.1" 109 | checked_yaml: 110 | dependency: transitive 111 | description: 112 | name: checked_yaml 113 | url: "https://pub.dartlang.org" 114 | source: hosted 115 | version: "2.0.1" 116 | cli_util: 117 | dependency: transitive 118 | description: 119 | name: cli_util 120 | url: "https://pub.dartlang.org" 121 | source: hosted 122 | version: "0.3.5" 123 | clock: 124 | dependency: transitive 125 | description: 126 | name: clock 127 | url: "https://pub.dartlang.org" 128 | source: hosted 129 | version: "1.1.0" 130 | cloud_firestore: 131 | dependency: "direct main" 132 | description: 133 | name: cloud_firestore 134 | url: "https://pub.dartlang.org" 135 | source: hosted 136 | version: "3.1.8" 137 | cloud_firestore_platform_interface: 138 | dependency: transitive 139 | description: 140 | name: cloud_firestore_platform_interface 141 | url: "https://pub.dartlang.org" 142 | source: hosted 143 | version: "5.4.13" 144 | cloud_firestore_web: 145 | dependency: transitive 146 | description: 147 | name: cloud_firestore_web 148 | url: "https://pub.dartlang.org" 149 | source: hosted 150 | version: "2.6.8" 151 | code_builder: 152 | dependency: transitive 153 | description: 154 | name: code_builder 155 | url: "https://pub.dartlang.org" 156 | source: hosted 157 | version: "4.1.0" 158 | collection: 159 | dependency: transitive 160 | description: 161 | name: collection 162 | url: "https://pub.dartlang.org" 163 | source: hosted 164 | version: "1.15.0" 165 | convert: 166 | dependency: transitive 167 | description: 168 | name: convert 169 | url: "https://pub.dartlang.org" 170 | source: hosted 171 | version: "3.0.1" 172 | crypto: 173 | dependency: transitive 174 | description: 175 | name: crypto 176 | url: "https://pub.dartlang.org" 177 | source: hosted 178 | version: "3.0.1" 179 | cupertino_icons: 180 | dependency: "direct main" 181 | description: 182 | name: cupertino_icons 183 | url: "https://pub.dartlang.org" 184 | source: hosted 185 | version: "1.0.4" 186 | dart_style: 187 | dependency: transitive 188 | description: 189 | name: dart_style 190 | url: "https://pub.dartlang.org" 191 | source: hosted 192 | version: "2.2.1" 193 | fake_async: 194 | dependency: transitive 195 | description: 196 | name: fake_async 197 | url: "https://pub.dartlang.org" 198 | source: hosted 199 | version: "1.2.0" 200 | file: 201 | dependency: transitive 202 | description: 203 | name: file 204 | url: "https://pub.dartlang.org" 205 | source: hosted 206 | version: "6.1.2" 207 | firebase_core: 208 | dependency: "direct main" 209 | description: 210 | name: firebase_core 211 | url: "https://pub.dartlang.org" 212 | source: hosted 213 | version: "1.12.0" 214 | firebase_core_platform_interface: 215 | dependency: transitive 216 | description: 217 | name: firebase_core_platform_interface 218 | url: "https://pub.dartlang.org" 219 | source: hosted 220 | version: "4.2.4" 221 | firebase_core_web: 222 | dependency: transitive 223 | description: 224 | name: firebase_core_web 225 | url: "https://pub.dartlang.org" 226 | source: hosted 227 | version: "1.5.4" 228 | fixnum: 229 | dependency: transitive 230 | description: 231 | name: fixnum 232 | url: "https://pub.dartlang.org" 233 | source: hosted 234 | version: "1.0.0" 235 | flutter: 236 | dependency: "direct main" 237 | description: flutter 238 | source: sdk 239 | version: "0.0.0" 240 | flutter_lints: 241 | dependency: "direct dev" 242 | description: 243 | name: flutter_lints 244 | url: "https://pub.dartlang.org" 245 | source: hosted 246 | version: "1.0.4" 247 | flutter_riverpod: 248 | dependency: "direct main" 249 | description: 250 | name: flutter_riverpod 251 | url: "https://pub.dartlang.org" 252 | source: hosted 253 | version: "1.0.3" 254 | flutter_test: 255 | dependency: "direct dev" 256 | description: flutter 257 | source: sdk 258 | version: "0.0.0" 259 | flutter_web_plugins: 260 | dependency: transitive 261 | description: flutter 262 | source: sdk 263 | version: "0.0.0" 264 | freezed: 265 | dependency: "direct main" 266 | description: 267 | name: freezed 268 | url: "https://pub.dartlang.org" 269 | source: hosted 270 | version: "1.1.1" 271 | freezed_annotation: 272 | dependency: transitive 273 | description: 274 | name: freezed_annotation 275 | url: "https://pub.dartlang.org" 276 | source: hosted 277 | version: "1.1.0" 278 | frontend_server_client: 279 | dependency: transitive 280 | description: 281 | name: frontend_server_client 282 | url: "https://pub.dartlang.org" 283 | source: hosted 284 | version: "2.1.2" 285 | glob: 286 | dependency: transitive 287 | description: 288 | name: glob 289 | url: "https://pub.dartlang.org" 290 | source: hosted 291 | version: "2.0.2" 292 | graphs: 293 | dependency: transitive 294 | description: 295 | name: graphs 296 | url: "https://pub.dartlang.org" 297 | source: hosted 298 | version: "2.1.0" 299 | http_multi_server: 300 | dependency: transitive 301 | description: 302 | name: http_multi_server 303 | url: "https://pub.dartlang.org" 304 | source: hosted 305 | version: "3.2.0" 306 | http_parser: 307 | dependency: transitive 308 | description: 309 | name: http_parser 310 | url: "https://pub.dartlang.org" 311 | source: hosted 312 | version: "4.0.0" 313 | io: 314 | dependency: transitive 315 | description: 316 | name: io 317 | url: "https://pub.dartlang.org" 318 | source: hosted 319 | version: "1.0.3" 320 | js: 321 | dependency: transitive 322 | description: 323 | name: js 324 | url: "https://pub.dartlang.org" 325 | source: hosted 326 | version: "0.6.3" 327 | json_annotation: 328 | dependency: transitive 329 | description: 330 | name: json_annotation 331 | url: "https://pub.dartlang.org" 332 | source: hosted 333 | version: "4.4.0" 334 | lints: 335 | dependency: transitive 336 | description: 337 | name: lints 338 | url: "https://pub.dartlang.org" 339 | source: hosted 340 | version: "1.0.1" 341 | logging: 342 | dependency: transitive 343 | description: 344 | name: logging 345 | url: "https://pub.dartlang.org" 346 | source: hosted 347 | version: "1.0.2" 348 | matcher: 349 | dependency: transitive 350 | description: 351 | name: matcher 352 | url: "https://pub.dartlang.org" 353 | source: hosted 354 | version: "0.12.11" 355 | meta: 356 | dependency: transitive 357 | description: 358 | name: meta 359 | url: "https://pub.dartlang.org" 360 | source: hosted 361 | version: "1.7.0" 362 | mime: 363 | dependency: transitive 364 | description: 365 | name: mime 366 | url: "https://pub.dartlang.org" 367 | source: hosted 368 | version: "1.0.1" 369 | package_config: 370 | dependency: transitive 371 | description: 372 | name: package_config 373 | url: "https://pub.dartlang.org" 374 | source: hosted 375 | version: "2.0.2" 376 | path: 377 | dependency: transitive 378 | description: 379 | name: path 380 | url: "https://pub.dartlang.org" 381 | source: hosted 382 | version: "1.8.0" 383 | plugin_platform_interface: 384 | dependency: transitive 385 | description: 386 | name: plugin_platform_interface 387 | url: "https://pub.dartlang.org" 388 | source: hosted 389 | version: "2.1.2" 390 | pool: 391 | dependency: transitive 392 | description: 393 | name: pool 394 | url: "https://pub.dartlang.org" 395 | source: hosted 396 | version: "1.5.0" 397 | pub_semver: 398 | dependency: transitive 399 | description: 400 | name: pub_semver 401 | url: "https://pub.dartlang.org" 402 | source: hosted 403 | version: "2.1.0" 404 | pubspec_parse: 405 | dependency: transitive 406 | description: 407 | name: pubspec_parse 408 | url: "https://pub.dartlang.org" 409 | source: hosted 410 | version: "1.2.0" 411 | riverpod: 412 | dependency: transitive 413 | description: 414 | name: riverpod 415 | url: "https://pub.dartlang.org" 416 | source: hosted 417 | version: "1.0.3" 418 | shelf: 419 | dependency: transitive 420 | description: 421 | name: shelf 422 | url: "https://pub.dartlang.org" 423 | source: hosted 424 | version: "1.2.0" 425 | shelf_web_socket: 426 | dependency: transitive 427 | description: 428 | name: shelf_web_socket 429 | url: "https://pub.dartlang.org" 430 | source: hosted 431 | version: "1.0.1" 432 | sky_engine: 433 | dependency: transitive 434 | description: flutter 435 | source: sdk 436 | version: "0.0.99" 437 | source_gen: 438 | dependency: transitive 439 | description: 440 | name: source_gen 441 | url: "https://pub.dartlang.org" 442 | source: hosted 443 | version: "1.2.1" 444 | source_span: 445 | dependency: transitive 446 | description: 447 | name: source_span 448 | url: "https://pub.dartlang.org" 449 | source: hosted 450 | version: "1.8.1" 451 | stack_trace: 452 | dependency: transitive 453 | description: 454 | name: stack_trace 455 | url: "https://pub.dartlang.org" 456 | source: hosted 457 | version: "1.10.0" 458 | state_notifier: 459 | dependency: transitive 460 | description: 461 | name: state_notifier 462 | url: "https://pub.dartlang.org" 463 | source: hosted 464 | version: "0.7.2+1" 465 | stream_channel: 466 | dependency: transitive 467 | description: 468 | name: stream_channel 469 | url: "https://pub.dartlang.org" 470 | source: hosted 471 | version: "2.1.0" 472 | stream_transform: 473 | dependency: transitive 474 | description: 475 | name: stream_transform 476 | url: "https://pub.dartlang.org" 477 | source: hosted 478 | version: "2.0.0" 479 | string_scanner: 480 | dependency: transitive 481 | description: 482 | name: string_scanner 483 | url: "https://pub.dartlang.org" 484 | source: hosted 485 | version: "1.1.0" 486 | term_glyph: 487 | dependency: transitive 488 | description: 489 | name: term_glyph 490 | url: "https://pub.dartlang.org" 491 | source: hosted 492 | version: "1.2.0" 493 | test_api: 494 | dependency: transitive 495 | description: 496 | name: test_api 497 | url: "https://pub.dartlang.org" 498 | source: hosted 499 | version: "0.4.3" 500 | timing: 501 | dependency: transitive 502 | description: 503 | name: timing 504 | url: "https://pub.dartlang.org" 505 | source: hosted 506 | version: "1.0.0" 507 | typed_data: 508 | dependency: transitive 509 | description: 510 | name: typed_data 511 | url: "https://pub.dartlang.org" 512 | source: hosted 513 | version: "1.3.0" 514 | vector_math: 515 | dependency: transitive 516 | description: 517 | name: vector_math 518 | url: "https://pub.dartlang.org" 519 | source: hosted 520 | version: "2.1.1" 521 | watcher: 522 | dependency: transitive 523 | description: 524 | name: watcher 525 | url: "https://pub.dartlang.org" 526 | source: hosted 527 | version: "1.0.1" 528 | web_socket_channel: 529 | dependency: transitive 530 | description: 531 | name: web_socket_channel 532 | url: "https://pub.dartlang.org" 533 | source: hosted 534 | version: "2.1.0" 535 | yaml: 536 | dependency: transitive 537 | description: 538 | name: yaml 539 | url: "https://pub.dartlang.org" 540 | source: hosted 541 | version: "3.1.0" 542 | sdks: 543 | dart: ">=2.15.0 <3.0.0" 544 | flutter: ">=1.17.0" 545 | -------------------------------------------------------------------------------- /pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: infinite_pagination 2 | description: A new Flutter project. 3 | 4 | # The following line prevents the package from being accidentally published to 5 | # pub.dev using `flutter pub publish`. This is preferred for private packages. 6 | publish_to: 'none' # Remove this line if you wish to publish to pub.dev 7 | 8 | # The following defines the version and build number for your application. 9 | # A version number is three numbers separated by dots, like 1.2.43 10 | # followed by an optional build number separated by a +. 11 | # Both the version and the builder number may be overridden in flutter 12 | # build by specifying --build-name and --build-number, respectively. 13 | # In Android, build-name is used as versionName while build-number used as versionCode. 14 | # Read more about Android versioning at https://developer.android.com/studio/publish/versioning 15 | # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. 16 | # Read more about iOS versioning at 17 | # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html 18 | version: 1.0.0+1 19 | 20 | environment: 21 | sdk: ">=2.15.0 <3.0.0" 22 | 23 | # Dependencies specify other packages that your package needs in order to work. 24 | # To automatically upgrade your package dependencies to the latest versions 25 | # consider running `flutter pub upgrade --major-versions`. Alternatively, 26 | # dependencies can be manually updated by changing the version numbers below to 27 | # the latest version available on pub.dev. To see which dependencies have newer 28 | # versions available, run `flutter pub outdated`. 29 | dependencies: 30 | flutter: 31 | sdk: flutter 32 | 33 | 34 | # The following adds the Cupertino Icons font to your application. 35 | # Use with the CupertinoIcons class for iOS style icons. 36 | cupertino_icons: ^1.0.2 37 | firebase_core: ^1.12.0 38 | cloud_firestore: ^3.1.8 39 | flutter_riverpod: ^1.0.3 40 | freezed: ^1.1.1 41 | build_runner: ^2.1.7 42 | 43 | dev_dependencies: 44 | flutter_test: 45 | sdk: flutter 46 | 47 | # The "flutter_lints" package below contains a set of recommended lints to 48 | # encourage good coding practices. The lint set provided by the package is 49 | # activated in the `analysis_options.yaml` file located at the root of your 50 | # package. See that file for information about deactivating specific lint 51 | # rules and activating additional ones. 52 | flutter_lints: ^1.0.0 53 | 54 | # For information on the generic Dart part of this file, see the 55 | # following page: https://dart.dev/tools/pub/pubspec 56 | 57 | # The following section is specific to Flutter. 58 | flutter: 59 | 60 | # The following line ensures that the Material Icons font is 61 | # included with your application, so that you can use the icons in 62 | # the material Icons class. 63 | uses-material-design: true 64 | 65 | # To add assets to your application, add an assets section, like this: 66 | # assets: 67 | # - images/a_dot_burr.jpeg 68 | # - images/a_dot_ham.jpeg 69 | 70 | # An image asset can refer to one or more resolution-specific "variants", see 71 | # https://flutter.dev/assets-and-images/#resolution-aware. 72 | 73 | # For details regarding adding assets from package dependencies, see 74 | # https://flutter.dev/assets-and-images/#from-packages 75 | 76 | # To add custom fonts to your application, add a fonts section here, 77 | # in this "flutter" section. Each entry in this list should have a 78 | # "family" key with the font family name, and a "fonts" key with a 79 | # list giving the asset and other descriptors for the font. For 80 | # example: 81 | # fonts: 82 | # - family: Schyler 83 | # fonts: 84 | # - asset: fonts/Schyler-Regular.ttf 85 | # - asset: fonts/Schyler-Italic.ttf 86 | # style: italic 87 | # - family: Trajan Pro 88 | # fonts: 89 | # - asset: fonts/TrajanPro.ttf 90 | # - asset: fonts/TrajanPro_Bold.ttf 91 | # weight: 700 92 | # 93 | # For details regarding fonts from package dependencies, 94 | # see https://flutter.dev/custom-fonts/#from-packages 95 | -------------------------------------------------------------------------------- /test/widget_test.dart: -------------------------------------------------------------------------------- 1 | // This is a basic Flutter widget test. 2 | // 3 | // To perform an interaction with a widget in your test, use the WidgetTester 4 | // utility that Flutter provides. For example, you can send tap and scroll 5 | // gestures. You can also use WidgetTester to find child widgets in the widget 6 | // tree, read text, and verify that the values of widget properties are correct. 7 | 8 | import 'package:flutter/material.dart'; 9 | import 'package:flutter_test/flutter_test.dart'; 10 | 11 | import 'package:infinite_pagination/main.dart'; 12 | 13 | void main() { 14 | testWidgets('Counter increments smoke test', (WidgetTester tester) async { 15 | // Build our app and trigger a frame. 16 | await tester.pumpWidget(const MyApp()); 17 | 18 | // Verify that our counter starts at 0. 19 | expect(find.text('0'), findsOneWidget); 20 | expect(find.text('1'), findsNothing); 21 | 22 | // Tap the '+' icon and trigger a frame. 23 | await tester.tap(find.byIcon(Icons.add)); 24 | await tester.pump(); 25 | 26 | // Verify that our counter has incremented. 27 | expect(find.text('0'), findsNothing); 28 | expect(find.text('1'), findsOneWidget); 29 | }); 30 | } 31 | -------------------------------------------------------------------------------- /web/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/web/favicon.png -------------------------------------------------------------------------------- /web/icons/Icon-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/web/icons/Icon-192.png -------------------------------------------------------------------------------- /web/icons/Icon-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/web/icons/Icon-512.png -------------------------------------------------------------------------------- /web/icons/Icon-maskable-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/web/icons/Icon-maskable-192.png -------------------------------------------------------------------------------- /web/icons/Icon-maskable-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rutvik110/Flutter-Infinite-Pagination/45be291e79745a359a908419a415b477120fca7f/web/icons/Icon-maskable-512.png -------------------------------------------------------------------------------- /web/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | infinite_pagination 33 | 34 | 35 | 36 | 39 | 103 | 104 | 105 | -------------------------------------------------------------------------------- /web/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "infinite_pagination", 3 | "short_name": "infinite_pagination", 4 | "start_url": ".", 5 | "display": "standalone", 6 | "background_color": "#0175C2", 7 | "theme_color": "#0175C2", 8 | "description": "A new Flutter project.", 9 | "orientation": "portrait-primary", 10 | "prefer_related_applications": false, 11 | "icons": [ 12 | { 13 | "src": "icons/Icon-192.png", 14 | "sizes": "192x192", 15 | "type": "image/png" 16 | }, 17 | { 18 | "src": "icons/Icon-512.png", 19 | "sizes": "512x512", 20 | "type": "image/png" 21 | }, 22 | { 23 | "src": "icons/Icon-maskable-192.png", 24 | "sizes": "192x192", 25 | "type": "image/png", 26 | "purpose": "maskable" 27 | }, 28 | { 29 | "src": "icons/Icon-maskable-512.png", 30 | "sizes": "512x512", 31 | "type": "image/png", 32 | "purpose": "maskable" 33 | } 34 | ] 35 | } 36 | --------------------------------------------------------------------------------