├── android
├── settings.gradle
├── gradle.properties
├── .gitignore
├── src
│ └── main
│ │ ├── AndroidManifest.xml
│ │ └── java
│ │ └── com
│ │ └── juliusgithaiga
│ │ └── flutter_sms_inbox
│ │ ├── SmsQueryRequest.java
│ │ ├── SmsQuery.java
│ │ ├── FlutterSmsInboxPlugin.java
│ │ └── SmsQueryHandler.java
├── gradle
│ └── wrapper
│ │ └── gradle-wrapper.properties
└── build.gradle
├── example
├── ios
│ ├── Runner
│ │ ├── Runner-Bridging-Header.h
│ │ ├── Assets.xcassets
│ │ │ ├── LaunchImage.imageset
│ │ │ │ ├── LaunchImage.png
│ │ │ │ ├── LaunchImage@2x.png
│ │ │ │ ├── LaunchImage@3x.png
│ │ │ │ ├── README.md
│ │ │ │ └── Contents.json
│ │ │ └── AppIcon.appiconset
│ │ │ │ ├── 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-1024x1024@1x.png
│ │ │ │ ├── Icon-App-83.5x83.5@2x.png
│ │ │ │ └── Contents.json
│ │ ├── AppDelegate.swift
│ │ ├── Base.lproj
│ │ │ ├── Main.storyboard
│ │ │ └── LaunchScreen.storyboard
│ │ └── Info.plist
│ ├── Flutter
│ │ ├── Debug.xcconfig
│ │ ├── Release.xcconfig
│ │ └── AppFrameworkInfo.plist
│ ├── Runner.xcodeproj
│ │ ├── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ │ ├── WorkspaceSettings.xcsettings
│ │ │ │ └── IDEWorkspaceChecks.plist
│ │ ├── xcshareddata
│ │ │ └── xcschemes
│ │ │ │ └── Runner.xcscheme
│ │ └── project.pbxproj
│ ├── Runner.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ ├── WorkspaceSettings.xcsettings
│ │ │ └── IDEWorkspaceChecks.plist
│ ├── .gitignore
│ └── Podfile
├── android
│ ├── gradle.properties
│ ├── app
│ │ ├── src
│ │ │ ├── main
│ │ │ │ ├── res
│ │ │ │ │ ├── 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
│ │ │ │ │ ├── drawable
│ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ ├── drawable-v21
│ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ ├── values
│ │ │ │ │ │ └── styles.xml
│ │ │ │ │ └── values-night
│ │ │ │ │ │ └── styles.xml
│ │ │ │ ├── java
│ │ │ │ │ └── com
│ │ │ │ │ │ └── juliusgithaiga
│ │ │ │ │ │ └── flutter_sms_inbox_example
│ │ │ │ │ │ └── MainActivity.java
│ │ │ │ └── AndroidManifest.xml
│ │ │ ├── debug
│ │ │ │ └── AndroidManifest.xml
│ │ │ └── profile
│ │ │ │ └── AndroidManifest.xml
│ │ └── build.gradle
│ ├── gradle
│ │ └── wrapper
│ │ │ └── gradle-wrapper.properties
│ ├── .gitignore
│ ├── build.gradle
│ └── settings.gradle
├── .metadata
├── README.md
├── .gitignore
├── test
│ └── widget_test.dart
├── analysis_options.yaml
├── lib
│ └── main.dart
├── pubspec.yaml
└── pubspec.lock
├── .github
├── dependabot.yaml
└── workflows
│ └── build.yml
├── analysis_options.yaml
├── lib
├── src
│ ├── enums.dart
│ ├── sms.message.dart
│ └── sms.query.dart
└── flutter_sms_inbox.dart
├── .metadata
├── .gitignore
├── CHANGELOG.md
├── LICENSE
├── test
├── flutter_sms_inbox_test.dart
└── flutter_sms_inbox_test.mocks.dart
├── README.md
├── pubspec.yaml
└── pubspec.lock
/android/settings.gradle:
--------------------------------------------------------------------------------
1 | rootProject.name = 'flutter_sms_inbox'
2 |
--------------------------------------------------------------------------------
/example/ios/Runner/Runner-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import "GeneratedPluginRegistrant.h"
2 |
--------------------------------------------------------------------------------
/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx1536M
2 | android.useAndroidX=true
3 | android.enableJetifier=true
4 |
--------------------------------------------------------------------------------
/example/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx1536M
2 | android.useAndroidX=true
3 | android.enableJetifier=true
4 |
--------------------------------------------------------------------------------
/android/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/workspace.xml
5 | /.idea/libraries
6 | .DS_Store
7 | /build
8 | /captures
9 |
--------------------------------------------------------------------------------
/example/ios/Flutter/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/example/ios/Flutter/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/android/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
--------------------------------------------------------------------------------
/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgithaiga/flutter_sms_inbox/HEAD/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgithaiga/flutter_sms_inbox/HEAD/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/.github/dependabot.yaml:
--------------------------------------------------------------------------------
1 | version: 2
2 | enable-beta-ecosystems: true
3 | updates:
4 | - package-ecosystem: "pub"
5 | directory: "/"
6 | schedule:
7 | interval: "weekly"
8 |
--------------------------------------------------------------------------------
/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgithaiga/flutter_sms_inbox/HEAD/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgithaiga/flutter_sms_inbox/HEAD/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/analysis_options.yaml:
--------------------------------------------------------------------------------
1 | include: package:flutter_lints/flutter.yaml
2 |
3 | # Additional information about this file can be found at
4 | # https://dart.dev/guides/language/analysis-options
5 |
--------------------------------------------------------------------------------
/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgithaiga/flutter_sms_inbox/HEAD/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgithaiga/flutter_sms_inbox/HEAD/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgithaiga/flutter_sms_inbox/HEAD/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgithaiga/flutter_sms_inbox/HEAD/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgithaiga/flutter_sms_inbox/HEAD/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgithaiga/flutter_sms_inbox/HEAD/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgithaiga/flutter_sms_inbox/HEAD/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgithaiga/flutter_sms_inbox/HEAD/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgithaiga/flutter_sms_inbox/HEAD/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgithaiga/flutter_sms_inbox/HEAD/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgithaiga/flutter_sms_inbox/HEAD/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgithaiga/flutter_sms_inbox/HEAD/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgithaiga/flutter_sms_inbox/HEAD/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgithaiga/flutter_sms_inbox/HEAD/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgithaiga/flutter_sms_inbox/HEAD/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgithaiga/flutter_sms_inbox/HEAD/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgithaiga/flutter_sms_inbox/HEAD/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgithaiga/flutter_sms_inbox/HEAD/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jgithaiga/flutter_sms_inbox/HEAD/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
--------------------------------------------------------------------------------
/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/example/ios/Runner.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/example/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-all.zip
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 |
--------------------------------------------------------------------------------
/example/android/app/src/main/java/com/juliusgithaiga/flutter_sms_inbox_example/MainActivity.java:
--------------------------------------------------------------------------------
1 | package com.juliusgithaiga.flutter_sms_inbox_example;
2 |
3 | import io.flutter.embedding.android.FlutterActivity;
4 |
5 | public class MainActivity extends FlutterActivity {
6 | }
7 |
--------------------------------------------------------------------------------
/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-all.zip
4 | validateDistributionUrl=true
5 | zipStoreBase=GRADLE_USER_HOME
6 | zipStorePath=wrapper/dists
7 |
--------------------------------------------------------------------------------
/lib/src/enums.dart:
--------------------------------------------------------------------------------
1 | part of flutter_sms_inbox;
2 |
3 | enum SmsMessageState {
4 | sending,
5 | sent,
6 | delivered,
7 | fail,
8 | none,
9 | }
10 |
11 | enum SmsMessageKind {
12 | sent,
13 | received,
14 | draft,
15 | }
16 |
17 | enum SmsQueryKind { inbox, sent, draft }
18 |
--------------------------------------------------------------------------------
/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/.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: 18116933e77adc82f80866c928266a5b4f1ed645
8 | channel: stable
9 |
10 | project_type: plugin
11 |
--------------------------------------------------------------------------------
/example/.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: 18116933e77adc82f80866c928266a5b4f1ed645
8 | channel: stable
9 |
10 | project_type: app
11 |
--------------------------------------------------------------------------------
/example/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 |
--------------------------------------------------------------------------------
/example/android/build.gradle:
--------------------------------------------------------------------------------
1 | allprojects {
2 | repositories {
3 | google()
4 | mavenCentral()
5 | }
6 | }
7 |
8 | rootProject.buildDir = '../build'
9 | subprojects {
10 | project.buildDir = "${rootProject.buildDir}/${project.name}"
11 | project.evaluationDependsOn(':app')
12 | }
13 |
14 | tasks.register("clean", Delete) {
15 | delete rootProject.buildDir
16 | }
17 |
--------------------------------------------------------------------------------
/example/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.
--------------------------------------------------------------------------------
/example/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/example/android/app/src/profile/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # IntelliJ related
2 | *.iml
3 | *.ipr
4 | *.iws
5 | .idea/
6 |
7 | # Flutter/Dart/Pub related
8 | **/doc/api/
9 | .dart_tool/
10 | .flutter-plugins
11 | .flutter-plugins-dependencies
12 | .packages
13 | .pub-cache/
14 | .pub/
15 | build/
16 |
17 | # Miscellaneous
18 | *.class
19 | *.log
20 | *.pyc
21 | *.swp
22 | .DS_Store
23 | .atom/
24 | .buildlog/
25 | .history
26 | .svn/
27 | coverage/
28 |
29 | example/.flutter-plugins-dependencies
30 |
--------------------------------------------------------------------------------
/example/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 |
--------------------------------------------------------------------------------
/lib/flutter_sms_inbox.dart:
--------------------------------------------------------------------------------
1 | library flutter_sms_inbox;
2 |
3 | import 'dart:async';
4 | import 'package:flutter/services.dart';
5 |
6 | part 'src/enums.dart';
7 | part 'src/sms.message.dart';
8 | part 'src/sms.query.dart';
9 |
10 | class FlutterSmsInbox {
11 | static const MethodChannel _channel = MethodChannel('flutter_sms_inbox');
12 |
13 | static Future get platformVersion async {
14 | final String? version = await _channel.invokeMethod('getPlatformVersion');
15 | return version;
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/example/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/example/android/app/src/main/res/drawable-v21/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/example/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 |
--------------------------------------------------------------------------------
/android/src/main/java/com/juliusgithaiga/flutter_sms_inbox/SmsQueryRequest.java:
--------------------------------------------------------------------------------
1 | package com.juliusgithaiga.flutter_sms_inbox;
2 |
3 | import android.net.Uri;
4 |
5 | public enum SmsQueryRequest {
6 | Inbox,
7 | Sent,
8 | Draft;
9 |
10 | Uri toUri() {
11 | if (this == Inbox) {
12 | return Uri.parse("content://sms/inbox");
13 | } else if (this == Sent) {
14 | return Uri.parse("content://sms/sent");
15 | } else {
16 | return Uri.parse("content://sms/draft");
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/example/README.md:
--------------------------------------------------------------------------------
1 | # flutter_sms_inbox_example
2 |
3 | Demonstrates how to use the flutter_sms_inbox plugin.
4 |
5 | ## Getting Started
6 |
7 | This project is a starting point for a Flutter application.
8 |
9 | A few resources to get you started if this is your first Flutter project:
10 |
11 | - [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab)
12 | - [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook)
13 |
14 | For help getting started with Flutter, view our
15 | [online documentation](https://flutter.dev/docs), which offers tutorials,
16 | samples, guidance on mobile development, and a full API reference.
17 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | ## 1.0.4
2 | * Bump Android Gradle Plugin to 8.3.1
3 | * Bump minimum supported Android SDK to 19
4 | * Update the example app
5 |
6 | PR from https://github.com/Sahad2701
7 | * Migrated to FlutterPlugin using onAttachedToEngine
8 | * Removed deprecated PluginRegistry.Registrar usage
9 | * Preserved existing functionality with method channels
10 |
11 | ## 1.0.3
12 | * Added support for AGP 8.0
13 | * Update plugin test cases
14 |
15 | ## 1.0.2
16 | * Remove iOS platform
17 | * Update description and fix lint errors
18 |
19 | ## 1.0.1
20 | * Added `Null Safety` support
21 | * Update example app
22 |
23 | ## 0.0.1
24 | * TODO: Describe initial release.
25 |
--------------------------------------------------------------------------------
/example/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 |
--------------------------------------------------------------------------------
/example/android/settings.gradle:
--------------------------------------------------------------------------------
1 | pluginManagement {
2 | def flutterSdkPath = {
3 | def properties = new Properties()
4 | file("local.properties").withInputStream { properties.load(it) }
5 | def flutterSdkPath = properties.getProperty("flutter.sdk")
6 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
7 | return flutterSdkPath
8 | }()
9 |
10 | includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
11 |
12 | repositories {
13 | google()
14 | mavenCentral()
15 | gradlePluginPortal()
16 | }
17 | }
18 |
19 | plugins {
20 | id "dev.flutter.flutter-plugin-loader" version "1.0.0"
21 | id "com.android.application" version "8.3.1" apply false
22 | }
23 |
24 | include ":app"
25 |
--------------------------------------------------------------------------------
/example/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 |
--------------------------------------------------------------------------------
/example/.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 | /android/app/.cxx/
49 |
--------------------------------------------------------------------------------
/android/build.gradle:
--------------------------------------------------------------------------------
1 | group 'com.juliusgithaiga.flutter_sms_inbox'
2 | version '1.0-SNAPSHOT'
3 |
4 | buildscript {
5 | repositories {
6 | google()
7 | mavenCentral()
8 | }
9 |
10 | dependencies {
11 | classpath 'com.android.tools.build:gradle:8.3.1'
12 | }
13 | }
14 |
15 | rootProject.allprojects {
16 | repositories {
17 | google()
18 | mavenCentral()
19 | }
20 | }
21 |
22 | apply plugin: 'com.android.library'
23 |
24 | android {
25 | // Conditional for compatibility with AGP <4.2.
26 | if (project.android.hasProperty("namespace")) {
27 | namespace 'com.juliusgithaiga.flutter_sms_inbox'
28 | }
29 |
30 | compileSdkVersion 34
31 |
32 | compileOptions {
33 | sourceCompatibility JavaVersion.VERSION_1_8
34 | targetCompatibility JavaVersion.VERSION_1_8
35 | }
36 |
37 | defaultConfig {
38 | minSdkVersion 19
39 | }
40 |
41 | lintOptions {
42 | disable 'InvalidPackage'
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/example/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:flutter_sms_inbox_example/main.dart';
12 |
13 | void main() {
14 | testWidgets('Verify Platform version', (WidgetTester tester) async {
15 | // Build our app and trigger a frame.
16 | await tester.pumpWidget(const MyApp());
17 |
18 | // Verify that platform version is retrieved.
19 | expect(
20 | find.byWidgetPredicate(
21 | (Widget widget) => widget is Text &&
22 | widget.data!.startsWith('Running on:'),
23 | ),
24 | findsOneWidget,
25 | );
26 | });
27 | }
28 |
--------------------------------------------------------------------------------
/example/android/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/example/android/app/src/main/res/values-night/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2019, Julius Githaiga.
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of
4 | this software and associated documentation files (the "Software"), to deal in
5 | the Software without restriction, including without limitation the rights to
6 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
7 | of the Software, and to permit persons to whom the Software is furnished to do
8 | so, subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in all
11 | copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19 | SOFTWARE.
20 |
--------------------------------------------------------------------------------
/test/flutter_sms_inbox_test.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter_test/flutter_test.dart';
2 | import 'package:flutter_sms_inbox/flutter_sms_inbox.dart';
3 |
4 | import 'package:mockito/annotations.dart';
5 | import 'package:mockito/mockito.dart';
6 |
7 | import 'flutter_sms_inbox_test.mocks.dart';
8 |
9 | @GenerateNiceMocks([MockSpec()])
10 | // import 'sms.query.mocks.dart';
11 |
12 | void main() {
13 | TestWidgetsFlutterBinding.ensureInitialized();
14 |
15 | final mockSmsQuery = MockSmsQuery();
16 | SmsQuery.instance = mockSmsQuery;
17 | final SmsQuery smsQuery = SmsQuery();
18 |
19 | tearDown(resetMockitoState);
20 |
21 | test('getAllSms should call the underlying instance', () async {
22 | when(smsQuery.getAllSms).thenAnswer((_) async => Future.value([]));
23 |
24 | await smsQuery.getAllSms;
25 | verify(smsQuery.getAllSms).called(1);
26 | });
27 |
28 | test('querySms should call the underlying instance', () async {
29 | when(smsQuery.querySms()).thenAnswer((_) async => Future.value([]));
30 |
31 | await smsQuery.querySms();
32 | verify(smsQuery.querySms()).called(1);
33 | });
34 | }
35 |
--------------------------------------------------------------------------------
/.github/workflows/build.yml:
--------------------------------------------------------------------------------
1 | name: Build
2 |
3 | on:
4 | pull_request:
5 | paths-ignore:
6 | - "**.md"
7 | push:
8 | branches:
9 | - master
10 | paths-ignore:
11 | - "**.md"
12 | schedule:
13 | # runs the CI everyday at 10AM
14 | - cron: "0 10 * * *"
15 |
16 | jobs:
17 | flutter:
18 | runs-on: ubuntu-latest
19 |
20 | strategy:
21 | matrix:
22 | channel:
23 | - master
24 |
25 | steps:
26 | - uses: actions/checkout@v3.1.0
27 |
28 | - uses: subosito/flutter-action@v2.7.1
29 | with:
30 | channel: ${{ matrix.channel }}
31 |
32 | - name: Add pub cache bin to PATH
33 | run: echo "$HOME/.pub-cache/bin" >> $GITHUB_PATH
34 | - name: Add pub cache to PATH
35 | run: echo "PUB_CACHE="$HOME/.pub-cache"" >> $GITHUB_ENV
36 |
37 | - name: Install dependencies
38 | run: flutter pub get
39 |
40 | - run: dart format lib test --set-exit-if-changed
41 | if: matrix.channel == 'master'
42 |
43 | - run: flutter analyze --no-current-package
44 |
45 | - run: flutter test --no-pub --coverage test
--------------------------------------------------------------------------------
/example/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 |
--------------------------------------------------------------------------------
/example/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 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Flutter SMS Inbox
2 |
3 | [](https://pub.dev/packages/flutter_sms_inbox)
4 | [](https://pub.dev/packages/flutter_sms_inbox/score)
5 |
6 | Flutter android SMS inbox library based on [Flutter SMS](https://github.com/babariviere/flutter_sms).
7 |
8 | ### Dependencies
9 |
10 | This package in turn uses the permission handler package for permission handling, [Permission Handler](https://pub.dev/packages/permission_handler).
11 |
12 | You need to add it to your project:
13 |
14 | ```
15 | dependencies:
16 | permission_handler: ^10.2.0
17 | ```
18 |
19 | ## Querying SMS messages
20 |
21 | Add the import statement for sms and create an instance of the SmsQuery class:
22 |
23 | ```
24 | import 'package:flutter_sms_inbox/flutter_sms_inbox.dart';
25 |
26 | void main() {
27 | SmsQuery query = SmsQuery();
28 | }
29 | ```
30 |
31 | ## Getting all SMS messages
32 |
33 | `List messages = await query.getAllSms;`
34 |
35 | ## Filtering SMS messages
36 | The method `querySms` from the `SmsQuery` class returns a list of sms depending of the supplied parameters. For example, for querying all the sms messages sent and received write the followed code:
37 |
38 | ```
39 | await query.querySms(
40 | kinds: [SmsQueryKind.inbox, SmsQueryKind.sent],
41 | );
42 | ```
43 | You can also query all the sms messages sent and received from a specific contact:
44 |
45 | ```
46 | await query.querySms(
47 | address: getContactAddress()
48 | );
49 | ```
50 |
--------------------------------------------------------------------------------
/example/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 |
--------------------------------------------------------------------------------
/example/ios/Runner/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | flutter_sms_inbox_example
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | $(FLUTTER_BUILD_NAME)
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | $(FLUTTER_BUILD_NUMBER)
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UISupportedInterfaceOrientations
30 |
31 | UIInterfaceOrientationPortrait
32 | UIInterfaceOrientationLandscapeLeft
33 | UIInterfaceOrientationLandscapeRight
34 |
35 | UISupportedInterfaceOrientations~ipad
36 |
37 | UIInterfaceOrientationPortrait
38 | UIInterfaceOrientationPortraitUpsideDown
39 | UIInterfaceOrientationLandscapeLeft
40 | UIInterfaceOrientationLandscapeRight
41 |
42 | UIViewControllerBasedStatusBarAppearance
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/example/android/app/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id "com.android.application"
3 | id "dev.flutter.flutter-gradle-plugin"
4 | }
5 |
6 | def localProperties = new Properties()
7 | def localPropertiesFile = rootProject.file('local.properties')
8 | if (localPropertiesFile.exists()) {
9 | localPropertiesFile.withReader('UTF-8') { reader ->
10 | localProperties.load(reader)
11 | }
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 | android {
25 | compileSdkVersion flutter.compileSdkVersion
26 |
27 | compileOptions {
28 | sourceCompatibility JavaVersion.VERSION_1_8
29 | targetCompatibility JavaVersion.VERSION_1_8
30 | }
31 |
32 | defaultConfig {
33 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
34 | applicationId "com.juliusgithaiga.flutter_sms_inbox_example"
35 | minSdkVersion flutter.minSdkVersion
36 | targetSdkVersion flutter.targetSdkVersion
37 | versionCode flutterVersionCode.toInteger()
38 | versionName flutterVersionName
39 | }
40 |
41 | buildTypes {
42 | release {
43 | // TODO: Add your own signing config for the release build.
44 | // Signing with the debug keys for now, so `flutter run --release` works.
45 | signingConfig signingConfigs.debug
46 | }
47 | }
48 |
49 | namespace "com.juliusgithaiga.flutter_sms_inbox_example"
50 | }
51 |
52 | flutter {
53 | source '../..'
54 | }
55 |
--------------------------------------------------------------------------------
/example/android/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
9 |
17 |
21 |
25 |
26 |
27 |
28 |
29 |
30 |
32 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/android/src/main/java/com/juliusgithaiga/flutter_sms_inbox/SmsQuery.java:
--------------------------------------------------------------------------------
1 | package com.juliusgithaiga.flutter_sms_inbox;
2 |
3 | import android.content.Context;
4 | import androidx.annotation.NonNull;
5 | import io.flutter.plugin.common.MethodCall;
6 | import io.flutter.plugin.common.MethodChannel;
7 |
8 | public class SmsQuery implements MethodChannel.MethodCallHandler {
9 |
10 | private final Context applicationContext;
11 |
12 | SmsQuery(Context applicationContext) {
13 | this.applicationContext = applicationContext;
14 | }
15 |
16 | @Override
17 | public void onMethodCall(@NonNull MethodCall call, @NonNull MethodChannel.Result result) {
18 | int start = 0;
19 | int count = -1;
20 | int threadId = -1;
21 | String address = null;
22 | SmsQueryRequest request;
23 | switch (call.method) {
24 | case "getInbox":
25 | request = SmsQueryRequest.Inbox;
26 | break;
27 | case "getSent":
28 | request = SmsQueryRequest.Sent;
29 | break;
30 | case "getDraft":
31 | request = SmsQueryRequest.Draft;
32 | break;
33 | default:
34 | result.notImplemented();
35 | return;
36 | }
37 |
38 | if (call.hasArgument("start")) {
39 | start = call.argument("start");
40 | }
41 | if (call.hasArgument("count")) {
42 | count = call.argument("count");
43 | }
44 | if (call.hasArgument("thread_id")) {
45 | threadId = call.argument("thread_id");
46 | }
47 | if (call.hasArgument("address")) {
48 | address = call.argument("address");
49 | }
50 |
51 | SmsQueryHandler smsQueryHandler = new SmsQueryHandler(
52 | this.applicationContext, result, request, start, count, threadId, address);
53 | smsQueryHandler.handle();
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/android/src/main/java/com/juliusgithaiga/flutter_sms_inbox/FlutterSmsInboxPlugin.java:
--------------------------------------------------------------------------------
1 | package com.juliusgithaiga.flutter_sms_inbox;
2 |
3 | import android.content.Context;
4 | import androidx.annotation.NonNull;
5 | import io.flutter.embedding.engine.plugins.FlutterPlugin;
6 | import io.flutter.plugin.common.BinaryMessenger;
7 | import io.flutter.plugin.common.JSONMethodCodec;
8 | import io.flutter.plugin.common.MethodCall;
9 | import io.flutter.plugin.common.MethodChannel;
10 | import io.flutter.plugin.common.MethodChannel.MethodCallHandler;
11 | import io.flutter.plugin.common.MethodChannel.Result;
12 |
13 | /** FlutterSmsInboxPlugin */
14 | public class FlutterSmsInboxPlugin implements FlutterPlugin, MethodCallHandler {
15 | private static final String CHANNEL_QUERY = "plugins.juliusgithaiga.com/querySMS";
16 |
17 | private MethodChannel methodChannel;
18 | private MethodChannel querySmsChannel;
19 |
20 | @Override
21 | public void onAttachedToEngine(@NonNull FlutterPluginBinding binding) {
22 | onAttachedToEngine(binding.getApplicationContext(), binding.getBinaryMessenger());
23 | }
24 |
25 | private void onAttachedToEngine(Context appContext, BinaryMessenger messenger) {
26 | methodChannel = new MethodChannel(messenger, "flutter_sms_inbox");
27 | methodChannel.setMethodCallHandler(this);
28 |
29 | querySmsChannel = new MethodChannel(messenger, CHANNEL_QUERY, JSONMethodCodec.INSTANCE);
30 | querySmsChannel.setMethodCallHandler(new SmsQuery(appContext));
31 | }
32 |
33 | @Override
34 | public void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) {
35 | if (methodChannel != null) {
36 | methodChannel.setMethodCallHandler(null);
37 | methodChannel = null;
38 | }
39 |
40 | if (querySmsChannel != null) {
41 | querySmsChannel.setMethodCallHandler(null);
42 | querySmsChannel = null;
43 | }
44 | }
45 |
46 | @Override
47 | public void onMethodCall(@NonNull MethodCall call, @NonNull Result result) {
48 | if (call.method.equals("getPlatformVersion")) {
49 | result.success("Android " + android.os.Build.VERSION.RELEASE);
50 | } else {
51 | result.notImplemented();
52 | }
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/test/flutter_sms_inbox_test.mocks.dart:
--------------------------------------------------------------------------------
1 | // Mocks generated by Mockito 5.4.0 from annotations
2 | // in flutter_sms_inbox/test/flutter_sms_inbox_test.dart.
3 | // Do not manually edit this file.
4 |
5 | // ignore_for_file: no_leading_underscores_for_library_prefixes
6 | import 'dart:async' as _i3;
7 |
8 | import 'package:flutter_sms_inbox/flutter_sms_inbox.dart' as _i2;
9 | import 'package:mockito/mockito.dart' as _i1;
10 |
11 | // ignore_for_file: type=lint
12 | // ignore_for_file: avoid_redundant_argument_values
13 | // ignore_for_file: avoid_setters_without_getters
14 | // ignore_for_file: comment_references
15 | // ignore_for_file: implementation_imports
16 | // ignore_for_file: invalid_use_of_visible_for_testing_member
17 | // ignore_for_file: prefer_const_constructors
18 | // ignore_for_file: unnecessary_parenthesis
19 | // ignore_for_file: camel_case_types
20 | // ignore_for_file: subtype_of_sealed_class
21 |
22 | /// A class which mocks [SmsQuery].
23 | ///
24 | /// See the documentation for Mockito's code generation for more information.
25 | class MockSmsQuery extends _i1.Mock implements _i2.SmsQuery {
26 | @override
27 | _i3.Future> get getAllSms => (super.noSuchMethod(
28 | Invocation.getter(#getAllSms),
29 | returnValue: _i3.Future>.value(<_i2.SmsMessage>[]),
30 | returnValueForMissingStub:
31 | _i3.Future>.value(<_i2.SmsMessage>[]),
32 | ) as _i3.Future>);
33 | @override
34 | _i3.Future> querySms({
35 | int? start,
36 | int? count,
37 | String? address,
38 | int? threadId,
39 | List<_i2.SmsQueryKind>? kinds = const [_i2.SmsQueryKind.inbox],
40 | bool? sort = false,
41 | }) =>
42 | (super.noSuchMethod(
43 | Invocation.method(
44 | #querySms,
45 | [],
46 | {
47 | #start: start,
48 | #count: count,
49 | #address: address,
50 | #threadId: threadId,
51 | #kinds: kinds,
52 | #sort: sort,
53 | },
54 | ),
55 | returnValue: _i3.Future>.value(<_i2.SmsMessage>[]),
56 | returnValueForMissingStub:
57 | _i3.Future>.value(<_i2.SmsMessage>[]),
58 | ) as _i3.Future>);
59 | }
60 |
--------------------------------------------------------------------------------
/pubspec.yaml:
--------------------------------------------------------------------------------
1 | name: flutter_sms_inbox
2 | description: Flutter SMS Inbox Plugin (Android only). This library allows users to easily query inbox messages.
3 | homepage: https://github.com/jgithaiga/flutter_sms_inbox
4 | version: 1.0.4
5 |
6 | environment:
7 | sdk: ">=2.12.0 <4.0.0"
8 | flutter: ">=1.20.0"
9 |
10 | dependencies:
11 | flutter:
12 | sdk: flutter
13 |
14 | dev_dependencies:
15 | build_runner: ^2.4.15
16 | flutter_lints: ^5.0.0
17 | flutter_test:
18 | sdk: flutter
19 | mockito: ^5.4.0
20 | test: ^1.16.5
21 |
22 | # For information on the generic Dart part of this file, see the
23 | # following page: https://dart.dev/tools/pub/pubspec
24 |
25 | # The following section is specific to Flutter.
26 | flutter:
27 | # This section identifies this Flutter project as a plugin project.
28 | # The 'pluginClass' and Android 'package' identifiers should not ordinarily
29 | # be modified. They are used by the tooling to maintain consistency when
30 | # adding or updating assets for this project.
31 | plugin:
32 | platforms:
33 | android:
34 | package: com.juliusgithaiga.flutter_sms_inbox
35 | pluginClass: FlutterSmsInboxPlugin
36 |
37 | # To add assets to your plugin package, add an assets section, like this:
38 | # assets:
39 | # - images/a_dot_burr.jpeg
40 | # - images/a_dot_ham.jpeg
41 | #
42 | # For details regarding assets in packages, see
43 | # https://flutter.dev/assets-and-images/#from-packages
44 | #
45 | # An image asset can refer to one or more resolution-specific "variants", see
46 | # https://flutter.dev/assets-and-images/#resolution-aware.
47 |
48 | # To add custom fonts to your plugin package, add a fonts section here,
49 | # in this "flutter" section. Each entry in this list should have a
50 | # "family" key with the font family name, and a "fonts" key with a
51 | # list giving the asset and other descriptors for the font. For
52 | # example:
53 | # fonts:
54 | # - family: Schyler
55 | # fonts:
56 | # - asset: fonts/Schyler-Regular.ttf
57 | # - asset: fonts/Schyler-Italic.ttf
58 | # style: italic
59 | # - family: Trajan Pro
60 | # fonts:
61 | # - asset: fonts/TrajanPro.ttf
62 | # - asset: fonts/TrajanPro_Bold.ttf
63 | # weight: 700
64 | #
65 | # For details regarding fonts in packages, see
66 | # https://flutter.dev/custom-fonts/#from-packages
67 |
--------------------------------------------------------------------------------
/lib/src/sms.message.dart:
--------------------------------------------------------------------------------
1 | part of flutter_sms_inbox;
2 |
3 | /// Message
4 | class SmsMessage implements Comparable {
5 | int? id;
6 | int? threadId;
7 | String? address;
8 | String? body;
9 | bool? read;
10 | DateTime? date;
11 | int? subId;
12 | DateTime? dateSent;
13 | SmsMessageKind? kind;
14 | SmsMessageState _state = SmsMessageState.none;
15 | final StreamController _stateStreamController =
16 | StreamController();
17 |
18 | SmsMessage.fromJson(Map data) {
19 | address = data["address"];
20 | body = data["body"];
21 | subId = data["sub_id"];
22 |
23 | if (data.containsKey("_id")) {
24 | id = data["_id"];
25 | }
26 | if (data.containsKey("thread_id")) {
27 | threadId = data["thread_id"];
28 | }
29 | if (data.containsKey("read")) {
30 | read = (data["read"].toInt() == 1);
31 | }
32 | if (data.containsKey("kind")) {
33 | kind = data["kind"];
34 | }
35 | if (data.containsKey("date")) {
36 | date = DateTime.fromMillisecondsSinceEpoch(data["date"]);
37 | }
38 | if (data.containsKey("date_sent")) {
39 | dateSent = DateTime.fromMillisecondsSinceEpoch(data["date_sent"]);
40 | }
41 | }
42 |
43 | /// Convert SMS to map
44 | Map get toMap {
45 | Map data = {};
46 | if (address != null) {
47 | data["address"] = address;
48 | }
49 | if (body != null) {
50 | data["body"] = body;
51 | }
52 | if (id != null) {
53 | data["_id"] = id;
54 | }
55 | if (subId != null) {
56 | data["sub_id"] = subId;
57 | }
58 | if (threadId != null) {
59 | data["thread_id"] = threadId;
60 | }
61 | if (read != null) {
62 | data["read"] = read;
63 | }
64 | if (date != null) {
65 | data["date"] = date!.millisecondsSinceEpoch;
66 | }
67 | if (dateSent != null) {
68 | data["dateSent"] = dateSent!.millisecondsSinceEpoch;
69 | }
70 | return data;
71 | }
72 |
73 | /// Getters
74 | String? get sender => address;
75 | bool? get isRead => read;
76 | SmsMessageState get state => _state;
77 | Stream get onStateChanged => _stateStreamController.stream;
78 |
79 | /// Setters
80 | set state(SmsMessageState state) {
81 | if (_state != state) {
82 | _state = state;
83 | _stateStreamController.add(state);
84 | }
85 | }
86 |
87 | @override
88 | int compareTo(SmsMessage other) {
89 | return other.id! - id!;
90 | }
91 | }
92 |
--------------------------------------------------------------------------------
/example/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 |
--------------------------------------------------------------------------------
/lib/src/sms.query.dart:
--------------------------------------------------------------------------------
1 | part of flutter_sms_inbox;
2 |
3 | class SmsQuery {
4 | static SmsQuery? instance;
5 | final MethodChannel _channel;
6 |
7 | factory SmsQuery() {
8 | if (instance == null) {
9 | const MethodChannel methodChannel = MethodChannel(
10 | "plugins.juliusgithaiga.com/querySMS",
11 | JSONMethodCodec(),
12 | );
13 | instance = SmsQuery._private(methodChannel);
14 | }
15 | return instance!;
16 | }
17 |
18 | SmsQuery._private(this._channel);
19 |
20 | /// Wrapper to query one kind at a time
21 | Future> _querySms({
22 | int? start,
23 | int? count,
24 | String? address,
25 | int? threadId,
26 | SmsQueryKind kind = SmsQueryKind.inbox,
27 | }) async {
28 | Map arguments = {};
29 | if (start != null && start >= 0) {
30 | arguments["start"] = start;
31 | }
32 | if (count != null && count > 0) {
33 | arguments["count"] = count;
34 | }
35 | if (address != null && address.isNotEmpty) {
36 | arguments["address"] = address;
37 | }
38 | if (threadId != null && threadId >= 0) {
39 | arguments["thread_id"] = threadId;
40 | }
41 |
42 | String function;
43 | SmsMessageKind msgKind;
44 | if (kind == SmsQueryKind.inbox) {
45 | function = "getInbox";
46 | msgKind = SmsMessageKind.received;
47 | } else if (kind == SmsQueryKind.sent) {
48 | function = "getSent";
49 | msgKind = SmsMessageKind.sent;
50 | } else {
51 | function = "getDraft";
52 | msgKind = SmsMessageKind.draft;
53 | }
54 |
55 | var snapshot = await _channel.invokeMethod(function, arguments);
56 | return snapshot.map(
57 | (var data) {
58 | var msg = SmsMessage.fromJson(data);
59 | msg.kind = msgKind;
60 | return msg;
61 | },
62 | ).toList();
63 | }
64 |
65 | /// Query a list of SMS
66 | Future> querySms({
67 | int? start,
68 | int? count,
69 | String? address,
70 | int? threadId,
71 | List kinds = const [SmsQueryKind.inbox],
72 | bool sort = false,
73 | }) async {
74 | List result = [];
75 | for (var kind in kinds) {
76 | result.addAll(await _querySms(
77 | start: start,
78 | count: count,
79 | address: address,
80 | threadId: threadId,
81 | kind: kind,
82 | ));
83 | }
84 |
85 | if (sort == true) {
86 | result.sort((a, b) => a.compareTo(b));
87 | }
88 |
89 | return (result);
90 | }
91 |
92 | /// Get all SMS
93 | Future> get getAllSms async {
94 | return querySms(kinds: [
95 | SmsQueryKind.sent,
96 | SmsQueryKind.inbox,
97 | SmsQueryKind.draft,
98 | ]);
99 | }
100 | }
101 |
--------------------------------------------------------------------------------
/example/lib/main.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_sms_inbox/flutter_sms_inbox.dart';
3 | import 'package:permission_handler/permission_handler.dart';
4 |
5 | void main() {
6 | runApp(const MyApp());
7 | }
8 |
9 | class MyApp extends StatefulWidget {
10 | const MyApp({Key? key}) : super(key: key);
11 |
12 | @override
13 | State createState() => _MyAppState();
14 | }
15 |
16 | class _MyAppState extends State {
17 | final SmsQuery _query = SmsQuery();
18 | List _messages = [];
19 |
20 | @override
21 | void initState() {
22 | super.initState();
23 | }
24 |
25 | @override
26 | Widget build(BuildContext context) {
27 | return MaterialApp(
28 | title: 'Flutter SMS Inbox App',
29 | theme: ThemeData(
30 | primarySwatch: Colors.teal,
31 | ),
32 | home: Scaffold(
33 | appBar: AppBar(
34 | title: const Text('SMS Inbox Example'),
35 | ),
36 | body: Container(
37 | padding: const EdgeInsets.all(10.0),
38 | child: _messages.isNotEmpty
39 | ? _MessagesListView(
40 | messages: _messages,
41 | )
42 | : Center(
43 | child: Text(
44 | 'No messages to show.\n Tap refresh button...',
45 | style: Theme.of(context).textTheme.headlineSmall,
46 | textAlign: TextAlign.center,
47 | ),
48 | ),
49 | ),
50 | floatingActionButton: FloatingActionButton(
51 | onPressed: () async {
52 | var permission = await Permission.sms.status;
53 | if (permission.isGranted) {
54 | final messages = await _query.querySms(
55 | kinds: [
56 | SmsQueryKind.inbox,
57 | SmsQueryKind.sent,
58 | ],
59 | // address: '+254712345789',
60 | count: 10,
61 | );
62 | debugPrint('sms inbox messages: ${messages.length}');
63 |
64 | setState(() => _messages = messages);
65 | } else {
66 | await Permission.sms.request();
67 | }
68 | },
69 | child: const Icon(Icons.refresh),
70 | ),
71 | ),
72 | );
73 | }
74 | }
75 |
76 | class _MessagesListView extends StatelessWidget {
77 | const _MessagesListView({
78 | Key? key,
79 | required this.messages,
80 | }) : super(key: key);
81 |
82 | final List messages;
83 |
84 | @override
85 | Widget build(BuildContext context) {
86 | return ListView.builder(
87 | shrinkWrap: true,
88 | itemCount: messages.length,
89 | itemBuilder: (BuildContext context, int i) {
90 | var message = messages[i];
91 |
92 | return ListTile(
93 | title: Text('${message.sender} [${message.date}]'),
94 | subtitle: Text('${message.body}'),
95 | );
96 | },
97 | );
98 | }
99 | }
100 |
--------------------------------------------------------------------------------
/example/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 |
--------------------------------------------------------------------------------
/android/src/main/java/com/juliusgithaiga/flutter_sms_inbox/SmsQueryHandler.java:
--------------------------------------------------------------------------------
1 | package com.juliusgithaiga.flutter_sms_inbox;
2 |
3 | import android.content.Context;
4 | import android.database.Cursor;
5 | import org.json.JSONException;
6 | import org.json.JSONObject;
7 | import java.util.ArrayList;
8 | import io.flutter.plugin.common.MethodChannel;
9 |
10 | public class SmsQueryHandler {
11 |
12 | private final Context applicationContext;
13 | private final MethodChannel.Result result;
14 | private final SmsQueryRequest request;
15 | private final String address;
16 | private final int threadId;
17 | private int start;
18 | private int count;
19 |
20 | SmsQueryHandler(Context applicationContext, MethodChannel.Result result, SmsQueryRequest request,
21 | int start, int count, int threadId, String address) {
22 | this.applicationContext = applicationContext;
23 | this.result = result;
24 | this.request = request;
25 | this.threadId = threadId;
26 | this.address = address;
27 | this.start = start;
28 | this.count = count;
29 | }
30 |
31 | void handle() {
32 | ArrayList list = new ArrayList<>();
33 | Cursor cursor = this.applicationContext.getContentResolver().query(this.request.toUri(), null, null, null, null);
34 | if (cursor == null) {
35 | result.error("no_cursor", "flutter_sms_inbox plugin requires cursor to resolve content", null);
36 | return;
37 | }
38 |
39 | if (!cursor.moveToFirst()) {
40 | cursor.close();
41 | result.success(list);
42 | return;
43 | }
44 |
45 | do {
46 | JSONObject obj = readSms(cursor);
47 | try {
48 | if (threadId >= 0 && obj.getInt("thread_id") != threadId) {
49 | continue;
50 | }
51 | if (address != null && !obj.getString("address").equals(address)) {
52 | continue;
53 | }
54 | } catch (JSONException e) {
55 | e.printStackTrace();
56 | }
57 |
58 | if (start > 0) {
59 | start--;
60 | continue;
61 | }
62 | list.add(obj);
63 | if (count > 0) {
64 | count--;
65 | }
66 | } while (cursor.moveToNext() && count != 0);
67 | cursor.close();
68 | result.success(list);
69 | }
70 |
71 | private JSONObject readSms(Cursor cursor) {
72 | JSONObject res = new JSONObject();
73 | for (int i = 0; i < cursor.getColumnCount(); i++) {
74 | try {
75 | if (cursor.getColumnName(i).equals("address") || cursor.getColumnName(i).equals("body")) {
76 | res.put(cursor.getColumnName(i), cursor.getString(i));
77 | } else if (cursor.getColumnName(i).equals("date") || cursor.getColumnName(i).equals("date_sent")) {
78 | res.put(cursor.getColumnName(i), cursor.getLong(i));
79 | } else {
80 | res.put(cursor.getColumnName(i), cursor.getInt(i));
81 | }
82 | } catch (JSONException e) {
83 | e.printStackTrace();
84 | }
85 | }
86 | return res;
87 | }
88 |
89 | }
90 |
--------------------------------------------------------------------------------
/example/pubspec.yaml:
--------------------------------------------------------------------------------
1 | name: flutter_sms_inbox_example
2 | description: Demonstrates how to use the flutter_sms_inbox plugin.
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 | environment:
9 | sdk: ">=2.12.0 <4.0.0"
10 |
11 | # Dependencies specify other packages that your package needs in order to work.
12 | # To automatically upgrade your package dependencies to the latest versions
13 | # consider running `flutter pub upgrade --major-versions`. Alternatively,
14 | # dependencies can be manually updated by changing the version numbers below to
15 | # the latest version available on pub.dev. To see which dependencies have newer
16 | # versions available, run `flutter pub outdated`.
17 | dependencies:
18 | flutter:
19 | sdk: flutter
20 |
21 | flutter_sms_inbox:
22 | # When depending on this package from a real application you should use:
23 | # flutter_sms_inbox: ^x.y.z
24 | # See https://dart.dev/tools/pub/dependencies#version-constraints
25 | # The example app is bundled with the plugin so we use a path dependency on
26 | # the parent directory to use the current plugin's version.
27 | path: ../
28 |
29 | # Use to request app permissions
30 | permission_handler: ^11.4.0
31 |
32 | dev_dependencies:
33 | flutter_test:
34 | sdk: flutter
35 |
36 | # The "flutter_lints" package below contains a set of recommended lints to
37 | # encourage good coding practices. The lint set provided by the package is
38 | # activated in the `analysis_options.yaml` file located at the root of your
39 | # package. See that file for information about deactivating specific lint
40 | # rules and activating additional ones.
41 | flutter_lints: ^5.0.0
42 |
43 | # For information on the generic Dart part of this file, see the
44 | # following page: https://dart.dev/tools/pub/pubspec
45 |
46 | # The following section is specific to Flutter.
47 | flutter:
48 |
49 | # The following line ensures that the Material Icons font is
50 | # included with your application, so that you can use the icons in
51 | # the material Icons class.
52 | uses-material-design: true
53 |
54 | # To add assets to your application, add an assets section, like this:
55 | # assets:
56 | # - images/a_dot_burr.jpeg
57 | # - images/a_dot_ham.jpeg
58 |
59 | # An image asset can refer to one or more resolution-specific "variants", see
60 | # https://flutter.dev/assets-and-images/#resolution-aware.
61 |
62 | # For details regarding adding assets from package dependencies, see
63 | # https://flutter.dev/assets-and-images/#from-packages
64 |
65 | # To add custom fonts to your application, add a fonts section here,
66 | # in this "flutter" section. Each entry in this list should have a
67 | # "family" key with the font family name, and a "fonts" key with a
68 | # list giving the asset and other descriptors for the font. For
69 | # example:
70 | # fonts:
71 | # - family: Schyler
72 | # fonts:
73 | # - asset: fonts/Schyler-Regular.ttf
74 | # - asset: fonts/Schyler-Italic.ttf
75 | # style: italic
76 | # - family: Trajan Pro
77 | # fonts:
78 | # - asset: fonts/TrajanPro.ttf
79 | # - asset: fonts/TrajanPro_Bold.ttf
80 | # weight: 700
81 | #
82 | # For details regarding fonts from package dependencies,
83 | # see https://flutter.dev/custom-fonts/#from-packages
84 |
--------------------------------------------------------------------------------
/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
39 |
40 |
41 |
42 |
43 |
44 |
54 |
56 |
62 |
63 |
64 |
65 |
66 |
67 |
73 |
75 |
81 |
82 |
83 |
84 |
86 |
87 |
90 |
91 |
92 |
--------------------------------------------------------------------------------
/example/pubspec.lock:
--------------------------------------------------------------------------------
1 | # Generated by pub
2 | # See https://dart.dev/tools/pub/glossary#lockfile
3 | packages:
4 | async:
5 | dependency: transitive
6 | description:
7 | name: async
8 | sha256: d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63
9 | url: "https://pub.dev"
10 | source: hosted
11 | version: "2.12.0"
12 | boolean_selector:
13 | dependency: transitive
14 | description:
15 | name: boolean_selector
16 | sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea"
17 | url: "https://pub.dev"
18 | source: hosted
19 | version: "2.1.2"
20 | characters:
21 | dependency: transitive
22 | description:
23 | name: characters
24 | sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803
25 | url: "https://pub.dev"
26 | source: hosted
27 | version: "1.4.0"
28 | clock:
29 | dependency: transitive
30 | description:
31 | name: clock
32 | sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b
33 | url: "https://pub.dev"
34 | source: hosted
35 | version: "1.1.2"
36 | collection:
37 | dependency: transitive
38 | description:
39 | name: collection
40 | sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76"
41 | url: "https://pub.dev"
42 | source: hosted
43 | version: "1.19.1"
44 | fake_async:
45 | dependency: transitive
46 | description:
47 | name: fake_async
48 | sha256: "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc"
49 | url: "https://pub.dev"
50 | source: hosted
51 | version: "1.3.2"
52 | flutter:
53 | dependency: "direct main"
54 | description: flutter
55 | source: sdk
56 | version: "0.0.0"
57 | flutter_lints:
58 | dependency: "direct dev"
59 | description:
60 | name: flutter_lints
61 | sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1"
62 | url: "https://pub.dev"
63 | source: hosted
64 | version: "5.0.0"
65 | flutter_sms_inbox:
66 | dependency: "direct main"
67 | description:
68 | path: ".."
69 | relative: true
70 | source: path
71 | version: "1.0.3"
72 | flutter_test:
73 | dependency: "direct dev"
74 | description: flutter
75 | source: sdk
76 | version: "0.0.0"
77 | flutter_web_plugins:
78 | dependency: transitive
79 | description: flutter
80 | source: sdk
81 | version: "0.0.0"
82 | leak_tracker:
83 | dependency: transitive
84 | description:
85 | name: leak_tracker
86 | sha256: c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec
87 | url: "https://pub.dev"
88 | source: hosted
89 | version: "10.0.8"
90 | leak_tracker_flutter_testing:
91 | dependency: transitive
92 | description:
93 | name: leak_tracker_flutter_testing
94 | sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573
95 | url: "https://pub.dev"
96 | source: hosted
97 | version: "3.0.9"
98 | leak_tracker_testing:
99 | dependency: transitive
100 | description:
101 | name: leak_tracker_testing
102 | sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3"
103 | url: "https://pub.dev"
104 | source: hosted
105 | version: "3.0.1"
106 | lints:
107 | dependency: transitive
108 | description:
109 | name: lints
110 | sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7
111 | url: "https://pub.dev"
112 | source: hosted
113 | version: "5.1.1"
114 | matcher:
115 | dependency: transitive
116 | description:
117 | name: matcher
118 | sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2
119 | url: "https://pub.dev"
120 | source: hosted
121 | version: "0.12.17"
122 | material_color_utilities:
123 | dependency: transitive
124 | description:
125 | name: material_color_utilities
126 | sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec
127 | url: "https://pub.dev"
128 | source: hosted
129 | version: "0.11.1"
130 | meta:
131 | dependency: transitive
132 | description:
133 | name: meta
134 | sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c
135 | url: "https://pub.dev"
136 | source: hosted
137 | version: "1.16.0"
138 | path:
139 | dependency: transitive
140 | description:
141 | name: path
142 | sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5"
143 | url: "https://pub.dev"
144 | source: hosted
145 | version: "1.9.1"
146 | permission_handler:
147 | dependency: "direct main"
148 | description:
149 | name: permission_handler
150 | sha256: "59adad729136f01ea9e35a48f5d1395e25cba6cea552249ddbe9cf950f5d7849"
151 | url: "https://pub.dev"
152 | source: hosted
153 | version: "11.4.0"
154 | permission_handler_android:
155 | dependency: transitive
156 | description:
157 | name: permission_handler_android
158 | sha256: d3971dcdd76182a0c198c096b5db2f0884b0d4196723d21a866fc4cdea057ebc
159 | url: "https://pub.dev"
160 | source: hosted
161 | version: "12.1.0"
162 | permission_handler_apple:
163 | dependency: transitive
164 | description:
165 | name: permission_handler_apple
166 | sha256: f84a188e79a35c687c132a0a0556c254747a08561e99ab933f12f6ca71ef3c98
167 | url: "https://pub.dev"
168 | source: hosted
169 | version: "9.4.6"
170 | permission_handler_html:
171 | dependency: transitive
172 | description:
173 | name: permission_handler_html
174 | sha256: "38f000e83355abb3392140f6bc3030660cfaef189e1f87824facb76300b4ff24"
175 | url: "https://pub.dev"
176 | source: hosted
177 | version: "0.1.3+5"
178 | permission_handler_platform_interface:
179 | dependency: transitive
180 | description:
181 | name: permission_handler_platform_interface
182 | sha256: eb99b295153abce5d683cac8c02e22faab63e50679b937fa1bf67d58bb282878
183 | url: "https://pub.dev"
184 | source: hosted
185 | version: "4.3.0"
186 | permission_handler_windows:
187 | dependency: transitive
188 | description:
189 | name: permission_handler_windows
190 | sha256: "1a790728016f79a41216d88672dbc5df30e686e811ad4e698bfc51f76ad91f1e"
191 | url: "https://pub.dev"
192 | source: hosted
193 | version: "0.2.1"
194 | plugin_platform_interface:
195 | dependency: transitive
196 | description:
197 | name: plugin_platform_interface
198 | sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02"
199 | url: "https://pub.dev"
200 | source: hosted
201 | version: "2.1.8"
202 | sky_engine:
203 | dependency: transitive
204 | description: flutter
205 | source: sdk
206 | version: "0.0.0"
207 | source_span:
208 | dependency: transitive
209 | description:
210 | name: source_span
211 | sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c"
212 | url: "https://pub.dev"
213 | source: hosted
214 | version: "1.10.1"
215 | stack_trace:
216 | dependency: transitive
217 | description:
218 | name: stack_trace
219 | sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1"
220 | url: "https://pub.dev"
221 | source: hosted
222 | version: "1.12.1"
223 | stream_channel:
224 | dependency: transitive
225 | description:
226 | name: stream_channel
227 | sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d"
228 | url: "https://pub.dev"
229 | source: hosted
230 | version: "2.1.4"
231 | string_scanner:
232 | dependency: transitive
233 | description:
234 | name: string_scanner
235 | sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43"
236 | url: "https://pub.dev"
237 | source: hosted
238 | version: "1.4.1"
239 | term_glyph:
240 | dependency: transitive
241 | description:
242 | name: term_glyph
243 | sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e"
244 | url: "https://pub.dev"
245 | source: hosted
246 | version: "1.2.2"
247 | test_api:
248 | dependency: transitive
249 | description:
250 | name: test_api
251 | sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd
252 | url: "https://pub.dev"
253 | source: hosted
254 | version: "0.7.4"
255 | vector_math:
256 | dependency: transitive
257 | description:
258 | name: vector_math
259 | sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803"
260 | url: "https://pub.dev"
261 | source: hosted
262 | version: "2.1.4"
263 | vm_service:
264 | dependency: transitive
265 | description:
266 | name: vm_service
267 | sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14"
268 | url: "https://pub.dev"
269 | source: hosted
270 | version: "14.3.1"
271 | web:
272 | dependency: transitive
273 | description:
274 | name: web
275 | sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a"
276 | url: "https://pub.dev"
277 | source: hosted
278 | version: "1.1.1"
279 | sdks:
280 | dart: ">=3.7.0-0 <4.0.0"
281 | flutter: ">=3.24.0"
282 |
--------------------------------------------------------------------------------
/example/ios/Runner.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
11 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
12 | 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
13 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
14 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
15 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
16 | /* End PBXBuildFile section */
17 |
18 | /* Begin PBXCopyFilesBuildPhase section */
19 | 9705A1C41CF9048500538489 /* Embed Frameworks */ = {
20 | isa = PBXCopyFilesBuildPhase;
21 | buildActionMask = 2147483647;
22 | dstPath = "";
23 | dstSubfolderSpec = 10;
24 | files = (
25 | );
26 | name = "Embed Frameworks";
27 | runOnlyForDeploymentPostprocessing = 0;
28 | };
29 | /* End PBXCopyFilesBuildPhase section */
30 |
31 | /* Begin PBXFileReference section */
32 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; };
33 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; };
34 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; };
35 | 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; };
36 | 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
37 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; };
38 | 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; };
39 | 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; };
40 | 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
41 | 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
42 | 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
43 | 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
44 | 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
45 | /* End PBXFileReference section */
46 |
47 | /* Begin PBXFrameworksBuildPhase section */
48 | 97C146EB1CF9000F007C117D /* Frameworks */ = {
49 | isa = PBXFrameworksBuildPhase;
50 | buildActionMask = 2147483647;
51 | files = (
52 | );
53 | runOnlyForDeploymentPostprocessing = 0;
54 | };
55 | /* End PBXFrameworksBuildPhase section */
56 |
57 | /* Begin PBXGroup section */
58 | 9740EEB11CF90186004384FC /* Flutter */ = {
59 | isa = PBXGroup;
60 | children = (
61 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
62 | 9740EEB21CF90195004384FC /* Debug.xcconfig */,
63 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
64 | 9740EEB31CF90195004384FC /* Generated.xcconfig */,
65 | );
66 | name = Flutter;
67 | sourceTree = "";
68 | };
69 | 97C146E51CF9000F007C117D = {
70 | isa = PBXGroup;
71 | children = (
72 | 9740EEB11CF90186004384FC /* Flutter */,
73 | 97C146F01CF9000F007C117D /* Runner */,
74 | 97C146EF1CF9000F007C117D /* Products */,
75 | );
76 | sourceTree = "";
77 | };
78 | 97C146EF1CF9000F007C117D /* Products */ = {
79 | isa = PBXGroup;
80 | children = (
81 | 97C146EE1CF9000F007C117D /* Runner.app */,
82 | );
83 | name = Products;
84 | sourceTree = "";
85 | };
86 | 97C146F01CF9000F007C117D /* Runner */ = {
87 | isa = PBXGroup;
88 | children = (
89 | 97C146FA1CF9000F007C117D /* Main.storyboard */,
90 | 97C146FD1CF9000F007C117D /* Assets.xcassets */,
91 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
92 | 97C147021CF9000F007C117D /* Info.plist */,
93 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
94 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
95 | 74858FAE1ED2DC5600515810 /* AppDelegate.swift */,
96 | 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */,
97 | );
98 | path = Runner;
99 | sourceTree = "";
100 | };
101 | /* End PBXGroup section */
102 |
103 | /* Begin PBXNativeTarget section */
104 | 97C146ED1CF9000F007C117D /* Runner */ = {
105 | isa = PBXNativeTarget;
106 | buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
107 | buildPhases = (
108 | 9740EEB61CF901F6004384FC /* Run Script */,
109 | 97C146EA1CF9000F007C117D /* Sources */,
110 | 97C146EB1CF9000F007C117D /* Frameworks */,
111 | 97C146EC1CF9000F007C117D /* Resources */,
112 | 9705A1C41CF9048500538489 /* Embed Frameworks */,
113 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */,
114 | );
115 | buildRules = (
116 | );
117 | dependencies = (
118 | );
119 | name = Runner;
120 | productName = Runner;
121 | productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
122 | productType = "com.apple.product-type.application";
123 | };
124 | /* End PBXNativeTarget section */
125 |
126 | /* Begin PBXProject section */
127 | 97C146E61CF9000F007C117D /* Project object */ = {
128 | isa = PBXProject;
129 | attributes = {
130 | LastUpgradeCheck = 1020;
131 | ORGANIZATIONNAME = "";
132 | TargetAttributes = {
133 | 97C146ED1CF9000F007C117D = {
134 | CreatedOnToolsVersion = 7.3.1;
135 | LastSwiftMigration = 1100;
136 | };
137 | };
138 | };
139 | buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
140 | compatibilityVersion = "Xcode 9.3";
141 | developmentRegion = en;
142 | hasScannedForEncodings = 0;
143 | knownRegions = (
144 | en,
145 | Base,
146 | );
147 | mainGroup = 97C146E51CF9000F007C117D;
148 | productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
149 | projectDirPath = "";
150 | projectRoot = "";
151 | targets = (
152 | 97C146ED1CF9000F007C117D /* Runner */,
153 | );
154 | };
155 | /* End PBXProject section */
156 |
157 | /* Begin PBXResourcesBuildPhase section */
158 | 97C146EC1CF9000F007C117D /* Resources */ = {
159 | isa = PBXResourcesBuildPhase;
160 | buildActionMask = 2147483647;
161 | files = (
162 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
163 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
164 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
165 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
166 | );
167 | runOnlyForDeploymentPostprocessing = 0;
168 | };
169 | /* End PBXResourcesBuildPhase section */
170 |
171 | /* Begin PBXShellScriptBuildPhase section */
172 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
173 | isa = PBXShellScriptBuildPhase;
174 | buildActionMask = 2147483647;
175 | files = (
176 | );
177 | inputPaths = (
178 | );
179 | name = "Thin Binary";
180 | outputPaths = (
181 | );
182 | runOnlyForDeploymentPostprocessing = 0;
183 | shellPath = /bin/sh;
184 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
185 | };
186 | 9740EEB61CF901F6004384FC /* Run Script */ = {
187 | isa = PBXShellScriptBuildPhase;
188 | buildActionMask = 2147483647;
189 | files = (
190 | );
191 | inputPaths = (
192 | );
193 | name = "Run Script";
194 | outputPaths = (
195 | );
196 | runOnlyForDeploymentPostprocessing = 0;
197 | shellPath = /bin/sh;
198 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
199 | };
200 | /* End PBXShellScriptBuildPhase section */
201 |
202 | /* Begin PBXSourcesBuildPhase section */
203 | 97C146EA1CF9000F007C117D /* Sources */ = {
204 | isa = PBXSourcesBuildPhase;
205 | buildActionMask = 2147483647;
206 | files = (
207 | 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */,
208 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
209 | );
210 | runOnlyForDeploymentPostprocessing = 0;
211 | };
212 | /* End PBXSourcesBuildPhase section */
213 |
214 | /* Begin PBXVariantGroup section */
215 | 97C146FA1CF9000F007C117D /* Main.storyboard */ = {
216 | isa = PBXVariantGroup;
217 | children = (
218 | 97C146FB1CF9000F007C117D /* Base */,
219 | );
220 | name = Main.storyboard;
221 | sourceTree = "";
222 | };
223 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
224 | isa = PBXVariantGroup;
225 | children = (
226 | 97C147001CF9000F007C117D /* Base */,
227 | );
228 | name = LaunchScreen.storyboard;
229 | sourceTree = "";
230 | };
231 | /* End PBXVariantGroup section */
232 |
233 | /* Begin XCBuildConfiguration section */
234 | 249021D3217E4FDB00AE95B9 /* Profile */ = {
235 | isa = XCBuildConfiguration;
236 | buildSettings = {
237 | ALWAYS_SEARCH_USER_PATHS = NO;
238 | CLANG_ANALYZER_NONNULL = YES;
239 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
240 | CLANG_CXX_LIBRARY = "libc++";
241 | CLANG_ENABLE_MODULES = YES;
242 | CLANG_ENABLE_OBJC_ARC = YES;
243 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
244 | CLANG_WARN_BOOL_CONVERSION = YES;
245 | CLANG_WARN_COMMA = YES;
246 | CLANG_WARN_CONSTANT_CONVERSION = YES;
247 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
248 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
249 | CLANG_WARN_EMPTY_BODY = YES;
250 | CLANG_WARN_ENUM_CONVERSION = YES;
251 | CLANG_WARN_INFINITE_RECURSION = YES;
252 | CLANG_WARN_INT_CONVERSION = YES;
253 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
254 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
255 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
256 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
257 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
258 | CLANG_WARN_STRICT_PROTOTYPES = YES;
259 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
260 | CLANG_WARN_UNREACHABLE_CODE = YES;
261 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
262 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
263 | COPY_PHASE_STRIP = NO;
264 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
265 | ENABLE_NS_ASSERTIONS = NO;
266 | ENABLE_STRICT_OBJC_MSGSEND = YES;
267 | GCC_C_LANGUAGE_STANDARD = gnu99;
268 | GCC_NO_COMMON_BLOCKS = YES;
269 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
270 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
271 | GCC_WARN_UNDECLARED_SELECTOR = YES;
272 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
273 | GCC_WARN_UNUSED_FUNCTION = YES;
274 | GCC_WARN_UNUSED_VARIABLE = YES;
275 | IPHONEOS_DEPLOYMENT_TARGET = 9.0;
276 | MTL_ENABLE_DEBUG_INFO = NO;
277 | SDKROOT = iphoneos;
278 | SUPPORTED_PLATFORMS = iphoneos;
279 | TARGETED_DEVICE_FAMILY = "1,2";
280 | VALIDATE_PRODUCT = YES;
281 | };
282 | name = Profile;
283 | };
284 | 249021D4217E4FDB00AE95B9 /* Profile */ = {
285 | isa = XCBuildConfiguration;
286 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
287 | buildSettings = {
288 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
289 | CLANG_ENABLE_MODULES = YES;
290 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
291 | ENABLE_BITCODE = NO;
292 | INFOPLIST_FILE = Runner/Info.plist;
293 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
294 | PRODUCT_BUNDLE_IDENTIFIER = com.juliusgithaiga.flutterSmsInboxExample;
295 | PRODUCT_NAME = "$(TARGET_NAME)";
296 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
297 | SWIFT_VERSION = 5.0;
298 | VERSIONING_SYSTEM = "apple-generic";
299 | };
300 | name = Profile;
301 | };
302 | 97C147031CF9000F007C117D /* Debug */ = {
303 | isa = XCBuildConfiguration;
304 | buildSettings = {
305 | ALWAYS_SEARCH_USER_PATHS = NO;
306 | CLANG_ANALYZER_NONNULL = YES;
307 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
308 | CLANG_CXX_LIBRARY = "libc++";
309 | CLANG_ENABLE_MODULES = YES;
310 | CLANG_ENABLE_OBJC_ARC = YES;
311 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
312 | CLANG_WARN_BOOL_CONVERSION = YES;
313 | CLANG_WARN_COMMA = YES;
314 | CLANG_WARN_CONSTANT_CONVERSION = YES;
315 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
316 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
317 | CLANG_WARN_EMPTY_BODY = YES;
318 | CLANG_WARN_ENUM_CONVERSION = YES;
319 | CLANG_WARN_INFINITE_RECURSION = YES;
320 | CLANG_WARN_INT_CONVERSION = YES;
321 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
322 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
323 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
324 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
325 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
326 | CLANG_WARN_STRICT_PROTOTYPES = YES;
327 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
328 | CLANG_WARN_UNREACHABLE_CODE = YES;
329 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
330 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
331 | COPY_PHASE_STRIP = NO;
332 | DEBUG_INFORMATION_FORMAT = dwarf;
333 | ENABLE_STRICT_OBJC_MSGSEND = YES;
334 | ENABLE_TESTABILITY = YES;
335 | GCC_C_LANGUAGE_STANDARD = gnu99;
336 | GCC_DYNAMIC_NO_PIC = NO;
337 | GCC_NO_COMMON_BLOCKS = YES;
338 | GCC_OPTIMIZATION_LEVEL = 0;
339 | GCC_PREPROCESSOR_DEFINITIONS = (
340 | "DEBUG=1",
341 | "$(inherited)",
342 | );
343 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
344 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
345 | GCC_WARN_UNDECLARED_SELECTOR = YES;
346 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
347 | GCC_WARN_UNUSED_FUNCTION = YES;
348 | GCC_WARN_UNUSED_VARIABLE = YES;
349 | IPHONEOS_DEPLOYMENT_TARGET = 9.0;
350 | MTL_ENABLE_DEBUG_INFO = YES;
351 | ONLY_ACTIVE_ARCH = YES;
352 | SDKROOT = iphoneos;
353 | TARGETED_DEVICE_FAMILY = "1,2";
354 | };
355 | name = Debug;
356 | };
357 | 97C147041CF9000F007C117D /* Release */ = {
358 | isa = XCBuildConfiguration;
359 | buildSettings = {
360 | ALWAYS_SEARCH_USER_PATHS = NO;
361 | CLANG_ANALYZER_NONNULL = YES;
362 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
363 | CLANG_CXX_LIBRARY = "libc++";
364 | CLANG_ENABLE_MODULES = YES;
365 | CLANG_ENABLE_OBJC_ARC = YES;
366 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
367 | CLANG_WARN_BOOL_CONVERSION = YES;
368 | CLANG_WARN_COMMA = YES;
369 | CLANG_WARN_CONSTANT_CONVERSION = YES;
370 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
371 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
372 | CLANG_WARN_EMPTY_BODY = YES;
373 | CLANG_WARN_ENUM_CONVERSION = YES;
374 | CLANG_WARN_INFINITE_RECURSION = YES;
375 | CLANG_WARN_INT_CONVERSION = YES;
376 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
377 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
378 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
379 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
380 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
381 | CLANG_WARN_STRICT_PROTOTYPES = YES;
382 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
383 | CLANG_WARN_UNREACHABLE_CODE = YES;
384 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
385 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
386 | COPY_PHASE_STRIP = NO;
387 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
388 | ENABLE_NS_ASSERTIONS = NO;
389 | ENABLE_STRICT_OBJC_MSGSEND = YES;
390 | GCC_C_LANGUAGE_STANDARD = gnu99;
391 | GCC_NO_COMMON_BLOCKS = YES;
392 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
393 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
394 | GCC_WARN_UNDECLARED_SELECTOR = YES;
395 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
396 | GCC_WARN_UNUSED_FUNCTION = YES;
397 | GCC_WARN_UNUSED_VARIABLE = YES;
398 | IPHONEOS_DEPLOYMENT_TARGET = 9.0;
399 | MTL_ENABLE_DEBUG_INFO = NO;
400 | SDKROOT = iphoneos;
401 | SUPPORTED_PLATFORMS = iphoneos;
402 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
403 | TARGETED_DEVICE_FAMILY = "1,2";
404 | VALIDATE_PRODUCT = YES;
405 | };
406 | name = Release;
407 | };
408 | 97C147061CF9000F007C117D /* Debug */ = {
409 | isa = XCBuildConfiguration;
410 | baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
411 | buildSettings = {
412 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
413 | CLANG_ENABLE_MODULES = YES;
414 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
415 | ENABLE_BITCODE = NO;
416 | INFOPLIST_FILE = Runner/Info.plist;
417 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
418 | PRODUCT_BUNDLE_IDENTIFIER = com.juliusgithaiga.flutterSmsInboxExample;
419 | PRODUCT_NAME = "$(TARGET_NAME)";
420 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
421 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
422 | SWIFT_VERSION = 5.0;
423 | VERSIONING_SYSTEM = "apple-generic";
424 | };
425 | name = Debug;
426 | };
427 | 97C147071CF9000F007C117D /* Release */ = {
428 | isa = XCBuildConfiguration;
429 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
430 | buildSettings = {
431 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
432 | CLANG_ENABLE_MODULES = YES;
433 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
434 | ENABLE_BITCODE = NO;
435 | INFOPLIST_FILE = Runner/Info.plist;
436 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
437 | PRODUCT_BUNDLE_IDENTIFIER = com.juliusgithaiga.flutterSmsInboxExample;
438 | PRODUCT_NAME = "$(TARGET_NAME)";
439 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
440 | SWIFT_VERSION = 5.0;
441 | VERSIONING_SYSTEM = "apple-generic";
442 | };
443 | name = Release;
444 | };
445 | /* End XCBuildConfiguration section */
446 |
447 | /* Begin XCConfigurationList section */
448 | 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
449 | isa = XCConfigurationList;
450 | buildConfigurations = (
451 | 97C147031CF9000F007C117D /* Debug */,
452 | 97C147041CF9000F007C117D /* Release */,
453 | 249021D3217E4FDB00AE95B9 /* Profile */,
454 | );
455 | defaultConfigurationIsVisible = 0;
456 | defaultConfigurationName = Release;
457 | };
458 | 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
459 | isa = XCConfigurationList;
460 | buildConfigurations = (
461 | 97C147061CF9000F007C117D /* Debug */,
462 | 97C147071CF9000F007C117D /* Release */,
463 | 249021D4217E4FDB00AE95B9 /* Profile */,
464 | );
465 | defaultConfigurationIsVisible = 0;
466 | defaultConfigurationName = Release;
467 | };
468 | /* End XCConfigurationList section */
469 | };
470 | rootObject = 97C146E61CF9000F007C117D /* Project object */;
471 | }
472 |
--------------------------------------------------------------------------------
/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 | sha256: dc27559385e905ad30838356c5f5d574014ba39872d732111cd07ac0beff4c57
9 | url: "https://pub.dev"
10 | source: hosted
11 | version: "80.0.0"
12 | analyzer:
13 | dependency: transitive
14 | description:
15 | name: analyzer
16 | sha256: "192d1c5b944e7e53b24b5586db760db934b177d4147c42fbca8c8c5f1eb8d11e"
17 | url: "https://pub.dev"
18 | source: hosted
19 | version: "7.3.0"
20 | args:
21 | dependency: transitive
22 | description:
23 | name: args
24 | sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04
25 | url: "https://pub.dev"
26 | source: hosted
27 | version: "2.7.0"
28 | async:
29 | dependency: transitive
30 | description:
31 | name: async
32 | sha256: d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63
33 | url: "https://pub.dev"
34 | source: hosted
35 | version: "2.12.0"
36 | boolean_selector:
37 | dependency: transitive
38 | description:
39 | name: boolean_selector
40 | sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea"
41 | url: "https://pub.dev"
42 | source: hosted
43 | version: "2.1.2"
44 | build:
45 | dependency: transitive
46 | description:
47 | name: build
48 | sha256: cef23f1eda9b57566c81e2133d196f8e3df48f244b317368d65c5943d91148f0
49 | url: "https://pub.dev"
50 | source: hosted
51 | version: "2.4.2"
52 | build_config:
53 | dependency: transitive
54 | description:
55 | name: build_config
56 | sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33"
57 | url: "https://pub.dev"
58 | source: hosted
59 | version: "1.1.2"
60 | build_daemon:
61 | dependency: transitive
62 | description:
63 | name: build_daemon
64 | sha256: "8e928697a82be082206edb0b9c99c5a4ad6bc31c9e9b8b2f291ae65cd4a25daa"
65 | url: "https://pub.dev"
66 | source: hosted
67 | version: "4.0.4"
68 | build_resolvers:
69 | dependency: transitive
70 | description:
71 | name: build_resolvers
72 | sha256: b9e4fda21d846e192628e7a4f6deda6888c36b5b69ba02ff291a01fd529140f0
73 | url: "https://pub.dev"
74 | source: hosted
75 | version: "2.4.4"
76 | build_runner:
77 | dependency: "direct dev"
78 | description:
79 | name: build_runner
80 | sha256: "058fe9dce1de7d69c4b84fada934df3e0153dd000758c4d65964d0166779aa99"
81 | url: "https://pub.dev"
82 | source: hosted
83 | version: "2.4.15"
84 | build_runner_core:
85 | dependency: transitive
86 | description:
87 | name: build_runner_core
88 | sha256: "22e3aa1c80e0ada3722fe5b63fd43d9c8990759d0a2cf489c8c5d7b2bdebc021"
89 | url: "https://pub.dev"
90 | source: hosted
91 | version: "8.0.0"
92 | built_collection:
93 | dependency: transitive
94 | description:
95 | name: built_collection
96 | sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100"
97 | url: "https://pub.dev"
98 | source: hosted
99 | version: "5.1.1"
100 | built_value:
101 | dependency: transitive
102 | description:
103 | name: built_value
104 | sha256: ea90e81dc4a25a043d9bee692d20ed6d1c4a1662a28c03a96417446c093ed6b4
105 | url: "https://pub.dev"
106 | source: hosted
107 | version: "8.9.5"
108 | characters:
109 | dependency: transitive
110 | description:
111 | name: characters
112 | sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803
113 | url: "https://pub.dev"
114 | source: hosted
115 | version: "1.4.0"
116 | checked_yaml:
117 | dependency: transitive
118 | description:
119 | name: checked_yaml
120 | sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff
121 | url: "https://pub.dev"
122 | source: hosted
123 | version: "2.0.3"
124 | clock:
125 | dependency: transitive
126 | description:
127 | name: clock
128 | sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b
129 | url: "https://pub.dev"
130 | source: hosted
131 | version: "1.1.2"
132 | code_builder:
133 | dependency: transitive
134 | description:
135 | name: code_builder
136 | sha256: "0ec10bf4a89e4c613960bf1e8b42c64127021740fb21640c29c909826a5eea3e"
137 | url: "https://pub.dev"
138 | source: hosted
139 | version: "4.10.1"
140 | collection:
141 | dependency: transitive
142 | description:
143 | name: collection
144 | sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76"
145 | url: "https://pub.dev"
146 | source: hosted
147 | version: "1.19.1"
148 | convert:
149 | dependency: transitive
150 | description:
151 | name: convert
152 | sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68
153 | url: "https://pub.dev"
154 | source: hosted
155 | version: "3.1.2"
156 | coverage:
157 | dependency: transitive
158 | description:
159 | name: coverage
160 | sha256: e3493833ea012784c740e341952298f1cc77f1f01b1bbc3eb4eecf6984fb7f43
161 | url: "https://pub.dev"
162 | source: hosted
163 | version: "1.11.1"
164 | crypto:
165 | dependency: transitive
166 | description:
167 | name: crypto
168 | sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855"
169 | url: "https://pub.dev"
170 | source: hosted
171 | version: "3.0.6"
172 | dart_style:
173 | dependency: transitive
174 | description:
175 | name: dart_style
176 | sha256: "27eb0ae77836989a3bc541ce55595e8ceee0992807f14511552a898ddd0d88ac"
177 | url: "https://pub.dev"
178 | source: hosted
179 | version: "3.0.1"
180 | fake_async:
181 | dependency: transitive
182 | description:
183 | name: fake_async
184 | sha256: "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc"
185 | url: "https://pub.dev"
186 | source: hosted
187 | version: "1.3.2"
188 | file:
189 | dependency: transitive
190 | description:
191 | name: file
192 | sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4
193 | url: "https://pub.dev"
194 | source: hosted
195 | version: "7.0.1"
196 | fixnum:
197 | dependency: transitive
198 | description:
199 | name: fixnum
200 | sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be
201 | url: "https://pub.dev"
202 | source: hosted
203 | version: "1.1.1"
204 | flutter:
205 | dependency: "direct main"
206 | description: flutter
207 | source: sdk
208 | version: "0.0.0"
209 | flutter_lints:
210 | dependency: "direct dev"
211 | description:
212 | name: flutter_lints
213 | sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1"
214 | url: "https://pub.dev"
215 | source: hosted
216 | version: "5.0.0"
217 | flutter_test:
218 | dependency: "direct dev"
219 | description: flutter
220 | source: sdk
221 | version: "0.0.0"
222 | frontend_server_client:
223 | dependency: transitive
224 | description:
225 | name: frontend_server_client
226 | sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694
227 | url: "https://pub.dev"
228 | source: hosted
229 | version: "4.0.0"
230 | glob:
231 | dependency: transitive
232 | description:
233 | name: glob
234 | sha256: c3f1ee72c96f8f78935e18aa8cecced9ab132419e8625dc187e1c2408efc20de
235 | url: "https://pub.dev"
236 | source: hosted
237 | version: "2.1.3"
238 | graphs:
239 | dependency: transitive
240 | description:
241 | name: graphs
242 | sha256: "741bbf84165310a68ff28fe9e727332eef1407342fca52759cb21ad8177bb8d0"
243 | url: "https://pub.dev"
244 | source: hosted
245 | version: "2.3.2"
246 | http:
247 | dependency: transitive
248 | description:
249 | name: http
250 | sha256: fe7ab022b76f3034adc518fb6ea04a82387620e19977665ea18d30a1cf43442f
251 | url: "https://pub.dev"
252 | source: hosted
253 | version: "1.3.0"
254 | http_multi_server:
255 | dependency: transitive
256 | description:
257 | name: http_multi_server
258 | sha256: aa6199f908078bb1c5efb8d8638d4ae191aac11b311132c3ef48ce352fb52ef8
259 | url: "https://pub.dev"
260 | source: hosted
261 | version: "3.2.2"
262 | http_parser:
263 | dependency: transitive
264 | description:
265 | name: http_parser
266 | sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571"
267 | url: "https://pub.dev"
268 | source: hosted
269 | version: "4.1.2"
270 | io:
271 | dependency: transitive
272 | description:
273 | name: io
274 | sha256: dfd5a80599cf0165756e3181807ed3e77daf6dd4137caaad72d0b7931597650b
275 | url: "https://pub.dev"
276 | source: hosted
277 | version: "1.0.5"
278 | js:
279 | dependency: transitive
280 | description:
281 | name: js
282 | sha256: "53385261521cc4a0c4658fd0ad07a7d14591cf8fc33abbceae306ddb974888dc"
283 | url: "https://pub.dev"
284 | source: hosted
285 | version: "0.7.2"
286 | json_annotation:
287 | dependency: transitive
288 | description:
289 | name: json_annotation
290 | sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1"
291 | url: "https://pub.dev"
292 | source: hosted
293 | version: "4.9.0"
294 | leak_tracker:
295 | dependency: transitive
296 | description:
297 | name: leak_tracker
298 | sha256: c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec
299 | url: "https://pub.dev"
300 | source: hosted
301 | version: "10.0.8"
302 | leak_tracker_flutter_testing:
303 | dependency: transitive
304 | description:
305 | name: leak_tracker_flutter_testing
306 | sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573
307 | url: "https://pub.dev"
308 | source: hosted
309 | version: "3.0.9"
310 | leak_tracker_testing:
311 | dependency: transitive
312 | description:
313 | name: leak_tracker_testing
314 | sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3"
315 | url: "https://pub.dev"
316 | source: hosted
317 | version: "3.0.1"
318 | lints:
319 | dependency: transitive
320 | description:
321 | name: lints
322 | sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7
323 | url: "https://pub.dev"
324 | source: hosted
325 | version: "5.1.1"
326 | logging:
327 | dependency: transitive
328 | description:
329 | name: logging
330 | sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61
331 | url: "https://pub.dev"
332 | source: hosted
333 | version: "1.3.0"
334 | matcher:
335 | dependency: transitive
336 | description:
337 | name: matcher
338 | sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2
339 | url: "https://pub.dev"
340 | source: hosted
341 | version: "0.12.17"
342 | material_color_utilities:
343 | dependency: transitive
344 | description:
345 | name: material_color_utilities
346 | sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec
347 | url: "https://pub.dev"
348 | source: hosted
349 | version: "0.11.1"
350 | meta:
351 | dependency: transitive
352 | description:
353 | name: meta
354 | sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c
355 | url: "https://pub.dev"
356 | source: hosted
357 | version: "1.16.0"
358 | mime:
359 | dependency: transitive
360 | description:
361 | name: mime
362 | sha256: "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6"
363 | url: "https://pub.dev"
364 | source: hosted
365 | version: "2.0.0"
366 | mockito:
367 | dependency: "direct dev"
368 | description:
369 | name: mockito
370 | sha256: f99d8d072e249f719a5531735d146d8cf04c580d93920b04de75bef6dfb2daf6
371 | url: "https://pub.dev"
372 | source: hosted
373 | version: "5.4.5"
374 | node_preamble:
375 | dependency: transitive
376 | description:
377 | name: node_preamble
378 | sha256: "6e7eac89047ab8a8d26cf16127b5ed26de65209847630400f9aefd7cd5c730db"
379 | url: "https://pub.dev"
380 | source: hosted
381 | version: "2.0.2"
382 | package_config:
383 | dependency: transitive
384 | description:
385 | name: package_config
386 | sha256: f096c55ebb7deb7e384101542bfba8c52696c1b56fca2eb62827989ef2353bbc
387 | url: "https://pub.dev"
388 | source: hosted
389 | version: "2.2.0"
390 | path:
391 | dependency: transitive
392 | description:
393 | name: path
394 | sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5"
395 | url: "https://pub.dev"
396 | source: hosted
397 | version: "1.9.1"
398 | pool:
399 | dependency: transitive
400 | description:
401 | name: pool
402 | sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a"
403 | url: "https://pub.dev"
404 | source: hosted
405 | version: "1.5.1"
406 | pub_semver:
407 | dependency: transitive
408 | description:
409 | name: pub_semver
410 | sha256: "5bfcf68ca79ef689f8990d1160781b4bad40a3bd5e5218ad4076ddb7f4081585"
411 | url: "https://pub.dev"
412 | source: hosted
413 | version: "2.2.0"
414 | pubspec_parse:
415 | dependency: transitive
416 | description:
417 | name: pubspec_parse
418 | sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082"
419 | url: "https://pub.dev"
420 | source: hosted
421 | version: "1.5.0"
422 | shelf:
423 | dependency: transitive
424 | description:
425 | name: shelf
426 | sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12
427 | url: "https://pub.dev"
428 | source: hosted
429 | version: "1.4.2"
430 | shelf_packages_handler:
431 | dependency: transitive
432 | description:
433 | name: shelf_packages_handler
434 | sha256: "89f967eca29607c933ba9571d838be31d67f53f6e4ee15147d5dc2934fee1b1e"
435 | url: "https://pub.dev"
436 | source: hosted
437 | version: "3.0.2"
438 | shelf_static:
439 | dependency: transitive
440 | description:
441 | name: shelf_static
442 | sha256: c87c3875f91262785dade62d135760c2c69cb217ac759485334c5857ad89f6e3
443 | url: "https://pub.dev"
444 | source: hosted
445 | version: "1.1.3"
446 | shelf_web_socket:
447 | dependency: transitive
448 | description:
449 | name: shelf_web_socket
450 | sha256: "3632775c8e90d6c9712f883e633716432a27758216dfb61bd86a8321c0580925"
451 | url: "https://pub.dev"
452 | source: hosted
453 | version: "3.0.0"
454 | sky_engine:
455 | dependency: transitive
456 | description: flutter
457 | source: sdk
458 | version: "0.0.0"
459 | source_gen:
460 | dependency: transitive
461 | description:
462 | name: source_gen
463 | sha256: "35c8150ece9e8c8d263337a265153c3329667640850b9304861faea59fc98f6b"
464 | url: "https://pub.dev"
465 | source: hosted
466 | version: "2.0.0"
467 | source_map_stack_trace:
468 | dependency: transitive
469 | description:
470 | name: source_map_stack_trace
471 | sha256: c0713a43e323c3302c2abe2a1cc89aa057a387101ebd280371d6a6c9fa68516b
472 | url: "https://pub.dev"
473 | source: hosted
474 | version: "2.1.2"
475 | source_maps:
476 | dependency: transitive
477 | description:
478 | name: source_maps
479 | sha256: "190222579a448b03896e0ca6eca5998fa810fda630c1d65e2f78b3f638f54812"
480 | url: "https://pub.dev"
481 | source: hosted
482 | version: "0.10.13"
483 | source_span:
484 | dependency: transitive
485 | description:
486 | name: source_span
487 | sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c"
488 | url: "https://pub.dev"
489 | source: hosted
490 | version: "1.10.1"
491 | stack_trace:
492 | dependency: transitive
493 | description:
494 | name: stack_trace
495 | sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1"
496 | url: "https://pub.dev"
497 | source: hosted
498 | version: "1.12.1"
499 | stream_channel:
500 | dependency: transitive
501 | description:
502 | name: stream_channel
503 | sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d"
504 | url: "https://pub.dev"
505 | source: hosted
506 | version: "2.1.4"
507 | stream_transform:
508 | dependency: transitive
509 | description:
510 | name: stream_transform
511 | sha256: ad47125e588cfd37a9a7f86c7d6356dde8dfe89d071d293f80ca9e9273a33871
512 | url: "https://pub.dev"
513 | source: hosted
514 | version: "2.1.1"
515 | string_scanner:
516 | dependency: transitive
517 | description:
518 | name: string_scanner
519 | sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43"
520 | url: "https://pub.dev"
521 | source: hosted
522 | version: "1.4.1"
523 | term_glyph:
524 | dependency: transitive
525 | description:
526 | name: term_glyph
527 | sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e"
528 | url: "https://pub.dev"
529 | source: hosted
530 | version: "1.2.2"
531 | test:
532 | dependency: "direct dev"
533 | description:
534 | name: test
535 | sha256: "301b213cd241ca982e9ba50266bd3f5bd1ea33f1455554c5abb85d1be0e2d87e"
536 | url: "https://pub.dev"
537 | source: hosted
538 | version: "1.25.15"
539 | test_api:
540 | dependency: transitive
541 | description:
542 | name: test_api
543 | sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd
544 | url: "https://pub.dev"
545 | source: hosted
546 | version: "0.7.4"
547 | test_core:
548 | dependency: transitive
549 | description:
550 | name: test_core
551 | sha256: "84d17c3486c8dfdbe5e12a50c8ae176d15e2a771b96909a9442b40173649ccaa"
552 | url: "https://pub.dev"
553 | source: hosted
554 | version: "0.6.8"
555 | timing:
556 | dependency: transitive
557 | description:
558 | name: timing
559 | sha256: "62ee18aca144e4a9f29d212f5a4c6a053be252b895ab14b5821996cff4ed90fe"
560 | url: "https://pub.dev"
561 | source: hosted
562 | version: "1.0.2"
563 | typed_data:
564 | dependency: transitive
565 | description:
566 | name: typed_data
567 | sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006
568 | url: "https://pub.dev"
569 | source: hosted
570 | version: "1.4.0"
571 | vector_math:
572 | dependency: transitive
573 | description:
574 | name: vector_math
575 | sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803"
576 | url: "https://pub.dev"
577 | source: hosted
578 | version: "2.1.4"
579 | vm_service:
580 | dependency: transitive
581 | description:
582 | name: vm_service
583 | sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14"
584 | url: "https://pub.dev"
585 | source: hosted
586 | version: "14.3.1"
587 | watcher:
588 | dependency: transitive
589 | description:
590 | name: watcher
591 | sha256: "69da27e49efa56a15f8afe8f4438c4ec02eff0a117df1b22ea4aad194fe1c104"
592 | url: "https://pub.dev"
593 | source: hosted
594 | version: "1.1.1"
595 | web:
596 | dependency: transitive
597 | description:
598 | name: web
599 | sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a"
600 | url: "https://pub.dev"
601 | source: hosted
602 | version: "1.1.1"
603 | web_socket:
604 | dependency: transitive
605 | description:
606 | name: web_socket
607 | sha256: "3c12d96c0c9a4eec095246debcea7b86c0324f22df69893d538fcc6f1b8cce83"
608 | url: "https://pub.dev"
609 | source: hosted
610 | version: "0.1.6"
611 | web_socket_channel:
612 | dependency: transitive
613 | description:
614 | name: web_socket_channel
615 | sha256: "0b8e2457400d8a859b7b2030786835a28a8e80836ef64402abef392ff4f1d0e5"
616 | url: "https://pub.dev"
617 | source: hosted
618 | version: "3.0.2"
619 | webkit_inspection_protocol:
620 | dependency: transitive
621 | description:
622 | name: webkit_inspection_protocol
623 | sha256: "87d3f2333bb240704cd3f1c6b5b7acd8a10e7f0bc28c28dcf14e782014f4a572"
624 | url: "https://pub.dev"
625 | source: hosted
626 | version: "1.2.1"
627 | yaml:
628 | dependency: transitive
629 | description:
630 | name: yaml
631 | sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce
632 | url: "https://pub.dev"
633 | source: hosted
634 | version: "3.1.3"
635 | sdks:
636 | dart: ">=3.7.0-0 <4.0.0"
637 | flutter: ">=3.18.0-18.0.pre.54"
638 |
--------------------------------------------------------------------------------