├── ios
├── Flutter
│ ├── Debug.xcconfig
│ ├── Release.xcconfig
│ └── AppFrameworkInfo.plist
├── 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
├── 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
├── screenShots
├── m1.png
├── m2.png
├── m3.png
└── m4.png
├── 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
│ │ │ ├── kotlin
│ │ │ │ └── com
│ │ │ │ │ └── example
│ │ │ │ │ └── emozi_keyboard
│ │ │ │ │ └── MainActivity.kt
│ │ │ └── AndroidManifest.xml
│ │ ├── debug
│ │ │ └── AndroidManifest.xml
│ │ └── profile
│ │ │ └── AndroidManifest.xml
│ └── build.gradle
├── gradle
│ └── wrapper
│ │ └── gradle-wrapper.properties
├── .gitignore
├── settings.gradle
└── build.gradle
├── .metadata
├── README.md
├── .gitignore
├── analysis_options.yaml
├── pubspec.yaml
├── pubspec.lock
└── lib
├── main.dart
└── emojis.dart
/ios/Flutter/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Generated.xcconfig"
2 |
--------------------------------------------------------------------------------
/ios/Flutter/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Generated.xcconfig"
2 |
--------------------------------------------------------------------------------
/ios/Runner/Runner-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import "GeneratedPluginRegistrant.h"
2 |
--------------------------------------------------------------------------------
/screenShots/m1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blackshadowsoftwareltd/Emoji_Keyboard_Custom/HEAD/screenShots/m1.png
--------------------------------------------------------------------------------
/screenShots/m2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blackshadowsoftwareltd/Emoji_Keyboard_Custom/HEAD/screenShots/m2.png
--------------------------------------------------------------------------------
/screenShots/m3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blackshadowsoftwareltd/Emoji_Keyboard_Custom/HEAD/screenShots/m3.png
--------------------------------------------------------------------------------
/screenShots/m4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blackshadowsoftwareltd/Emoji_Keyboard_Custom/HEAD/screenShots/m4.png
--------------------------------------------------------------------------------
/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx1536M
2 | android.useAndroidX=true
3 | android.enableJetifier=true
4 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blackshadowsoftwareltd/Emoji_Keyboard_Custom/HEAD/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blackshadowsoftwareltd/Emoji_Keyboard_Custom/HEAD/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blackshadowsoftwareltd/Emoji_Keyboard_Custom/HEAD/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blackshadowsoftwareltd/Emoji_Keyboard_Custom/HEAD/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blackshadowsoftwareltd/Emoji_Keyboard_Custom/HEAD/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blackshadowsoftwareltd/Emoji_Keyboard_Custom/HEAD/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blackshadowsoftwareltd/Emoji_Keyboard_Custom/HEAD/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blackshadowsoftwareltd/Emoji_Keyboard_Custom/HEAD/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blackshadowsoftwareltd/Emoji_Keyboard_Custom/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blackshadowsoftwareltd/Emoji_Keyboard_Custom/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blackshadowsoftwareltd/Emoji_Keyboard_Custom/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blackshadowsoftwareltd/Emoji_Keyboard_Custom/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blackshadowsoftwareltd/Emoji_Keyboard_Custom/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blackshadowsoftwareltd/Emoji_Keyboard_Custom/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blackshadowsoftwareltd/Emoji_Keyboard_Custom/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blackshadowsoftwareltd/Emoji_Keyboard_Custom/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blackshadowsoftwareltd/Emoji_Keyboard_Custom/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blackshadowsoftwareltd/Emoji_Keyboard_Custom/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blackshadowsoftwareltd/Emoji_Keyboard_Custom/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blackshadowsoftwareltd/Emoji_Keyboard_Custom/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blackshadowsoftwareltd/Emoji_Keyboard_Custom/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blackshadowsoftwareltd/Emoji_Keyboard_Custom/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blackshadowsoftwareltd/Emoji_Keyboard_Custom/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
--------------------------------------------------------------------------------
/android/app/src/main/kotlin/com/example/emozi_keyboard/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package com.example.emozi_keyboard
2 |
3 | import io.flutter.embedding.android.FlutterActivity
4 |
5 | class MainActivity: FlutterActivity() {
6 | }
7 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Fri Jun 23 08:50:38 CEST 2017
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
7 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/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: app
11 |
--------------------------------------------------------------------------------
/android/.gitignore:
--------------------------------------------------------------------------------
1 | gradle-wrapper.jar
2 | /.gradle
3 | /captures/
4 | /gradlew
5 | /gradlew.bat
6 | /local.properties
7 | GeneratedPluginRegistrant.java
8 |
9 | # Remember to never publicly share your keystore.
10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
11 | key.properties
12 | **/*.keystore
13 | **/*.jks
14 |
--------------------------------------------------------------------------------
/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/android/app/src/profile/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md:
--------------------------------------------------------------------------------
1 | # Launch Screen Assets
2 |
3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory.
4 |
5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.
--------------------------------------------------------------------------------
/ios/Runner/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 |
--------------------------------------------------------------------------------
/android/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
3 | def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
4 | def properties = new Properties()
5 |
6 | assert localPropertiesFile.exists()
7 | localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
8 |
9 | def flutterSdkPath = properties.getProperty("flutter.sdk")
10 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
11 | apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"
12 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-v21/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## before clone the GitHub repository please give a star on the repository.
2 |
3 |
4 | ##
5 | ### Mobile Screenshots
6 |
7 |
12 |
13 |

14 |
15 |
16 | ### Thanks
17 |
--------------------------------------------------------------------------------
/android/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | ext.kotlin_version = '1.3.50'
3 | repositories {
4 | google()
5 | mavenCentral()
6 | }
7 |
8 | dependencies {
9 | classpath 'com.android.tools.build:gradle:4.1.0'
10 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
11 | }
12 | }
13 |
14 | allprojects {
15 | repositories {
16 | google()
17 | mavenCentral()
18 | }
19 | }
20 |
21 | rootProject.buildDir = '../build'
22 | subprojects {
23 | project.buildDir = "${rootProject.buildDir}/${project.name}"
24 | project.evaluationDependsOn(':app')
25 | }
26 |
27 | task clean(type: Delete) {
28 | delete rootProject.buildDir
29 | }
30 |
--------------------------------------------------------------------------------
/ios/.gitignore:
--------------------------------------------------------------------------------
1 | **/dgph
2 | *.mode1v3
3 | *.mode2v3
4 | *.moved-aside
5 | *.pbxuser
6 | *.perspectivev3
7 | **/*sync/
8 | .sconsign.dblite
9 | .tags*
10 | **/.vagrant/
11 | **/DerivedData/
12 | Icon?
13 | **/Pods/
14 | **/.symlinks/
15 | profile
16 | xcuserdata
17 | **/.generated/
18 | Flutter/App.framework
19 | Flutter/Flutter.framework
20 | Flutter/Flutter.podspec
21 | Flutter/Generated.xcconfig
22 | Flutter/ephemeral/
23 | Flutter/app.flx
24 | Flutter/app.zip
25 | Flutter/flutter_assets/
26 | Flutter/flutter_export_environment.sh
27 | ServiceDefinitions.json
28 | Runner/GeneratedPluginRegistrant.*
29 |
30 | # Exceptions to above rules.
31 | !default.mode1v3
32 | !default.mode2v3
33 | !default.pbxuser
34 | !default.perspectivev3
35 |
--------------------------------------------------------------------------------
/ios/Flutter/AppFrameworkInfo.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | App
9 | CFBundleIdentifier
10 | io.flutter.flutter.app
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | App
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1.0
23 | MinimumOSVersion
24 | 9.0
25 |
26 |
27 |
--------------------------------------------------------------------------------
/.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 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values-night/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/ios/Runner/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/ios/Runner/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | emozi_keyboard
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 |
--------------------------------------------------------------------------------
/android/app/build.gradle:
--------------------------------------------------------------------------------
1 | def localProperties = new Properties()
2 | def localPropertiesFile = rootProject.file('local.properties')
3 | if (localPropertiesFile.exists()) {
4 | localPropertiesFile.withReader('UTF-8') { reader ->
5 | localProperties.load(reader)
6 | }
7 | }
8 |
9 | def flutterRoot = localProperties.getProperty('flutter.sdk')
10 | if (flutterRoot == null) {
11 | throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
12 | }
13 |
14 | def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
15 | if (flutterVersionCode == null) {
16 | flutterVersionCode = '1'
17 | }
18 |
19 | def flutterVersionName = localProperties.getProperty('flutter.versionName')
20 | if (flutterVersionName == null) {
21 | flutterVersionName = '1.0'
22 | }
23 |
24 | apply plugin: 'com.android.application'
25 | apply plugin: 'kotlin-android'
26 | apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
27 |
28 | android {
29 | compileSdkVersion 30
30 |
31 | compileOptions {
32 | sourceCompatibility JavaVersion.VERSION_1_8
33 | targetCompatibility JavaVersion.VERSION_1_8
34 | }
35 |
36 | kotlinOptions {
37 | jvmTarget = '1.8'
38 | }
39 |
40 | sourceSets {
41 | main.java.srcDirs += 'src/main/kotlin'
42 | }
43 |
44 | defaultConfig {
45 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
46 | applicationId "com.example.emozi_keyboard"
47 | minSdkVersion 16
48 | targetSdkVersion 30
49 | versionCode flutterVersionCode.toInteger()
50 | versionName flutterVersionName
51 | }
52 |
53 | buildTypes {
54 | release {
55 | // TODO: Add your own signing config for the release build.
56 | // Signing with the debug keys for now, so `flutter run --release` works.
57 | signingConfig signingConfigs.debug
58 | }
59 | }
60 | }
61 |
62 | flutter {
63 | source '../..'
64 | }
65 |
66 | dependencies {
67 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
68 | }
69 |
--------------------------------------------------------------------------------
/android/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
13 |
17 |
21 |
26 |
30 |
31 |
32 |
33 |
34 |
35 |
37 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/ios/Runner/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "size" : "20x20",
5 | "idiom" : "iphone",
6 | "filename" : "Icon-App-20x20@2x.png",
7 | "scale" : "2x"
8 | },
9 | {
10 | "size" : "20x20",
11 | "idiom" : "iphone",
12 | "filename" : "Icon-App-20x20@3x.png",
13 | "scale" : "3x"
14 | },
15 | {
16 | "size" : "29x29",
17 | "idiom" : "iphone",
18 | "filename" : "Icon-App-29x29@1x.png",
19 | "scale" : "1x"
20 | },
21 | {
22 | "size" : "29x29",
23 | "idiom" : "iphone",
24 | "filename" : "Icon-App-29x29@2x.png",
25 | "scale" : "2x"
26 | },
27 | {
28 | "size" : "29x29",
29 | "idiom" : "iphone",
30 | "filename" : "Icon-App-29x29@3x.png",
31 | "scale" : "3x"
32 | },
33 | {
34 | "size" : "40x40",
35 | "idiom" : "iphone",
36 | "filename" : "Icon-App-40x40@2x.png",
37 | "scale" : "2x"
38 | },
39 | {
40 | "size" : "40x40",
41 | "idiom" : "iphone",
42 | "filename" : "Icon-App-40x40@3x.png",
43 | "scale" : "3x"
44 | },
45 | {
46 | "size" : "60x60",
47 | "idiom" : "iphone",
48 | "filename" : "Icon-App-60x60@2x.png",
49 | "scale" : "2x"
50 | },
51 | {
52 | "size" : "60x60",
53 | "idiom" : "iphone",
54 | "filename" : "Icon-App-60x60@3x.png",
55 | "scale" : "3x"
56 | },
57 | {
58 | "size" : "20x20",
59 | "idiom" : "ipad",
60 | "filename" : "Icon-App-20x20@1x.png",
61 | "scale" : "1x"
62 | },
63 | {
64 | "size" : "20x20",
65 | "idiom" : "ipad",
66 | "filename" : "Icon-App-20x20@2x.png",
67 | "scale" : "2x"
68 | },
69 | {
70 | "size" : "29x29",
71 | "idiom" : "ipad",
72 | "filename" : "Icon-App-29x29@1x.png",
73 | "scale" : "1x"
74 | },
75 | {
76 | "size" : "29x29",
77 | "idiom" : "ipad",
78 | "filename" : "Icon-App-29x29@2x.png",
79 | "scale" : "2x"
80 | },
81 | {
82 | "size" : "40x40",
83 | "idiom" : "ipad",
84 | "filename" : "Icon-App-40x40@1x.png",
85 | "scale" : "1x"
86 | },
87 | {
88 | "size" : "40x40",
89 | "idiom" : "ipad",
90 | "filename" : "Icon-App-40x40@2x.png",
91 | "scale" : "2x"
92 | },
93 | {
94 | "size" : "76x76",
95 | "idiom" : "ipad",
96 | "filename" : "Icon-App-76x76@1x.png",
97 | "scale" : "1x"
98 | },
99 | {
100 | "size" : "76x76",
101 | "idiom" : "ipad",
102 | "filename" : "Icon-App-76x76@2x.png",
103 | "scale" : "2x"
104 | },
105 | {
106 | "size" : "83.5x83.5",
107 | "idiom" : "ipad",
108 | "filename" : "Icon-App-83.5x83.5@2x.png",
109 | "scale" : "2x"
110 | },
111 | {
112 | "size" : "1024x1024",
113 | "idiom" : "ios-marketing",
114 | "filename" : "Icon-App-1024x1024@1x.png",
115 | "scale" : "1x"
116 | }
117 | ],
118 | "info" : {
119 | "version" : 1,
120 | "author" : "xcode"
121 | }
122 | }
123 |
--------------------------------------------------------------------------------
/ios/Runner.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 |
--------------------------------------------------------------------------------
/pubspec.yaml:
--------------------------------------------------------------------------------
1 | name: emozi_keyboard
2 | description: A new Flutter project.
3 |
4 | # The following line prevents the package from being accidentally published to
5 | # pub.dev using `flutter pub publish`. This is preferred for private packages.
6 | publish_to: 'none' # Remove this line if you wish to publish to pub.dev
7 |
8 | # The following defines the version and build number for your application.
9 | # A version number is three numbers separated by dots, like 1.2.43
10 | # followed by an optional build number separated by a +.
11 | # Both the version and the builder number may be overridden in flutter
12 | # build by specifying --build-name and --build-number, respectively.
13 | # In Android, build-name is used as versionName while build-number used as versionCode.
14 | # Read more about Android versioning at https://developer.android.com/studio/publish/versioning
15 | # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
16 | # Read more about iOS versioning at
17 | # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
18 | version: 1.0.0+1
19 |
20 | environment:
21 | sdk: ">=2.12.0 <3.0.0"
22 |
23 | # Dependencies specify other packages that your package needs in order to work.
24 | # To automatically upgrade your package dependencies to the latest versions
25 | # consider running `flutter pub upgrade --major-versions`. Alternatively,
26 | # dependencies can be manually updated by changing the version numbers below to
27 | # the latest version available on pub.dev. To see which dependencies have newer
28 | # versions available, run `flutter pub outdated`.
29 | dependencies:
30 | flutter:
31 | sdk: flutter
32 |
33 | flutter_keyboard_visibility: ^5.1.0
34 |
35 |
36 | # The following adds the Cupertino Icons font to your application.
37 | # Use with the CupertinoIcons class for iOS style icons.
38 | cupertino_icons: ^1.0.2
39 |
40 | dev_dependencies:
41 | flutter_test:
42 | sdk: flutter
43 |
44 | # The "flutter_lints" package below contains a set of recommended lints to
45 | # encourage good coding practices. The lint set provided by the package is
46 | # activated in the `analysis_options.yaml` file located at the root of your
47 | # package. See that file for information about deactivating specific lint
48 | # rules and activating additional ones.
49 | flutter_lints: ^1.0.0
50 |
51 | # For information on the generic Dart part of this file, see the
52 | # following page: https://dart.dev/tools/pub/pubspec
53 |
54 | # The following section is specific to Flutter.
55 | flutter:
56 |
57 | # The following line ensures that the Material Icons font is
58 | # included with your application, so that you can use the icons in
59 | # the material Icons class.
60 | uses-material-design: true
61 |
62 | # To add assets to your application, add an assets section, like this:
63 | # assets:
64 | # - images/a_dot_burr.jpeg
65 | # - images/a_dot_ham.jpeg
66 |
67 | # An image asset can refer to one or more resolution-specific "variants", see
68 | # https://flutter.dev/assets-and-images/#resolution-aware.
69 |
70 | # For details regarding adding assets from package dependencies, see
71 | # https://flutter.dev/assets-and-images/#from-packages
72 |
73 | # To add custom fonts to your application, add a fonts section here,
74 | # in this "flutter" section. Each entry in this list should have a
75 | # "family" key with the font family name, and a "fonts" key with a
76 | # list giving the asset and other descriptors for the font. For
77 | # example:
78 | # fonts:
79 | # - family: Schyler
80 | # fonts:
81 | # - asset: fonts/Schyler-Regular.ttf
82 | # - asset: fonts/Schyler-Italic.ttf
83 | # style: italic
84 | # - family: Trajan Pro
85 | # fonts:
86 | # - asset: fonts/TrajanPro.ttf
87 | # - asset: fonts/TrajanPro_Bold.ttf
88 | # weight: 700
89 | #
90 | # For details regarding fonts from package dependencies,
91 | # see https://flutter.dev/custom-fonts/#from-packages
92 |
--------------------------------------------------------------------------------
/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 | url: "https://pub.dartlang.org"
9 | source: hosted
10 | version: "2.8.1"
11 | boolean_selector:
12 | dependency: transitive
13 | description:
14 | name: boolean_selector
15 | url: "https://pub.dartlang.org"
16 | source: hosted
17 | version: "2.1.0"
18 | characters:
19 | dependency: transitive
20 | description:
21 | name: characters
22 | url: "https://pub.dartlang.org"
23 | source: hosted
24 | version: "1.1.0"
25 | charcode:
26 | dependency: transitive
27 | description:
28 | name: charcode
29 | url: "https://pub.dartlang.org"
30 | source: hosted
31 | version: "1.3.1"
32 | clock:
33 | dependency: transitive
34 | description:
35 | name: clock
36 | url: "https://pub.dartlang.org"
37 | source: hosted
38 | version: "1.1.0"
39 | collection:
40 | dependency: transitive
41 | description:
42 | name: collection
43 | url: "https://pub.dartlang.org"
44 | source: hosted
45 | version: "1.15.0"
46 | cupertino_icons:
47 | dependency: "direct main"
48 | description:
49 | name: cupertino_icons
50 | url: "https://pub.dartlang.org"
51 | source: hosted
52 | version: "1.0.4"
53 | fake_async:
54 | dependency: transitive
55 | description:
56 | name: fake_async
57 | url: "https://pub.dartlang.org"
58 | source: hosted
59 | version: "1.2.0"
60 | flutter:
61 | dependency: "direct main"
62 | description: flutter
63 | source: sdk
64 | version: "0.0.0"
65 | flutter_keyboard_visibility:
66 | dependency: "direct main"
67 | description:
68 | name: flutter_keyboard_visibility
69 | url: "https://pub.dartlang.org"
70 | source: hosted
71 | version: "5.1.0"
72 | flutter_keyboard_visibility_platform_interface:
73 | dependency: transitive
74 | description:
75 | name: flutter_keyboard_visibility_platform_interface
76 | url: "https://pub.dartlang.org"
77 | source: hosted
78 | version: "2.0.0"
79 | flutter_keyboard_visibility_web:
80 | dependency: transitive
81 | description:
82 | name: flutter_keyboard_visibility_web
83 | url: "https://pub.dartlang.org"
84 | source: hosted
85 | version: "2.0.0"
86 | flutter_lints:
87 | dependency: "direct dev"
88 | description:
89 | name: flutter_lints
90 | url: "https://pub.dartlang.org"
91 | source: hosted
92 | version: "1.0.4"
93 | flutter_test:
94 | dependency: "direct dev"
95 | description: flutter
96 | source: sdk
97 | version: "0.0.0"
98 | flutter_web_plugins:
99 | dependency: transitive
100 | description: flutter
101 | source: sdk
102 | version: "0.0.0"
103 | js:
104 | dependency: transitive
105 | description:
106 | name: js
107 | url: "https://pub.dartlang.org"
108 | source: hosted
109 | version: "0.6.3"
110 | lints:
111 | dependency: transitive
112 | description:
113 | name: lints
114 | url: "https://pub.dartlang.org"
115 | source: hosted
116 | version: "1.0.1"
117 | matcher:
118 | dependency: transitive
119 | description:
120 | name: matcher
121 | url: "https://pub.dartlang.org"
122 | source: hosted
123 | version: "0.12.10"
124 | meta:
125 | dependency: transitive
126 | description:
127 | name: meta
128 | url: "https://pub.dartlang.org"
129 | source: hosted
130 | version: "1.7.0"
131 | path:
132 | dependency: transitive
133 | description:
134 | name: path
135 | url: "https://pub.dartlang.org"
136 | source: hosted
137 | version: "1.8.0"
138 | plugin_platform_interface:
139 | dependency: transitive
140 | description:
141 | name: plugin_platform_interface
142 | url: "https://pub.dartlang.org"
143 | source: hosted
144 | version: "2.0.2"
145 | sky_engine:
146 | dependency: transitive
147 | description: flutter
148 | source: sdk
149 | version: "0.0.99"
150 | source_span:
151 | dependency: transitive
152 | description:
153 | name: source_span
154 | url: "https://pub.dartlang.org"
155 | source: hosted
156 | version: "1.8.1"
157 | stack_trace:
158 | dependency: transitive
159 | description:
160 | name: stack_trace
161 | url: "https://pub.dartlang.org"
162 | source: hosted
163 | version: "1.10.0"
164 | stream_channel:
165 | dependency: transitive
166 | description:
167 | name: stream_channel
168 | url: "https://pub.dartlang.org"
169 | source: hosted
170 | version: "2.1.0"
171 | string_scanner:
172 | dependency: transitive
173 | description:
174 | name: string_scanner
175 | url: "https://pub.dartlang.org"
176 | source: hosted
177 | version: "1.1.0"
178 | term_glyph:
179 | dependency: transitive
180 | description:
181 | name: term_glyph
182 | url: "https://pub.dartlang.org"
183 | source: hosted
184 | version: "1.2.0"
185 | test_api:
186 | dependency: transitive
187 | description:
188 | name: test_api
189 | url: "https://pub.dartlang.org"
190 | source: hosted
191 | version: "0.4.2"
192 | typed_data:
193 | dependency: transitive
194 | description:
195 | name: typed_data
196 | url: "https://pub.dartlang.org"
197 | source: hosted
198 | version: "1.3.0"
199 | vector_math:
200 | dependency: transitive
201 | description:
202 | name: vector_math
203 | url: "https://pub.dartlang.org"
204 | source: hosted
205 | version: "2.1.0"
206 | sdks:
207 | dart: ">=2.12.0 <3.0.0"
208 | flutter: ">=1.20.0"
209 |
--------------------------------------------------------------------------------
/lib/main.dart:
--------------------------------------------------------------------------------
1 | import 'dart:async';
2 |
3 | import 'package:flutter/material.dart';
4 | import 'package:flutter/services.dart';
5 | import 'package:flutter_keyboard_visibility/flutter_keyboard_visibility.dart';
6 |
7 | import 'emojis.dart';
8 |
9 | void main() =>
10 |
11 | /// KeyboardVisibilityProvider
12 | runApp(const MaterialApp(home: Home()));
13 |
14 | class Home extends StatefulWidget {
15 | const Home({Key? key}) : super(key: key);
16 |
17 | @override
18 | State createState() => _HomeState();
19 | }
20 |
21 | class _HomeState extends State with SingleTickerProviderStateMixin {
22 | bool isEmojiVisible = false;
23 | bool isKeyboardVisible = false;
24 | int _selectedTab = 0;
25 |
26 | late StreamSubscription keyboardSubscription;
27 | late TabController _tabController;
28 | late ScrollController _scrollController;
29 |
30 | final focusNode = FocusNode();
31 | late TextEditingController _textController;
32 |
33 | bool isPortrait = false;
34 | double width = 0, height = 0;
35 | @override
36 | void initState() {
37 | super.initState();
38 | _textController = TextEditingController();
39 | _tabController = TabController(vsync: this, length: emojis.length);
40 | _scrollController = ScrollController();
41 | var keyboardVisibilityController = KeyboardVisibilityController();
42 | keyboardSubscription =
43 | keyboardVisibilityController.onChange.listen((bool visible) {
44 | if (visible && isEmojiVisible) {
45 | isEmojiVisible = false;
46 | setState(() {});
47 | } else {}
48 | });
49 | }
50 |
51 | @override
52 | void didChangeDependencies() {
53 | super.didChangeDependencies();
54 | width = MediaQuery.of(context).size.width;
55 | height = MediaQuery.of(context).size.height;
56 | isPortrait = height > width ? true : false;
57 | _tabController.addListener(() {
58 | _selectedTab = _tabController.index;
59 | if (!isPortrait) {
60 | _scrollController.jumpTo(_selectedTab * height * .075);
61 | }
62 | setState(() {});
63 | });
64 | }
65 |
66 | @override
67 | void dispose() {
68 | super.dispose();
69 | _tabController.dispose();
70 | _textController.clear();
71 | }
72 |
73 | @override
74 | Widget build(BuildContext context) {
75 | final cross = (MediaQuery.of(context).size.width * .025).round();
76 | List textMessage = List.of(messages.reversed);
77 | return WillPopScope(
78 | onWillPop: () async {
79 | if (isEmojiVisible) {
80 | isEmojiVisible = !isEmojiVisible;
81 | setState(() {});
82 | return false;
83 | }
84 | return true;
85 | },
86 | child: Scaffold(
87 | backgroundColor: Colors.grey.shade100,
88 | appBar: AppBar(),
89 | body: SizedBox(
90 | height: isPortrait ? height : width,
91 | child: Column(
92 | mainAxisAlignment: MainAxisAlignment.spaceBetween,
93 | children: [
94 | Expanded(
95 | child: ListView.builder(
96 | reverse: true,
97 | itemCount: textMessage.length,
98 | itemBuilder: (context, index) => Align(
99 | alignment: Alignment.centerRight,
100 | child: Container(
101 | alignment: Alignment.centerRight,
102 | margin: const EdgeInsets.all(10),
103 | padding: const EdgeInsets.all(8),
104 | child: Text(textMessage[index]),
105 | ),
106 | ))),
107 | Container(
108 | margin: const EdgeInsets.all(5),
109 | padding: const EdgeInsets.all(5),
110 | decoration: const BoxDecoration(color: Colors.white),
111 | child: Row(children: [
112 | IconButton(
113 | onPressed: () async {
114 | if (isEmojiVisible) {
115 | focusNode.requestFocus();
116 | } else if (!isEmojiVisible) {
117 | await SystemChannels.textInput
118 | .invokeMethod('TextInput.hide');
119 | await Future.delayed(
120 | const Duration(milliseconds: 100));
121 | FocusScope.of(context).unfocus();
122 | }
123 | isEmojiVisible = !isEmojiVisible;
124 | setState(() {});
125 | },
126 | icon: isEmojiVisible
127 | ? const Icon(Icons.keyboard,
128 | color: Colors.black54)
129 | : const Icon(Icons.emoji_emotions,
130 | color: Colors.black54)),
131 | Flexible(
132 | child: TextField(
133 | focusNode: focusNode,
134 | controller: _textController,
135 | decoration: const InputDecoration(
136 | hintText: 'Message...'))),
137 | IconButton(
138 | onPressed: () {
139 | messages.add(_textController.text);
140 | _textController.clear();
141 | setState(() {});
142 | },
143 | icon: const Icon(Icons.send,
144 | color: Colors.black54))
145 | ])),
146 | Offstage(
147 | offstage: !isEmojiVisible,
148 | child: Container(
149 | height: height * .4,
150 | width: double.infinity,
151 | margin: const EdgeInsets.all(5),
152 | padding: const EdgeInsets.all(2),
153 | decoration: BoxDecoration(
154 | color: Colors.white,
155 | border: Border.all(
156 | color: Colors.black54, width: .5),
157 | borderRadius: BorderRadius.circular(10)),
158 | child: DefaultTabController(
159 | length: emojis.length,
160 | child: isPortrait
161 | ? Column(children: [
162 | Container(
163 | margin:
164 | const EdgeInsets.symmetric(
165 | horizontal: 2),
166 | child: EmojiTabBar(
167 | tabController:
168 | _tabController)),
169 | const Divider(
170 | color: Colors.black45,
171 | height: 5,
172 | thickness: .5),
173 | EmojisList(
174 | cross: cross,
175 | textController: _textController,
176 | tabController: _tabController)
177 | ])
178 | : Row(children: [
179 | emojiSideBar(),
180 | EmojisList(
181 | cross: cross,
182 | textController: _textController,
183 | tabController: _tabController)
184 | ]))))
185 | ]))));
186 | }
187 |
188 | SizedBox emojiSideBar() {
189 | return SizedBox(
190 | width: 50,
191 | child: ListView.builder(
192 | controller: _scrollController,
193 | itemCount: emojis.length,
194 | itemBuilder: (context, index) {
195 | final x = emojis[index].split(' ');
196 | return GestureDetector(
197 | onTap: () {
198 | _selectedTab = index;
199 | _tabController.animateTo(index);
200 | setState(() {});
201 | },
202 | child: Container(
203 | padding: const EdgeInsets.all(2),
204 | margin: const EdgeInsets.all(2),
205 | alignment: Alignment.center,
206 | decoration: BoxDecoration(
207 | color: _selectedTab == index
208 | ? Colors.grey.shade300
209 | : Colors.transparent,
210 | borderRadius: BorderRadius.circular(10)),
211 | child: Text(x[0], style: const TextStyle(fontSize: 25))));
212 | }));
213 | }
214 | }
215 |
216 | class EmojiTabBar extends StatelessWidget {
217 | const EmojiTabBar({
218 | Key? key,
219 | required this.tabController,
220 | }) : super(key: key);
221 | final TabController tabController;
222 | @override
223 | Widget build(BuildContext context) {
224 | return TabBar(
225 | controller: tabController,
226 | isScrollable: true,
227 | labelColor: Colors.black,
228 | unselectedLabelColor: Colors.blue[700],
229 | labelStyle: const TextStyle(fontSize: 25),
230 | unselectedLabelStyle: const TextStyle(fontSize: 20),
231 | labelPadding: const EdgeInsets.symmetric(vertical: 0, horizontal: 1),
232 | indicatorSize: TabBarIndicatorSize.tab,
233 | indicator: BoxDecoration(
234 | color: Colors.grey.withOpacity(.3),
235 | borderRadius: BorderRadius.circular(10)),
236 | tabs: emojis.map((e) {
237 | final x = e.split(' ');
238 | return Tab(
239 | child: SizedBox(width: 35, child: Center(child: Text(x[0]))));
240 | }).toList());
241 | }
242 | }
243 |
244 | class EmojisList extends StatelessWidget {
245 | const EmojisList({
246 | Key? key,
247 | required this.cross,
248 | required TextEditingController textController,
249 | required this.tabController,
250 | }) : _textController = textController,
251 | super(key: key);
252 |
253 | final int cross;
254 | final TextEditingController _textController;
255 | final TabController tabController;
256 | @override
257 | Widget build(BuildContext context) {
258 | return Expanded(
259 | child: TabBarView(
260 | controller: tabController,
261 | children: emojis.map((e) {
262 | final x = e.split(' ');
263 | return GridView.builder(
264 | itemCount: x.length,
265 | scrollDirection: Axis.vertical,
266 | gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
267 | crossAxisCount: cross,
268 | mainAxisSpacing: 2,
269 | crossAxisSpacing: 2),
270 | itemBuilder: (context, index) => GestureDetector(
271 | onTap: () {
272 | _textController.text = _textController.text + x[index];
273 | },
274 | child: Container(
275 | decoration: BoxDecoration(
276 | color: Colors.green.shade50,
277 | borderRadius: BorderRadius.circular(10)),
278 | alignment: Alignment.center,
279 | child: FittedBox(
280 | child: Text(x[index],
281 | style: const TextStyle(fontSize: 30))))));
282 | }).toList()));
283 | }
284 | }
285 |
--------------------------------------------------------------------------------
/lib/emojis.dart:
--------------------------------------------------------------------------------
1 | List messages = [];
2 | List emojis = [
3 | emotions,
4 | gesturesAndBodyParts,
5 | peopleAndFantasy,
6 | clothingAndAccessories,
7 | animalsAndNature,
8 | foodAndDrink,
9 | activityAndSports,
10 | travelAndPlaces,
11 | currencySymbols,
12 | objects,
13 | flags
14 | ];
15 |
16 | String emotions =
17 | '😀 😃 😄 😁 😆 😅 😂 🤣 🥲 ☺️ 😊 😇 🙂 🙃 😉 😌 😍 🥰 😘 😗 😙 😚 😋 😛 😝 😜 🤪 🤨 🧐 🤓 😎 🥸 🤩 🥳 😏 😒 😞 😔 😟 😕 🙁 ☹️ 😣 😖 😫 😩 🥺 😢 😭 😤 😠 😡 🤬 🤯 😳 🥵 🥶 😱 😨 😰 😥 😓 🤗 🤔 🤭 🤫 🤥 😶 😐 😑 😬 🙄 😯 😦 😧 😮 😲 🥱 😴 🤤 😪 😵 🤐 🥴 🤢 🤮 🤧 😷 🤒 🤕 🤑 🤠 😈 👿 👹 👺 🤡 💩 👻 💀 ☠️ 👽 👾 🤖 🎃 😺 😸 😹 😻 😼 😽 🙀 😿 😾';
18 | String gesturesAndBodyParts =
19 | '$a1 $a2 $a3 $a4 $a5 $a6 🫀 🫁 🧠 🦷 🦴 👀 👁 👅 👄 💋 🩸';
20 | String peopleAndFantasy = '$b1 $b2 $b3 $b4 $b5 $b6';
21 | String clothingAndAccessories =
22 | '👘 🧳 🌂 ☂️ 🧵 🪡 🪢 🧶 👓 🕶 🥽 🥼 🦺 👔 👕 👖 🧣 🧤 🧥 🧦 👗 🥻 🩴 🩱 🩲 🩳 👙 👚 👛 👜 👝 🎒 👞 👟 🥾 🥿 👠 👡 🩰 👢 👑 👒 🎩 🎓 🧢 ⛑ 🪖 💄 💍 💼';
23 | String animalsAndNature =
24 | '🌴 🐶 🐱 🐭 🐹 🐰 🦊 🐻 🐼 🐻❄️ 🐨 🐯 🦁 🐮 🐷 🐽 🐸 🐵 🙈 🙉 🙊 🐒 🐔 🐧 🐦 🐤 🐣 🐥 🦆 🦅 🦉 🦇 🐺 🐗 🐴 🦄 🐝 🪱 🐛 🦋 🐌 🐞 🐜 🪰 🪲 🪳 🦟 🦗 🕷 🕸 🦂 🐢 🐍 🦎 🦖 🦕 🐙 🦑 🦐 🦞 🦀 🐡 🐠 🐟 🐬 🐳 🐋 🦈 🐊 🐅 🐆 🦓 🦍 🦧 🦣 🐘 🦛 🦏 🐪 🐫 🦒 🦘 🦬 🐃 🐂 🐄 🐎 🐖 🐏 🐑 🦙 🐐 🦌 🐕 🐩 🦮 🐕🦺 🐈 🐈⬛ 🪶 🐓 🦃 🦤 🦚 🦜 🦢 🦩 🕊 🐇 🦝 🦨 🦡 🦫 🦦 🦥 🐁 🐀 🐿 🦔 🐾 🐉 🐲 🌵 🎄 🌲 🌳 🪵 🌱 🌿 ☘️ 🍀 🎍 🪴 🎋 🍃 🍂 🍁 🍄 🐚 🪨 🌾 💐 🌷 🌹 🥀 🌺 🌸 🌼 🌻 🌞 🌝 🌛 🌜 🌚 🌕 🌖 🌗 🌘 🌑 🌒 🌓 🌔 🌙 🌎 🌍 🌏 🪐 💫 ⭐️ 🌟 ✨ ⚡️ ☄️ 💥 🔥 🌪 🌈 ☀️ 🌤 ⛅️ 🌥 ☁️ 🌦 🌧 ⛈ 🌩 🌨 ❄️ ☃️ ⛄️ 🌬 💨 💧 💦 ☔️ ☂️ 🌊 🌫';
25 | String foodAndDrink =
26 | '🍉 🍏 🍎 🍐 🍊 🍋 🍌 🍇 🍓 🫐 🍈 🍒 🍑 🥭 🍍 🥥 🥝 🍅 🍆 🥑 🥦 🥬 🥒 🌶 🫑 🌽 🥕 🫒 🧄 🧅 🥔 🍠 🥐 🥯 🍞 🥖 🥨 🧀 🥚 🍳 🧈 🥞 🧇 🥓 🥩 🍗 🍖 🦴 🌭 🍔 🍟 🍕 🫓 🥪 🥙 🧆 🌮 🌯 🫔 🥗 🥘 🫕 🥫 🍝 🍜 🍲 🍛 🍣 🍱 🥟 🦪 🍤 🍙 🍚 🍘 🍥 🥠 🥮 🍢 🍡 🍧 🍨 🍦 🥧 🧁 🍰 🎂 🍮 🍭 🍬 🍫 🍿 🍩 🍪 🌰 🥜 🍯 🥛 🍼 🫖 ☕️ 🍵 🧃 🥤 🧋 🍶 🍺 🍻 🥂 🍷 🥃 🍸 🍹 🧉 🍾 🧊 🥄 🍴 🍽 🥣 🥡 🥢 🧂';
27 | String activityAndSports =
28 | '🏀 ⚽️ 🏈 ⚾️ 🥎 🎾 🏐 🏉 🥏 🎱 🪀 🏓 🏸 🏒 🏑 🥍 🏏 🪃 🥅 ⛳️ 🪁 🏹 🎣 🤿 🥊 🥋 🎽 🛹 🛼 🛷 ⛸ 🥌 🎿 ⛷ 🏂 🪂 🏋️♀️ 🏋️ 🏋️♂️ 🤼♀️ 🤼 🤼♂️ 🤸♀️ 🤸 🤸♂️ ⛹️♀️ ⛹️ ⛹️♂️ 🤺 🤾♀️ 🤾 🤾♂️ 🏌️♀️ 🏌️ 🏌️♂️ 🏇 🧘♀️ 🧘 🧘♂️ 🏄♀️ 🏄 🏄♂️ 🏊♀️ 🏊 🏊♂️ 🤽♀️ 🤽 🤽♂️ 🚣♀️ 🚣 🚣♂️ 🧗♀️ 🧗 🧗♂️ 🚵♀️ 🚵 🚵♂️ 🚴♀️ 🚴 🚴♂️ 🏆 🥇 🥈 🥉 🏅 🎖 🏵 🎗 🎫 🎟 🎪 🤹 🤹♂️ 🤹♀️ 🎭 🩰 🎨 🎬 🎤 🎧 🎼 🎹 🥁 🪘 🎷 🎺 🪗 🎸 🪕 🎻 🎲 ♟ 🎯 🎳 🎮 🎰 🧩';
29 | String travelAndPlaces =
30 | '🚚 🚗 🚕 🚙 🚌 🚎 🏎 🚓 🚑 🚒 🚐 🛻 🚛 🚜 🦯 🦽 🦼 🛴 🚲 🛵 🏍 🛺 🚨 🚔 🚍 🚘 🚖 🚡 🚠 🚟 🚃 🚋 🚞 🚝 🚄 🚅 🚈 🚂 🚆 🚇 🚊 🚉 ✈️ 🛫 🛬 🛩 💺 🛰 🚀 🛸 🚁 🛶 ⛵️ 🚤 🛥 🛳 ⛴ 🚢 ⚓️ 🪝 ⛽️ 🚧 🚦 🚥 🚏 🗺 🗿 🗽 🗼 🏰 🏯 🏟 🎡 🎢 🎠 ⛲️ ⛱ 🏖 🏝 🏜 🌋 ⛰ 🏔 🗻 🏕 ⛺️ 🛖 🏠 🏡 🏘 🏚 🏗 🏭 🏢 🏬 🏣 🏤 🏥 🏦 🏨 🏪 🏫 🏩 💒 🏛 ⛪️ 🕌 🕍 🛕 🕋 ⛩ 🛤 🛣 🗾 🎑 🏞 🌅 🌄 🌠 🎇 🎆 🌇 🌆 🏙 🌃 🌌 🌉 🌁';
31 | String currencySymbols =
32 | '\$ € ¥ ¢ £ ₽ ₨ ₩ ฿ ₺ ₮ ₱ ₭ ₴ ₦ ৲ ৳ ૱ ௹ ﷼ ₹ ₲ ₪ ₡ ₫ ៛ ₵ ₢ ₸ ₤ ₳ ₥ ₠ ₣ ₰ ₧ ₯ ₶ ₷';
33 | String objects =
34 | '🔨 🧲 ⌚️ 📱 📲 💻 ⌨️ 🖥 🖨 🖱 🖲 🕹 🗜 💽 💾 💿 📀 📼 📷 📸 📹 🎥 📽 🎞 📞 ☎️ 📟 📠 📺 📻 🎙 🎚 🎛 🧭 ⏱ ⏲ ⏰ 🕰 ⌛️ ⏳ 📡 🔋 🔌 💡 🔦 🕯 🪔 🧯 🛢 💸 💵 💴 💶 💷 🪙 💰 💳 💎 ⚖️ 🪜 🧰 🪛 🔧 ⚒ 🛠 ⛏ 🪚 🔩 ⚙️ 🪤 🧱 ⛓ 🔫 💣 🧨 🪓 🔪 🗡 ⚔️ 🛡 🚬 ⚰️ 🪦 ⚱️ 🏺 🔮 📿 🧿 💈 ⚗️ 🔭 🔬 🕳 🩹 🩺 💊 💉 🩸 🧬 🦠 🧫 🧪 🌡 🧹 🪠 🧺 🧻 🚽 🚰 🚿 🛁 🛀 🧼 🪥 🪒 🧽 🪣 🧴 🛎 🔑 🗝 🚪 🪑 🛋 🛏 🛌 🧸 🪆 🖼 🪞 🪟 🛍 🛒 🎁 🎈 🎏 🎀 🪄 🪅 🎊 🎉 🎎 🏮 🎐 🧧 ✉️ 📩 📨 📧 💌 📥 📤 📦 🏷 🪧 📪 📫 📬 📭 📮 📯 📜 📃 📄 📑 🧾 📊 📈 📉 🗒 🗓 📆 📅 🗑 📇 🗃 🗳 🗄 📋 📁 📂 🗂 🗞 📰 📓 📔 📒 📕 📗 📘 📙 📚 📖 🔖 🧷 🔗 📎 🖇 📐 📏 🧮 📌 📍 ✂️ 🖊 🖋 ✒️ 🖌 🖍 📝 ✏️ 🔍 🔎 🔏 🔐 🔒 🔓';
35 | String symbols =
36 | '❤️ 🧡 💛 💚 💙 💜 🖤 🤍 🤎 💔 ❣️ 💕 💞 💓 💗 💖 💘 💝 💟 ☮️ ✝️ ☪️ 🕉 ☸️ ✡️ 🔯 🕎 ☯️ ☦️ 🛐 ⛎ ♈️ ♉️ ♊️ ♋️ ♌️ ♍️ ♎️ ♏️ ♐️ ♑️ ♒️ ♓️ 🆔 ⚛️ 🉑 ☢️ ☣️ 📴 📳 🈶 🈚️ 🈸 🈺 🈷️ ✴️ 🆚 💮 🉐 ㊙️ ㊗️ 🈴 🈵 🈹 🈲 🅰️ 🅱️ 🆎 🆑 🅾️ 🆘 ❌ ⭕️ 🛑 ⛔️ 📛 🚫 💯 💢 ♨️ 🚷 🚯 🚳 🚱 🔞 📵 🚭 ❗️ ❕ ❓ ❔ ‼️ ⁉️ 🔅 🔆 〽️ ⚠️ 🚸 🔱 ⚜️ 🔰 ♻️ ✅ 🈯️ 💹 ❇️ ✳️ ❎ 🌐 💠 Ⓜ️ 🌀 💤 🏧 🚾 ♿️ 🅿️ 🛗 🈳 🈂️ 🛂 🛃 🛄 🛅 🚹 🚺 🚼 ⚧ 🚻 🚮 🎦 📶 🈁 🔣 ℹ️ 🔤 🔡 🔠 🆖 🆗 🆙 🆒 🆕 🆓 0️⃣ 1️⃣ 2️⃣ 3️⃣ 4️⃣ 5️⃣ 6️⃣ 7️⃣ 8️⃣ 9️⃣ 🔟 🔢 #️⃣ *️⃣ ⏏️ ▶️ ⏸ ⏯ ⏹ ⏺ ⏭ ⏮ ⏩ ⏪ ⏫ ⏬ ◀️ 🔼 🔽 ➡️ ⬅️ ⬆️ ⬇️ ↗️ ↘️ ↙️ ↖️ ↕️ ↔️ ↪️ ↩️ ⤴️ ⤵️ 🔀 🔁 🔂 🔄 🔃 🎵 🎶 ➕ ➖ ➗ ✖️ ♾ 💲 💱 ™️ ©️ ®️ 〰️ ➰ ➿ 🔚 🔙 🔛 🔝 🔜 ✔️ ☑️ 🔘 🔴 🟠 🟡 🟢 🔵 🟣 ⚫️ ⚪️ 🟤 🔺 🔻 🔸 🔹 🔶 🔷 🔳 🔲 ▪️ ▫️ ◾️ ◽️ ◼️ ◻️ 🟥 🟧 🟨 🟩 🟦 🟪 ⬛️ ⬜️ 🟫 🔈 🔇 🔉 🔊 🔔 🔕 📣 📢 👁🗨 💬 💭 🗯 ♠️ ♣️ ♥️ ♦️ 🃏 🎴 🀄️ 🕐 🕑 🕒 🕓 🕔 🕕 🕖 🕗 🕘 🕙 🕚 🕛 🕜 🕝 🕞 🕟 🕠 🕡 🕢 🕣 🕤 🕥 🕦 🕧';
37 | String nonEmojiSymbols =
38 | '✢ ✣ ✤ ✥ ✦ ✧ ★ ☆ ✯ ✡︎ ✩ ✪ ✫ ✬ ✭ ✮ ✶ ✷ ✵ ✸ ✹ ✺ ❊ ✻ ✽ ✼ ❉ ✱ ✲ ✾ ❃ ❋ ✳︎ ✴︎ ❇︎ ❈ ※ ❅ ❆ ❄︎ ⚙︎ ✿ ❀ ❁ ❂ ● ○ ◎ ◉ ⦿ ⁌ ⁍ ♠︎ ♣︎ ♥︎ ♦︎ ♤ ♧ ♡ ♢ 🂡 🂢 🂣 🂤 🂥 🂦 🂧 🂨 🂩 🂪 🂫 🂬 🂭 🂮 🂱 🂲 🂳 🂴 🂵 🂶 🂷 🂸 🂹 🂺 🂻 🂼 🂽 🂾 🃁 🃂 🃃 🃄 🃅 🃆 🃇 🃈 🃉 🃊 🃋 🃌 🃍 🃎 🃑 🃒 🃓 🃔 🃕 🃖 🃗 🃘 🃙 🃚 🃛 🃜 🃝 🃞 🃟 ♚ ♛ ♜ ♝ ♞ ♟ ♔ ♕ ♖ ♗ ♘ ♙ ⚀ ⚁ ⚂ ⚃ ⚄ ⚅ 🂠 ⚈ ⚉ ⚆ ⚇ → ⇒ ⟹ ⇨ ⇾ ➾ ⇢ ☛ ☞ ➔ ➜ ➙ ➛ ➝ ➞ ➟ ➠ ➡︎ ➢ ➣ ➤ ➥ ➦ ➧ ➨ ⥤ ⇀ ⇁ ⥛ ⥟ ⇰ ➩ ➪ ➫ ➬ ➭ ➮ ➯ ➱ ➲ ➳ ➵ ➸ ➻ ➺ ➼ ➽ ⟶ ⇉ ⇶ ⇛ ⇏ ⤃ ↛ ↝ ⤳ ↣ ↠ ↦ ⟼ ⤅ ⤇ ⟾ ⇥ ⥓ ⥗ ⇝ ⟿ ↬ ⇴ ⇸ ⇻ ⤀ ⤁ ⤍ ⤏ ⤐ ⤑ ⤔ ⤕ ⤖ ⤗ ⤘ ⤙ ⤛ ⤞ ⤠ ⤻ ⤼ ⥅ ⥴ ⥵ ⥱ ⥲ ⥇ ⥈ ⥬ ⥭ ← ⇐ ⟸ ⇦ ⇽ ⇠ ☚ ☜ ⬅︎ ⥢ ⟵ ↼ ↽ ⥚ ↚ ↜ ↢ ↞ ↤ ⟻ ⤆ ⟽ ⇇ ⇤ ⥒ ⥖ ⥞ ⇚ ⇍ ⤂ ⇜ ↫ ⇷ ⇺ ⤌ ⤎ ⤚ ⤜ ⤝ ⤟ ⤺ ⤽ ⥆ ⥳ ⥪ ⥫ ↑ ⇑ ⇡ ☝︎ ⬆︎ ⇧ ⇪ ⥣ ↟ ↾ ↿ ⥔ ⥘ ⥜ ⥠ ⟰ ⤊ ↥ ⇫ ⇬ ⇭ ⇮ ⇯ ⇈ ⤉ ⇞ ⤒ ⥉ ↓ ⇓ ⇩ ⇣ ☟ ⬇︎ ⥥ ↡ ⇂ ⇃ ⥝ ⥡ ⇊ ⟱ ⤋ ↧ ⥕ ⥙ ↯ ⤈ ⇟ ⤓ ↔︎ ⇔ ⟺ ⬄ ⇿ ⬌ ⟷ ⥊ ⥋ ⥎ ⥐ ⥦ ⥧ ⥨ ⥩ ⥪ ⥫ ⥬ ⥭ ⇋ ⇌ ⇄ ⇆ ↹ ⇎ ⤄ ↭ ↮ ⇹ ⇼ ⥂ ⥃ ⥄ ↕︎ ⇕ ⇳ ⬍ ⥌ ⥍ ⥏ ⥑ ⥮ ⥯ ⇅ ↨ ⇵ ↘︎ ➘ ⇘ ⬂ ⬊ ⇲ ➷ ➴ ⤥ ⤵︎ ⤷ ↗︎ ➚ ⇗ ⬀ ⬈ ➹ ➶ ⤤ ⤴︎ ↖︎ ⇖ ⬁ ⬉ ⤣ ↸ ⇱ ↙︎ ⇙ ⬃ ⬋ ⤦ ⤶ ⤹ ⤡ ⤢ ⤸ ↵ ↲ ↩︎ ↳ ↪︎ ↰ ↱ ↴ ↶ ↷ ↺ ⟲ ⥀ ↻ ⟳ ⤾ ⤿ ⤺ ⤻ ⤼ ⤽ ⥆ ⥅ ⥁ ⤧ ⤨ ⤩ ⤪ ⤫ ⤬ ⤭ ⤮ ⤯ ⤰ ⤱ ⤲ ⥶ ⥷ ⥸ ⥺ ⥰ ⥹ ⥻ ⥼ ⥽ ⥾ ⥿ ⎯ ⏐ ▶︎ ▷ ‣ ▸ ▹ ► ▻ ◀︎ ◁ ▼ ▽ ▾ ▿ ▴ ▵ ▲ △ ☞ ☛ ➢ ➣ ➤ ☀︎ ☼ ☽ ☾ ☁︎ ☂︎ ☔︎ ☃︎ ☇ ☈ ☻ ☹︎ ☺︎ ☕︎ ✌︎ ✍︎ ✎ ✏︎ ✐ ✑ ✒︎ ✁ ✂︎ ✃ ✄ ⚾︎ ✇ ✈︎ ⚓︎ ♨︎ ♈︎ ♉︎ ♊︎ ♋︎ ♌︎ ♍︎ ♎︎ ♏︎ ♐︎ ♑︎ ♒︎ ♓︎ ☉ ☿ ♀︎ ♁ ♂︎ ♃ ♄ ♅ ⛢ ♆ ♇ ☄︎ ⚲ ⚢ ⚣ ⚤ ⚦ ⚧ ⚨ ⚩ ⚬ ⚭ ⚮ ⚯ ⚰︎ ⚱︎ ☊ ☋ ☌ ☍ ✦ ✧ ✙ ✚ ✛ ✜ ✝︎ ✞ ✟ ✠ ☦︎ ☨ ☩ ☥ ♰ ♱ ☓ ⚜︎ ☤ ⚚ ⚕︎ ⚖︎ ⚗︎ ⚙︎ ⚘ ☘︎ ⚛︎ ☧ ⚒︎ ☭ ☪︎ ☫ ☬ ⚑ ⚐ ☮︎ ☯︎ ☸︎ ⚔︎ ☗ ☖ ■ □ ☐ ☑︎ ☒ ▪︎ ▫︎ ◻︎ ◼︎ ◘ ◆ ◇ ❖ ✓ ✔︎ ✕ ✖︎ ✗ ✘ ﹅ ﹆ ❍ ❏ ❐ ❑ ❒ ✰ ❤︎ ❥ ☙ ❧ ❦ ❡';
39 | String flags =
40 | '🇧🇩 🏳️ 🏴 🏁 🚩 🏳️🌈 🏳️⚧️ 🏴☠️ 🇦🇫 🇦🇽 🇦🇱 🇩🇿 🇦🇸 🇦🇩 🇦🇴 🇦🇮 🇦🇶 🇦🇬 🇦🇷 🇦🇲 🇦🇼 🇦🇺 🇦🇹 🇦🇿 🇧🇸 🇧🇭 🇧🇩 🇧🇧 🇧🇾 🇧🇪 🇧🇿 🇧🇯 🇧🇲 🇧🇹 🇧🇴 🇧🇦 🇧🇼 🇧🇷 🇮🇴 🇻🇬 🇧🇳 🇧🇬 🇧🇫 🇧🇮 🇰🇭 🇨🇲 🇨🇦 🇮🇨 🇨🇻 🇧🇶 🇰🇾 🇨🇫 🇹🇩 🇨🇱 🇨🇳 🇨🇽 🇨🇨 🇨🇴 🇰🇲 🇨🇬 🇨🇩 🇨🇰 🇨🇷 🇨🇮 🇭🇷 🇨🇺 🇨🇼 🇨🇾 🇨🇿 🇩🇰 🇩🇯 🇩🇲 🇩🇴 🇪🇨 🇪🇬 🇸🇻 🇬🇶 🇪🇷 🇪🇪 🇪🇹 🇪🇺 🇫🇰 🇫🇴 🇫🇯 🇫🇮 🇫🇷 🇬🇫 🇵🇫 🇹🇫 🇬🇦 🇬🇲 🇬🇪 🇩🇪 🇬🇭 🇬🇮 🇬🇷 🇬🇱 🇬🇩 🇬🇵 🇬🇺 🇬🇹 🇬🇬 🇬🇳 🇬🇼 🇬🇾 🇭🇹 🇭🇳 🇭🇰 🇭🇺 🇮🇸 🇮🇳 🇮🇩 🇮🇷 🇮🇶 🇮🇪 🇮🇲 🇮🇱 🇮🇹 🇯🇲 🇯🇵 🎌 🇯🇪 🇯🇴 🇰🇿 🇰🇪 🇰🇮 🇽🇰 🇰🇼 🇰🇬 🇱🇦 🇱🇻 🇱🇧 🇱🇸 🇱🇷 🇱🇾 🇱🇮 🇱🇹 🇱🇺 🇲🇴 🇲🇰 🇲🇬 🇲🇼 🇲🇾 🇲🇻 🇲🇱 🇲🇹 🇲🇭 🇲🇶 🇲🇷 🇲🇺 🇾🇹 🇲🇽 🇫🇲 🇲🇩 🇲🇨 🇲🇳 🇲🇪 🇲🇸 🇲🇦 🇲🇿 🇲🇲 🇳🇦 🇳🇷 🇳🇵 🇳🇱 🇳🇨 🇳🇿 🇳🇮 🇳🇪 🇳🇬 🇳🇺 🇳🇫 🇰🇵 🇲🇵 🇳🇴 🇴🇲 🇵🇰 🇵🇼 🇵🇸 🇵🇦 🇵🇬 🇵🇾 🇵🇪 🇵🇭 🇵🇳 🇵🇱 🇵🇹 🇵🇷 🇶🇦 🇷🇪 🇷🇴 🇷🇺 🇷🇼 🇼🇸 🇸🇲 🇸🇦 🇸🇳 🇷🇸 🇸🇨 🇸🇱 🇸🇬 🇸🇽 🇸🇰 🇸🇮 🇬🇸 🇸🇧 🇸🇴 🇿🇦 🇰🇷 🇸🇸 🇪🇸 🇱🇰 🇧🇱 🇸🇭 🇰🇳 🇱🇨 🇵🇲 🇻🇨 🇸🇩 🇸🇷 🇸🇿 🇸🇪 🇨🇭 🇸🇾 🇹🇼 🇹🇯 🇹🇿 🇹🇭 🇹🇱 🇹🇬 🇹🇰 🇹🇴 🇹🇹 🇹🇳 🇹🇷 🇹🇲 🇹🇨 🇹🇻 🇻🇮 🇺🇬 🇺🇦 🇦🇪 🇬🇧 🏴 🏴 🏴 🇺🇳 🇺🇸 🇺🇾 🇺🇿 🇻🇺 🇻🇦 🇻🇪 🇻🇳 🇼🇫 🇪🇭 🇾🇪 🇿🇲 🇿🇼';
41 |
42 | String a1 =
43 | '👋🏻 🤚🏻 🖐🏻 ✋🏻 🖖🏻 👌🏻 🤌🏻 🤏🏻 ✌🏻 🤞🏻 🤟🏻 🤘🏻 🤙🏻 👈🏻 👉🏻 👆🏻 🖕🏻 👇🏻 ☝🏻 👍🏻 👎🏻 ✊🏻 👊🏻 🤛🏻 🤜🏻 👏🏻 🙌🏻 👐🏻 🤲🏻 🙏🏻 ✍🏻 💅🏻 🤳🏻 💪🏻 🦵🏻 🦶🏻 👂🏻 🦻🏻 👃🏻';
44 | String a2 =
45 | '👋 🤚 🖐 ✋ 🖖 👌 🤌 🤏 ✌️ 🤞 🤟 🤘 🤙 👈 👉 👆 🖕 👇 ☝️ 👍 👎 ✊ 👊 🤛 🤜 👏 🙌 👐 🤲 🤝 🙏 ✍️ 💅 🤳 💪 🦾 🦵 🦿 🦶 👣 👂 🦻 👃';
46 | String a3 =
47 | '👋🏼 🤚🏼 🖐🏼 ✋🏼 🖖🏼 👌🏼 🤌🏼 🤏🏼 ✌🏼 🤞🏼 🤟🏼 🤘🏼 🤙🏼 👈🏼 👉🏼 👆🏼 🖕🏼 👇🏼 ☝🏼 👍🏼 👎🏼 ✊🏼 👊🏼 🤛🏼 🤜🏼 👏🏼 🙌🏼 👐🏼 🤲🏼 🙏🏼 ✍🏼 💅🏼 🤳🏼 💪🏼 🦵🏼 🦶🏼 👂🏼 🦻🏼 👃🏼';
48 | String a4 =
49 | '👋🏽 🤚🏽 🖐🏽 ✋🏽 🖖🏽 👌🏽 🤌🏽 🤏🏽 ✌🏽 🤞🏽 🤟🏽 🤘🏽 🤙🏽 👈🏽 👉🏽 👆🏽 🖕🏽 👇🏽 ☝🏽 👍🏽 👎🏽 ✊🏽 👊🏽 🤛🏽 🤜🏽 👏🏽 🙌🏽 👐🏽 🤲🏽 🙏🏽 ✍🏽 💅🏽 🤳🏽 💪🏽 🦵🏽 🦶🏽 👂🏽 🦻🏽 👃🏽';
50 | String a5 =
51 | '👋🏾 🤚🏾 🖐🏾 ✋🏾 🖖🏾 👌🏾 🤌🏾 🤏🏾 ✌🏾 🤞🏾 🤟🏾 🤘🏾 🤙🏾 👈🏾 👉🏾 👆🏾 🖕🏾 👇🏾 ☝🏾 👍🏾 👎🏾 ✊🏾 👊🏾 🤛🏾 🤜🏾 👏🏾 🙌🏾 👐🏾 🤲🏾 🙏🏾 ✍🏾 💅🏾 🤳🏾 💪🏾 🦵🏾 🦶🏾 👂🏾 🦻🏾 👃🏾';
52 | String a6 =
53 | '👋🏿 🤚🏿 🖐🏿 ✋🏿 🖖🏿 👌🏿 🤌🏿 🤏🏿 ✌🏿 🤞🏿 🤟🏿 🤘🏿 🤙🏿 👈🏿 👉🏿 👆🏿 🖕🏿 👇🏿 ☝🏿 👍🏿 👎🏿 ✊🏿 👊🏿 🤛🏿 🤜🏿 👏🏿 🙌🏿 👐🏿 🤲🏿 🙏🏿 ✍🏿 💅🏿 🤳🏿 💪🏿 🦵🏿 🦶🏿 👂🏿 🦻🏿 👃🏿';
54 |
55 | String b1 =
56 | '🧑🏻 👶🏻 👧🏻 🧒🏻 👦🏻 👩🏻 👨🏻 👩🏻🦱 🧑🏻🦱 👨🏻🦱 👩🏻🦰 🧑🏻🦰 👨🏻🦰 👱🏻♀️ 👱🏻 👱🏻♂️ 👩🏻🦳 🧑🏻🦳 👨🏻🦳 👩🏻🦲 🧑🏻🦲 👨🏻🦲 🧔🏻 👵🏻 🧓🏻 👴🏻 👲🏻 👳🏻♀️ 👳🏻 👳🏻♂️ 🧕🏻 👮🏻♀️ 👮🏻 👮🏻♂️ 👷🏻♀️ 👷🏻 👷🏻♂️ 💂🏻♀️ 💂🏻 💂🏻♂️ 🕵🏻♀️ 🕵🏻 🕵🏻♂️ 👩🏻⚕️ 🧑🏻⚕️ 👨🏻⚕️ 👩🏻🌾 🧑🏻🌾 👨🏻🌾 👩🏻🍳 🧑🏻🍳 👨🏻🍳 👩🏻🎓 🧑🏻🎓 👨🏻🎓 👩🏻🎤 🧑🏻🎤 👨🏻🎤 👩🏻🏫 🧑🏻🏫 👨🏻🏫 👩🏻🏭 🧑🏻🏭 👨🏻🏭 👩🏻💻 🧑🏻💻 👨🏻💻 👩🏻💼 🧑🏻💼 👨🏻💼 👩🏻🔧 🧑🏻🔧 👨🏻🔧 👩🏻🔬 🧑🏻🔬 👨🏻🔬 👩🏻🎨 🧑🏻🎨 👨🏻🎨 👩🏻🚒 🧑🏻🚒 👨🏻🚒 👩🏻✈️ 🧑🏻✈️ 👨🏻✈️ 👩🏻🚀 🧑🏻🚀 👨🏻🚀 👩🏻⚖️ 🧑🏻⚖️ 👨🏻⚖️ 👰🏻♀️ 👰🏻 👰🏻♂️ 🤵🏻♀️ 🤵🏻 🤵🏻♂️ 👸🏻 🤴🏻 🥷🏻 🦸🏻♀️ 🦸🏻 🦸🏻♂️ 🦹🏻♀️ 🦹🏻 🦹🏻♂️ 🤶🏻 🧑🏻🎄 🎅🏻 🧙🏻♀️ 🧙🏻 🧙🏻♂️ 🧝🏻♀️ 🧝🏻 🧝🏻♂️ 🧛🏻♀️ 🧛🏻 🧛🏻♂️ 🧜🏻♀️ 🧜🏻 🧜🏻♂️ 🧚🏻♀️ 🧚🏻 🧚🏻♂️ 👼🏻 🤰🏻 🤱🏻 👩🏻🍼 🧑🏻🍼 👨🏻🍼 🙇🏻♀️ 🙇🏻 🙇🏻♂️ 💁🏻♀️ 💁🏻 💁🏻♂️ 🙅🏻♀️ 🙅🏻 🙅🏻♂️ 🙆🏻♀️ 🙆🏻 🙆🏻♂️ 🙋🏻♀️ 🙋🏻 🙋🏻♂️ 🧏🏻♀️ 🧏🏻 🧏🏻♂️ 🤦🏻♀️ 🤦🏻 🤦🏻♂️ 🤷🏻♀️ 🤷🏻 🤷🏻♂️ 🙎🏻♀️ 🙎🏻 🙎🏻♂️ 🙍🏻♀️ 🙍🏻 🙍🏻♂️ 💇🏻♀️ 💇🏻 💇🏻♂️ 💆🏻♀️ 💆🏻 💆🏻♂️ 🧖🏻♀️ 🧖🏻 🧖🏻♂️ 💃🏻 🕺🏻 🕴🏻 👩🏻🦽 🧑🏻🦽 👨🏻🦽 👩🏻🦼 🧑🏻🦼 👨🏻🦼 🚶🏻♀️ 🚶🏻 🚶🏻♂️ 👩🏻🦯 🧑🏻🦯 👨🏻🦯 🧎🏻♀️ 🧎🏻 🧎🏻♂️ 🏃🏻♀️ 🏃🏻 🏃🏻♂️ 🧍🏻♀️ 🧍🏻 🧍🏻♂️ 👭🏻 🧑🏻🤝🧑🏻 👬🏻 👫🏻 🧗🏻♀️ 🧗🏻 🧗🏻♂️ 🏇🏻 🏂🏻 🏌🏻♀️ 🏌🏻 🏌🏻♂️ 🏄🏻♀️ 🏄🏻 🏄🏻♂️ 🚣🏻♀️ 🚣🏻 🚣🏻♂️ 🏊🏻♀️ 🏊🏻 🏊🏻♂️ ⛹🏻♀️ ⛹🏻 ⛹🏻♂️ 🏋🏻♀️ 🏋🏻 🏋🏻♂️ 🚴🏻♀️ 🚴🏻 🚴🏻♂️ 🚵🏻♀️ 🚵🏻 🚵🏻♂️ 🤸🏻♀️ 🤸🏻 🤸🏻♂️ 🤽🏻♀️ 🤽🏻 🤽🏻♂️ 🤾🏻♀️ 🤾🏻 🤾🏻♂️ 🤹🏻♀️ 🤹🏻 🤹🏻♂️ 🧘🏻♀️ 🧘🏻 🧘🏻♂️ 🛀🏻 🛌🏻';
57 | String b2 =
58 | '🧑 👶 👧 🧒 👦 👩 👨 👩🦱 🧑🦱 👨🦱 👩🦰 🧑🦰 👨🦰 👱♀️ 👱 👱♂️ 👩🦳 🧑🦳 👨🦳 👩🦲 🧑🦲 👨🦲 🧔 👵 🧓 👴 👲 👳♀️ 👳 👳♂️ 🧕 👮♀️ 👮 👮♂️ 👷♀️ 👷 👷♂️ 💂♀️ 💂 💂♂️ 🕵️♀️ 🕵️ 🕵️♂️ 👩⚕️ 🧑⚕️ 👨⚕️ 👩🌾 🧑🌾 👨🌾 👩🍳 🧑🍳 👨🍳 👩🎓 🧑🎓 👨🎓 👩🎤 🧑🎤 👨🎤 👩🏫 🧑🏫 👨🏫 👩🏭 🧑🏭 👨🏭 👩💻 🧑💻 👨💻 👩💼 🧑💼 👨💼 👩🔧 🧑🔧 👨🔧 👩🔬 🧑🔬 👨🔬 👩🎨 🧑🎨 👨🎨 👩🚒 🧑🚒 👨🚒 👩✈️ 🧑✈️ 👨✈️ 👩🚀 🧑🚀 👨🚀 👩⚖️ 🧑⚖️ 👨⚖️ 👰♀️ 👰 👰♂️ 🤵♀️ 🤵 🤵♂️ 👸 🤴 🥷 🦸♀️ 🦸 🦸♂️ 🦹♀️ 🦹 🦹♂️ 🤶 🧑🎄 🎅 🧙♀️ 🧙 🧙♂️ 🧝♀️ 🧝 🧝♂️ 🧛♀️ 🧛 🧛♂️ 🧟♀️ 🧟 🧟♂️ 🧞♀️ 🧞 🧞♂️ 🧜♀️ 🧜 🧜♂️ 🧚♀️ 🧚 🧚♂️ 👼 🤰 🤱 👩🍼 🧑🍼 👨🍼 🙇♀️ 🙇 🙇♂️ 💁♀️ 💁 💁♂️ 🙅♀️ 🙅 🙅♂️ 🙆♀️ 🙆 🙆♂️ 🙋♀️ 🙋 🙋♂️ 🧏♀️ 🧏 🧏♂️ 🤦♀️ 🤦 🤦♂️ 🤷♀️ 🤷 🤷♂️ 🙎♀️ 🙎 🙎♂️ 🙍♀️ 🙍 🙍♂️ 💇♀️ 💇 💇♂️ 💆♀️ 💆 💆♂️ 🧖♀️ 🧖 🧖♂️ 💅 🤳 💃 🕺 👯♀️ 👯 👯♂️ 🕴 👩🦽 🧑🦽 👨🦽 👩🦼 🧑🦼 👨🦼 🚶♀️ 🚶 🚶♂️ 👩🦯 🧑🦯 👨🦯 🧎♀️ 🧎 🧎♂️ 🏃♀️ 🏃 🏃♂️ 🧍♀️ 🧍 🧍♂️ 👭 🧑🤝🧑 👬 👫 👩❤️👩 💑 👨❤️👨 👩❤️👨 👩❤️💋👩 💏 👨❤️💋👨 👩❤️💋👨 👪 👨👩👦 👨👩👧 👨👩👧👦 👨👩👦👦 👨👩👧👧 👨👨👦 👨👨👧 👨👨👧👦 👨👨👦👦 👨👨👧👧 👩👩👦 👩👩👧 👩👩👧👦 👩👩👦👦 👩👩👧👧 👨👦 👨👦👦 👨👧 👨👧👦 👨👧👧 👩👦 👩👦👦 👩👧 👩👧👦 👩👧👧 🗣 👤 👥 🫂';
59 | String b3 =
60 | '🧑🏼 👶🏼 👧🏼 🧒🏼 👦🏼 👩🏼 👨🏼 👩🏼🦱 🧑🏼🦱 👨🏼🦱 👩🏼🦰 🧑🏼🦰 👨🏼🦰 👱🏼♀️ 👱🏼 👱🏼♂️ 👩🏼🦳 🧑🏼🦳 👨🏼🦳 👩🏼🦲 🧑🏼🦲 👨🏼🦲 🧔🏼 👵🏼 🧓🏼 👴🏼 👲🏼 👳🏼♀️ 👳🏼 👳🏼♂️ 🧕🏼 👮🏼♀️ 👮🏼 👮🏼♂️ 👷🏼♀️ 👷🏼 👷🏼♂️ 💂🏼♀️ 💂🏼 💂🏼♂️ 🕵🏼♀️ 🕵🏼 🕵🏼♂️ 👩🏼⚕️ 🧑🏼⚕️ 👨🏼⚕️ 👩🏼🌾 🧑🏼🌾 👨🏼🌾 👩🏼🍳 🧑🏼🍳 👨🏼🍳 👩🏼🎓 🧑🏼🎓 👨🏼🎓 👩🏼🎤 🧑🏼🎤 👨🏼🎤 👩🏼🏫 🧑🏼🏫 👨🏼🏫 👩🏼🏭 🧑🏼🏭 👨🏼🏭 👩🏼💻 🧑🏼💻 👨🏼💻 👩🏼💼 🧑🏼💼 👨🏼💼 👩🏼🔧 🧑🏼🔧 👨🏼🔧 👩🏼🔬 🧑🏼🔬 👨🏼🔬 👩🏼🎨 🧑🏼🎨 👨🏼🎨 👩🏼🚒 🧑🏼🚒 👨🏼🚒 👩🏼✈️ 🧑🏼✈️ 👨🏼✈️ 👩🏼🚀 🧑🏼🚀 👨🏼🚀 👩🏼⚖️ 🧑🏼⚖️ 👨🏼⚖️ 👰🏼♀️ 👰🏼 👰🏼♂️ 🤵🏼♀️ 🤵🏼 🤵🏼♂️ 👸🏼 🤴🏼 🥷🏼 🦸🏼♀️ 🦸🏼 🦸🏼♂️ 🦹🏼♀️ 🦹🏼 🦹🏼♂️ 🤶🏼 🧑🏼🎄 🎅🏼 🧙🏼♀️ 🧙🏼 🧙🏼♂️ 🧝🏼♀️ 🧝🏼 🧝🏼♂️ 🧛🏼♀️ 🧛🏼 🧛🏼♂️ 🧜🏼♀️ 🧜🏼 🧜🏼♂️ 🧚🏼♀️ 🧚🏼 🧚🏼♂️ 👼🏼 🤰🏼 🤱🏼 👩🏼🍼 🧑🏼🍼 👨🏼🍼 🙇🏼♀️ 🙇🏼 🙇🏼♂️ 💁🏼♀️ 💁🏼 💁🏼♂️ 🙅🏼♀️ 🙅🏼 🙅🏼♂️ 🙆🏼♀️ 🙆🏼 🙆🏼♂️ 🙋🏼♀️ 🙋🏼 🙋🏼♂️ 🧏🏼♀️ 🧏🏼 🧏🏼♂️ 🤦🏼♀️ 🤦🏼 🤦🏼♂️ 🤷🏼♀️ 🤷🏼 🤷🏼♂️ 🙎🏼♀️ 🙎🏼 🙎🏼♂️ 🙍🏼♀️ 🙍🏼 🙍🏼♂️ 💇🏼♀️ 💇🏼 💇🏼♂️ 💆🏼♀️ 💆🏼 💆🏼♂️ 🧖🏼♀️ 🧖🏼 🧖🏼♂️ 💃🏼 🕺🏼 🕴🏼 👩🏼🦽 🧑🏼🦽 👨🏼🦽 👩🏼🦼 🧑🏼🦼 👨🏼🦼 🚶🏼♀️ 🚶🏼 🚶🏼♂️ 👩🏼🦯 🧑🏼🦯 👨🏼🦯 🧎🏼♀️ 🧎🏼 🧎🏼♂️ 🏃🏼♀️ 🏃🏼 🏃🏼♂️ 🧍🏼♀️ 🧍🏼 🧍🏼♂️ 👭🏼 🧑🏼🤝🧑🏼 👬🏼 👫🏼 🧗🏼♀️ 🧗🏼 🧗🏼♂️ 🏇🏼 🏂🏼 🏌🏼♀️ 🏌🏼 🏌🏼♂️ 🏄🏼♀️ 🏄🏼 🏄🏼♂️ 🚣🏼♀️ 🚣🏼 🚣🏼♂️ 🏊🏼♀️ 🏊🏼 🏊🏼♂️ ⛹🏼♀️ ⛹🏼 ⛹🏼♂️ 🏋🏼♀️ 🏋🏼 🏋🏼♂️ 🚴🏼♀️ 🚴🏼 🚴🏼♂️ 🚵🏼♀️ 🚵🏼 🚵🏼♂️ 🤸🏼♀️ 🤸🏼 🤸🏼♂️ 🤽🏼♀️ 🤽🏼 🤽🏼♂️ 🤾🏼♀️ 🤾🏼 🤾🏼♂️ 🤹🏼♀️ 🤹🏼 🤹🏼♂️ 🧘🏼♀️ 🧘🏼 🧘🏼♂️ 🛀🏼 🛌🏼';
61 | String b4 =
62 | '🧑🏽 👶🏽 👧🏽 🧒🏽 👦🏽 👩🏽 👨🏽 👩🏽🦱 🧑🏽🦱 👨🏽🦱 👩🏽🦰 🧑🏽🦰 👨🏽🦰 👱🏽♀️ 👱🏽 👱🏽♂️ 👩🏽🦳 🧑🏽🦳 👨🏽🦳 👩🏽🦲 🧑🏽🦲 👨🏽🦲 🧔🏽 👵🏽 🧓🏽 👴🏽 👲🏽 👳🏽♀️ 👳🏽 👳🏽♂️ 🧕🏽 👮🏽♀️ 👮🏽 👮🏽♂️ 👷🏽♀️ 👷🏽 👷🏽♂️ 💂🏽♀️ 💂🏽 💂🏽♂️ 🕵🏽♀️ 🕵🏽 🕵🏽♂️ 👩🏽⚕️ 🧑🏽⚕️ 👨🏽⚕️ 👩🏽🌾 🧑🏽🌾 👨🏽🌾 👩🏽🍳 🧑🏽🍳 👨🏽🍳 👩🏽🎓 🧑🏽🎓 👨🏽🎓 👩🏽🎤 🧑🏽🎤 👨🏽🎤 👩🏽🏫 🧑🏽🏫 👨🏽🏫 👩🏽🏭 🧑🏽🏭 👨🏽🏭 👩🏽💻 🧑🏽💻 👨🏽💻 👩🏽💼 🧑🏽💼 👨🏽💼 👩🏽🔧 🧑🏽🔧 👨🏽🔧 👩🏽🔬 🧑🏽🔬 👨🏽🔬 👩🏽🎨 🧑🏽🎨 👨🏽🎨 👩🏽🚒 🧑🏽🚒 👨🏽🚒 👩🏽✈️ 🧑🏽✈️ 👨🏽✈️ 👩🏽🚀 🧑🏽🚀 👨🏽🚀 👩🏽⚖️ 🧑🏽⚖️ 👨🏽⚖️ 👰🏽♀️ 👰🏽 👰🏽♂️ 🤵🏽♀️ 🤵🏽 🤵🏽♂️ 👸🏽 🤴🏽 🥷🏽 🦸🏽♀️ 🦸🏽 🦸🏽♂️ 🦹🏽♀️ 🦹🏽 🦹🏽♂️ 🤶🏽 🧑🏽🎄 🎅🏽 🧙🏽♀️ 🧙🏽 🧙🏽♂️ 🧝🏽♀️ 🧝🏽 🧝🏽♂️ 🧛🏽♀️ 🧛🏽 🧛🏽♂️ 🧜🏽♀️ 🧜🏽 🧜🏽♂️ 🧚🏽♀️ 🧚🏽 🧚🏽♂️ 👼🏽 🤰🏽 🤱🏽 👩🏽🍼 🧑🏽🍼 👨🏽🍼 🙇🏽♀️ 🙇🏽 🙇🏽♂️ 💁🏽♀️ 💁🏽 💁🏽♂️ 🙅🏽♀️ 🙅🏽 🙅🏽♂️ 🙆🏽♀️ 🙆🏽 🙆🏽♂️ 🙋🏽♀️ 🙋🏽 🙋🏽♂️ 🧏🏽♀️ 🧏🏽 🧏🏽♂️ 🤦🏽♀️ 🤦🏽 🤦🏽♂️ 🤷🏽♀️ 🤷🏽 🤷🏽♂️ 🙎🏽♀️ 🙎🏽 🙎🏽♂️ 🙍🏽♀️ 🙍🏽 🙍🏽♂️ 💇🏽♀️ 💇🏽 💇🏽♂️ 💆🏽♀️ 💆🏽 💆🏽♂️ 🧖🏽♀️ 🧖🏽 🧖🏽♂️ 💃🏽 🕺🏽 🕴🏽 👩🏽🦽 🧑🏽🦽 👨🏽🦽 👩🏽🦼 🧑🏽🦼 👨🏽🦼 🚶🏽♀️ 🚶🏽 🚶🏽♂️ 👩🏽🦯 🧑🏽🦯 👨🏽🦯 🧎🏽♀️ 🧎🏽 🧎🏽♂️ 🏃🏽♀️ 🏃🏽 🏃🏽♂️ 🧍🏽♀️ 🧍🏽 🧍🏽♂️ 👭🏽 🧑🏽🤝🧑🏽 👬🏽 👫🏽 🧗🏽♀️ 🧗🏽 🧗🏽♂️ 🏇🏽 🏂🏽 🏌🏽♀️ 🏌🏽 🏌🏽♂️ 🏄🏽♀️ 🏄🏽 🏄🏽♂️ 🚣🏽♀️ 🚣🏽 🚣🏽♂️ 🏊🏽♀️ 🏊🏽 🏊🏽♂️ ⛹🏽♀️ ⛹🏽 ⛹🏽♂️ 🏋🏽♀️ 🏋🏽 🏋🏽♂️ 🚴🏽♀️ 🚴🏽 🚴🏽♂️ 🚵🏽♀️ 🚵🏽 🚵🏽♂️ 🤸🏽♀️ 🤸🏽 🤸🏽♂️ 🤽🏽♀️ 🤽🏽 🤽🏽♂️ 🤾🏽♀️ 🤾🏽 🤾🏽♂️ 🤹🏽♀️ 🤹🏽 🤹🏽♂️ 🧘🏽♀️ 🧘🏽 🧘🏽♂️ 🛀🏽 🛌🏽';
63 | String b5 =
64 | '🧑🏾 👶🏾 👧🏾 🧒🏾 👦🏾 👩🏾 👨🏾 👩🏾🦱 🧑🏾🦱 👨🏾🦱 👩🏾🦰 🧑🏾🦰 👨🏾🦰 👱🏾♀️ 👱🏾 👱🏾♂️ 👩🏾🦳 🧑🏾🦳 👨🏾🦳 👩🏾🦲 🧑🏾🦲 👨🏾🦲 🧔🏾 👵🏾 🧓🏾 👴🏾 👲🏾 👳🏾♀️ 👳🏾 👳🏾♂️ 🧕🏾 👮🏾♀️ 👮🏾 👮🏾♂️ 👷🏾♀️ 👷🏾 👷🏾♂️ 💂🏾♀️ 💂🏾 💂🏾♂️ 🕵🏾♀️ 🕵🏾 🕵🏾♂️ 👩🏾⚕️ 🧑🏾⚕️ 👨🏾⚕️ 👩🏾🌾 🧑🏾🌾 👨🏾🌾 👩🏾🍳 🧑🏾🍳 👨🏾🍳 👩🏾🎓 🧑🏾🎓 👨🏾🎓 👩🏾🎤 🧑🏾🎤 👨🏾🎤 👩🏾🏫 🧑🏾🏫 👨🏾🏫 👩🏾🏭 🧑🏾🏭 👨🏾🏭 👩🏾💻 🧑🏾💻 👨🏾💻 👩🏾💼 🧑🏾💼 👨🏾💼 👩🏾🔧 🧑🏾🔧 👨🏾🔧 👩🏾🔬 🧑🏾🔬 👨🏾🔬 👩🏾🎨 🧑🏾🎨 👨🏾🎨 👩🏾🚒 🧑🏾🚒 👨🏾🚒 👩🏾✈️ 🧑🏾✈️ 👨🏾✈️ 👩🏾🚀 🧑🏾🚀 👨🏾🚀 👩🏾⚖️ 🧑🏾⚖️ 👨🏾⚖️ 👰🏾♀️ 👰🏾 👰🏾♂️ 🤵🏾♀️ 🤵🏾 🤵🏾♂️ 👸🏾 🤴🏾 🥷🏾 🦸🏾♀️ 🦸🏾 🦸🏾♂️ 🦹🏾♀️ 🦹🏾 🦹🏾♂️ 🤶🏾 🧑🏾🎄 🎅🏾 🧙🏾♀️ 🧙🏾 🧙🏾♂️ 🧝🏾♀️ 🧝🏾 🧝🏾♂️ 🧛🏾♀️ 🧛🏾 🧛🏾♂️ 🧜🏾♀️ 🧜🏾 🧜🏾♂️ 🧚🏾♀️ 🧚🏾 🧚🏾♂️ 👼🏾 🤰🏾 🤱🏾 👩🏾🍼 🧑🏾🍼 👨🏾🍼 🙇🏾♀️ 🙇🏾 🙇🏾♂️ 💁🏾♀️ 💁🏾 💁🏾♂️ 🙅🏾♀️ 🙅🏾 🙅🏾♂️ 🙆🏾♀️ 🙆🏾 🙆🏾♂️ 🙋🏾♀️ 🙋🏾 🙋🏾♂️ 🧏🏾♀️ 🧏🏾 🧏🏾♂️ 🤦🏾♀️ 🤦🏾 🤦🏾♂️ 🤷🏾♀️ 🤷🏾 🤷🏾♂️ 🙎🏾♀️ 🙎🏾 🙎🏾♂️ 🙍🏾♀️ 🙍🏾 🙍🏾♂️ 💇🏾♀️ 💇🏾 💇🏾♂️ 💆🏾♀️ 💆🏾 💆🏾♂️ 🧖🏾♀️ 🧖🏾 🧖🏾♂️ 💃🏾 🕺🏾 🕴🏿 👩🏾🦽 🧑🏾🦽 👨🏾🦽 👩🏾🦼 🧑🏾🦼 👨🏾🦼 🚶🏾♀️ 🚶🏾 🚶🏾♂️ 👩🏾🦯 🧑🏾🦯 👨🏾🦯 🧎🏾♀️ 🧎🏾 🧎🏾♂️ 🏃🏾♀️ 🏃🏾 🏃🏾♂️ 🧍🏾♀️ 🧍🏾 🧍🏾♂️ 👭🏾 🧑🏾🤝🧑🏾 👬🏾 👫🏾 🧗🏾♀️ 🧗🏾 🧗🏾♂️ 🏇🏾 🏂🏾 🏌🏾♀️ 🏌🏾 🏌🏾♂️ 🏄🏾♀️ 🏄🏾 🏄🏾♂️ 🚣🏾♀️ 🚣🏾 🚣🏾♂️ 🏊🏾♀️ 🏊🏾 🏊🏾♂️ ⛹🏾♀️ ⛹🏾 ⛹🏾♂️ 🏋🏾♀️ 🏋🏾 🏋🏾♂️ 🚴🏾♀️ 🚴🏾 🚴🏾♂️ 🚵🏾♀️ 🚵🏾 🚵🏾♂️ 🤸🏾♀️ 🤸🏾 🤸🏾♂️ 🤽🏾♀️ 🤽🏾 🤽🏾♂️ 🤾🏾♀️ 🤾🏾 🤾🏾♂️ 🤹🏾♀️ 🤹🏾 🤹🏾♂️ 🧘🏾♀️ 🧘🏾 🧘🏾♂️ 🛀🏾 🛌🏾';
65 | String b6 =
66 | '🧑🏿 👶🏿 👧🏿 🧒🏿 👦🏿 👩🏿 👨🏿 👩🏿🦱 🧑🏿🦱 👨🏿🦱 👩🏿🦰 🧑🏿🦰 👨🏿🦰 👱🏿♀️ 👱🏿 👱🏿♂️ 👩🏿🦳 🧑🏿🦳 👨🏿🦳 👩🏿🦲 🧑🏿🦲 👨🏿🦲 🧔🏿 👵🏿 🧓🏿 👴🏿 👲🏿 👳🏿♀️ 👳🏿 👳🏿♂️ 🧕🏿 👮🏿♀️ 👮🏿 👮🏿♂️ 👷🏿♀️ 👷🏿 👷🏿♂️ 💂🏿♀️ 💂🏿 💂🏿♂️ 🕵🏿♀️ 🕵🏿 🕵🏿♂️ 👩🏿⚕️ 🧑🏿⚕️ 👨🏿⚕️ 👩🏿🌾 🧑🏿🌾 👨🏿🌾 👩🏿🍳 🧑🏿🍳 👨🏿🍳 👩🏿🎓 🧑🏿🎓 👨🏿🎓 👩🏿🎤 🧑🏿🎤 👨🏿🎤 👩🏿🏫 🧑🏿🏫 👨🏿🏫 👩🏿🏭 🧑🏿🏭 👨🏿🏭 👩🏿💻 🧑🏿💻 👨🏿💻 👩🏿💼 🧑🏿💼 👨🏿💼 👩🏿🔧 🧑🏿🔧 👨🏿🔧 👩🏿🔬 🧑🏿🔬 👨🏿🔬 👩🏿🎨 🧑🏿🎨 👨🏿🎨 👩🏿🚒 🧑🏿🚒 👨🏿🚒 👩🏿✈️ 🧑🏿✈️ 👨🏿✈️ 👩🏿🚀 🧑🏿🚀 👨🏿🚀 👩🏿⚖️ 🧑🏿⚖️ 👨🏿⚖️ 👰🏿♀️ 👰🏿 👰🏿♂️ 🤵🏿♀️ 🤵🏿 🤵🏿♂️ 👸🏿 🤴🏿 🥷🏿 🦸🏿♀️ 🦸🏿 🦸🏿♂️ 🦹🏿♀️ 🦹🏿 🦹🏿♂️ 🤶🏿 🧑🏿🎄 🎅🏿 🧙🏿♀️ 🧙🏿 🧙🏿♂️ 🧝🏿♀️ 🧝🏿 🧝🏿♂️ 🧛🏿♀️ 🧛🏿 🧛🏿♂️ 🧜🏿♀️ 🧜🏿 🧜🏿♂️ 🧚🏿♀️ 🧚🏿 🧚🏿♂️ 👼🏿 🤰🏿 🤱🏿 👩🏿🍼 🧑🏿🍼 👨🏿🍼 🙇🏿♀️ 🙇🏿 🙇🏿♂️ 💁🏿♀️ 💁🏿 💁🏿♂️ 🙅🏿♀️ 🙅🏿 🙅🏿♂️ 🙆🏿♀️ 🙆🏿 🙆🏿♂️ 🙋🏿♀️ 🙋🏿 🙋🏿♂️ 🧏🏿♀️ 🧏🏿 🧏🏿♂️ 🤦🏿♀️ 🤦🏿 🤦🏿♂️ 🤷🏿♀️ 🤷🏿 🤷🏿♂️ 🙎🏿♀️ 🙎🏿 🙎🏿♂️ 🙍🏿♀️ 🙍🏿 🙍🏿♂️ 💇🏿♀️ 💇🏿 💇🏿♂️ 💆🏿♀️ 💆🏿 💆🏿♂️ 🧖🏿♀️ 🧖🏿 🧖🏿♂️ 💃🏿 🕺🏿 🕴🏿 👩🏿🦽 🧑🏿🦽 👨🏿🦽 👩🏿🦼 🧑🏿🦼 👨🏿🦼 🚶🏿♀️ 🚶🏿 🚶🏿♂️ 👩🏿🦯 🧑🏿🦯 👨🏿🦯 🧎🏿♀️ 🧎🏿 🧎🏿♂️ 🏃🏿♀️ 🏃🏿 🏃🏿♂️ 🧍🏿♀️ 🧍🏿 🧍🏿♂️ 👭🏿 🧑🏿🤝🧑🏿 👬🏿 👫🏿 🧗🏿♀️ 🧗🏿 🧗🏿♂️ 🏇🏿 🏂🏿 🏌🏿♀️ 🏌🏿 🏌🏿♂️ 🏄🏿♀️ 🏄🏿 🏄🏿♂️ 🚣🏿♀️ 🚣🏿 🚣🏿♂️ 🏊🏿♀️ 🏊🏿 🏊🏿♂️ ⛹🏿♀️ ⛹🏿 ⛹🏿♂️ 🏋🏿♀️ 🏋🏿 🏋🏿♂️ 🚴🏿♀️ 🚴🏿 🚴🏿♂️ 🚵🏿♀️ 🚵🏿 🚵🏿♂️ 🤸🏿♀️ 🤸🏿 🤸🏿♂️ 🤽🏿♀️ 🤽🏿 🤽🏿♂️ 🤾🏿♀️ 🤾🏿 🤾🏿♂️ 🤹🏿♀️ 🤹🏿 🤹🏿♂️ 🧘🏿♀️ 🧘🏿 🧘🏿♂️ 🛀🏿 🛌🏿';
67 |
--------------------------------------------------------------------------------
/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.example.emoziKeyboard;
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.example.emoziKeyboard;
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.example.emoziKeyboard;
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 |
--------------------------------------------------------------------------------