├── .gitignore
├── .metadata
├── CHANGELOG.md
├── LICENSE
├── README.md
├── exemple
├── .gitignore
├── .metadata
├── android
│ ├── .gitignore
│ ├── app
│ │ ├── build.gradle
│ │ └── src
│ │ │ ├── debug
│ │ │ └── AndroidManifest.xml
│ │ │ ├── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── kotlin
│ │ │ │ └── com
│ │ │ │ │ └── example
│ │ │ │ │ └── exemple
│ │ │ │ │ └── MainActivity.kt
│ │ │ └── res
│ │ │ │ ├── drawable-v21
│ │ │ │ └── launch_background.xml
│ │ │ │ ├── drawable
│ │ │ │ └── launch_background.xml
│ │ │ │ ├── mipmap-hdpi
│ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-mdpi
│ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xhdpi
│ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xxhdpi
│ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xxxhdpi
│ │ │ │ └── ic_launcher.png
│ │ │ │ ├── values-night
│ │ │ │ └── styles.xml
│ │ │ │ └── values
│ │ │ │ └── styles.xml
│ │ │ └── profile
│ │ │ └── AndroidManifest.xml
│ ├── build.gradle
│ ├── gradle.properties
│ ├── gradle
│ │ └── wrapper
│ │ │ └── gradle-wrapper.properties
│ └── settings.gradle
├── ios
│ ├── .gitignore
│ ├── Flutter
│ │ ├── AppFrameworkInfo.plist
│ │ ├── Debug.xcconfig
│ │ └── Release.xcconfig
│ ├── Runner.xcodeproj
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ └── WorkspaceSettings.xcsettings
│ │ └── xcshareddata
│ │ │ └── xcschemes
│ │ │ └── Runner.xcscheme
│ ├── Runner.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ └── WorkspaceSettings.xcsettings
│ └── Runner
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ ├── Contents.json
│ │ │ ├── Icon-App-1024x1024@1x.png
│ │ │ ├── Icon-App-20x20@1x.png
│ │ │ ├── Icon-App-20x20@2x.png
│ │ │ ├── Icon-App-20x20@3x.png
│ │ │ ├── Icon-App-29x29@1x.png
│ │ │ ├── Icon-App-29x29@2x.png
│ │ │ ├── Icon-App-29x29@3x.png
│ │ │ ├── Icon-App-40x40@1x.png
│ │ │ ├── Icon-App-40x40@2x.png
│ │ │ ├── Icon-App-40x40@3x.png
│ │ │ ├── Icon-App-60x60@2x.png
│ │ │ ├── Icon-App-60x60@3x.png
│ │ │ ├── Icon-App-76x76@1x.png
│ │ │ ├── Icon-App-76x76@2x.png
│ │ │ └── Icon-App-83.5x83.5@2x.png
│ │ └── LaunchImage.imageset
│ │ │ ├── Contents.json
│ │ │ ├── LaunchImage.png
│ │ │ ├── LaunchImage@2x.png
│ │ │ ├── LaunchImage@3x.png
│ │ │ └── README.md
│ │ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ │ ├── Info.plist
│ │ └── Runner-Bridging-Header.h
├── lib
│ └── main.dart
├── pubspec.lock
├── pubspec.yaml
├── test
│ └── widget_test.dart
└── web
│ ├── favicon.png
│ ├── icons
│ ├── Icon-192.png
│ └── Icon-512.png
│ ├── index.html
│ └── manifest.json
├── lib
└── multiavatar.dart
├── pubspec.lock
├── pubspec.yaml
└── test
└── multiavatar_test.dart
/.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 | .dart_tool/
26 | .flutter-plugins
27 | .flutter-plugins-dependencies
28 | .packages
29 | .pub-cache/
30 | .pub/
31 | build/
32 |
33 | # Android related
34 | **/android/**/gradle-wrapper.jar
35 | **/android/.gradle
36 | **/android/captures/
37 | **/android/gradlew
38 | **/android/gradlew.bat
39 | **/android/local.properties
40 | **/android/**/GeneratedPluginRegistrant.java
41 |
42 | # iOS/XCode related
43 | **/ios/**/*.mode1v3
44 | **/ios/**/*.mode2v3
45 | **/ios/**/*.moved-aside
46 | **/ios/**/*.pbxuser
47 | **/ios/**/*.perspectivev3
48 | **/ios/**/*sync/
49 | **/ios/**/.sconsign.dblite
50 | **/ios/**/.tags*
51 | **/ios/**/.vagrant/
52 | **/ios/**/DerivedData/
53 | **/ios/**/Icon?
54 | **/ios/**/Pods/
55 | **/ios/**/.symlinks/
56 | **/ios/**/profile
57 | **/ios/**/xcuserdata
58 | **/ios/.generated/
59 | **/ios/Flutter/App.framework
60 | **/ios/Flutter/Flutter.framework
61 | **/ios/Flutter/Flutter.podspec
62 | **/ios/Flutter/Generated.xcconfig
63 | **/ios/Flutter/app.flx
64 | **/ios/Flutter/app.zip
65 | **/ios/Flutter/flutter_assets/
66 | **/ios/Flutter/flutter_export_environment.sh
67 | **/ios/ServiceDefinitions.json
68 | **/ios/Runner/GeneratedPluginRegistrant.*
69 |
70 | # Exceptions to above rules.
71 | !**/ios/**/default.mode1v3
72 | !**/ios/**/default.mode2v3
73 | !**/ios/**/default.pbxuser
74 | !**/ios/**/default.perspectivev3
75 |
--------------------------------------------------------------------------------
/.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: 9b2d32b605630f28625709ebd9d78ab3016b2bf6
8 | channel: stable
9 |
10 | project_type: package
11 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | ## 0.1.0
2 |
3 | * Multiavatar generator`.
4 | ## 0.1.1
5 |
6 | * Fix color ranges and improve the matching`.
7 | ## 0.1.2
8 |
9 | * Generate avatars with transparent background`.
10 | ## 0.1.3
11 |
12 | * update crypto dependencie + add exemple.
13 | * Generate avatars with transparent background`.
14 | ## 0.1.4
15 |
16 | * Migrate package to Null-Safety
17 | ## 0.1.5
18 |
19 | * Fix semi-colon removal bug
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2021 Iheb Briki
2 | Permission is hereby granted, free of charge, to any person obtaining a copy
3 | of this software and associated documentation files (the "Software"), to deal
4 | in the Software without restriction, including without limitation the rights
5 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
6 | copies of the Software, and to permit persons to whom the Software is
7 | furnished to do so, subject to the following conditions:
8 | The above copyright notice and this permission notice shall be included in all
9 | copies or substantial portions of the Software.
10 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
11 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
12 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
13 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
14 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
15 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
16 | SOFTWARE.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Multiavatar #
2 |
3 |
4 |
5 | Flutter Wrapper for [Multiavatar](https://multiavatar.com)
6 |
7 | [Multiavatar](https://multiavatar.com) is a multicultural avatar maker.
8 |
9 | Multiavatar represents people from multiple races, multiple cultures, multiple age groups, multiple worldviews and walks of life.
10 |
11 | In total, it is possible to generate **12,230,590,464** unique avatars.
12 |
13 |
14 |
15 | ### Installation and usage ###
16 |
17 | Add multiavatar to your pubspec:
18 |
19 | ```yaml
20 | dependencies:
21 | multiavatar: any # or the latest version on Pub
22 | ```
23 |
24 | ```dart
25 | var svgCode = multiavatar('X-SLAYER')
26 | ```
27 | avatar with transparent background
28 |
29 | ```dart
30 | var svgCode = multiavatar('X-SLAYER', trBackground: true);
31 | ```
32 |
33 | check the exemple of using multiavatar with svg package [Multiavatar + svg package](https://github.com/X-SLAYER/multiavatar-exemple)
34 |
35 | ### Info ###
36 |
37 | To create new avatars, the Multiavatar mixes different parts of different avatars, and different color themes.
38 |
39 | The total number of unique avatars: 48^6 = 12,230,590,464
40 |
41 | One of the main Multiavatar functions is to work as an identicon. Every unique avatar can be identified by the unique string of characters, associated with the avatar.
42 |
43 | The string of characters is also the input for the Multiavatar package, which converts the provided string into a 6 double-digit numbers (range 00-47), each representing an individual part of the final avatar.
44 |
45 | `000000000000` - this string of numbers represents the very first avatar + its A theme. You can also read it like this: `00 00 00 00 00 00`.
46 |
47 | `474747474747` - this is the 12,230,590,464th avatar (or the 16th initial avatar + its "C" color theme).
48 |
49 | More info can be found in the `multiavatar.dart` file comments.
50 |
51 |
52 |
53 | ### License ###
54 |
55 |
56 | A Dart implementation based on [Multiavatar](https://github.com/multiavatar) script for Flutter apps.
57 |
58 |
59 | ### Screenshots ###
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 | ## Visitors Count
71 |
72 |
--------------------------------------------------------------------------------
/exemple/.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 |
--------------------------------------------------------------------------------
/exemple/.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: 4d7946a68d26794349189cf21b3f68cc6fe61dcb
8 | channel: stable
9 |
10 | project_type: app
11 |
--------------------------------------------------------------------------------
/exemple/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 |
--------------------------------------------------------------------------------
/exemple/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 | sourceSets {
32 | main.java.srcDirs += 'src/main/kotlin'
33 | }
34 |
35 | defaultConfig {
36 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
37 | applicationId "com.example.exemple"
38 | minSdkVersion 16
39 | targetSdkVersion 30
40 | versionCode flutterVersionCode.toInteger()
41 | versionName flutterVersionName
42 | }
43 |
44 | buildTypes {
45 | release {
46 | // TODO: Add your own signing config for the release build.
47 | // Signing with the debug keys for now, so `flutter run --release` works.
48 | signingConfig signingConfigs.debug
49 | }
50 | }
51 | }
52 |
53 | flutter {
54 | source '../..'
55 | }
56 |
57 | dependencies {
58 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
59 | }
60 |
--------------------------------------------------------------------------------
/exemple/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/exemple/android/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
13 |
17 |
21 |
26 |
30 |
31 |
32 |
33 |
34 |
35 |
37 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/exemple/android/app/src/main/kotlin/com/example/exemple/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package com.example.exemple
2 |
3 | import io.flutter.embedding.android.FlutterActivity
4 |
5 | class MainActivity: FlutterActivity() {
6 | }
7 |
--------------------------------------------------------------------------------
/exemple/android/app/src/main/res/drawable-v21/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/exemple/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/exemple/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/X-SLAYER/Multiavatar/a68542bade4eaa6a6e459dc23541d425b749a6a2/exemple/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/exemple/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/X-SLAYER/Multiavatar/a68542bade4eaa6a6e459dc23541d425b749a6a2/exemple/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/exemple/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/X-SLAYER/Multiavatar/a68542bade4eaa6a6e459dc23541d425b749a6a2/exemple/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/exemple/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/X-SLAYER/Multiavatar/a68542bade4eaa6a6e459dc23541d425b749a6a2/exemple/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/exemple/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/X-SLAYER/Multiavatar/a68542bade4eaa6a6e459dc23541d425b749a6a2/exemple/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/exemple/android/app/src/main/res/values-night/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/exemple/android/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/exemple/android/app/src/profile/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/exemple/android/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | ext.kotlin_version = '1.3.50'
3 | repositories {
4 | google()
5 | jcenter()
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 | jcenter()
18 | }
19 | }
20 |
21 | rootProject.buildDir = '../build'
22 | subprojects {
23 | project.buildDir = "${rootProject.buildDir}/${project.name}"
24 | }
25 | subprojects {
26 | project.evaluationDependsOn(':app')
27 | }
28 |
29 | task clean(type: Delete) {
30 | delete rootProject.buildDir
31 | }
32 |
--------------------------------------------------------------------------------
/exemple/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx1536M
2 | android.useAndroidX=true
3 | android.enableJetifier=true
4 |
--------------------------------------------------------------------------------
/exemple/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 |
--------------------------------------------------------------------------------
/exemple/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 |
--------------------------------------------------------------------------------
/exemple/ios/.gitignore:
--------------------------------------------------------------------------------
1 | *.mode1v3
2 | *.mode2v3
3 | *.moved-aside
4 | *.pbxuser
5 | *.perspectivev3
6 | **/*sync/
7 | .sconsign.dblite
8 | .tags*
9 | **/.vagrant/
10 | **/DerivedData/
11 | Icon?
12 | **/Pods/
13 | **/.symlinks/
14 | profile
15 | xcuserdata
16 | **/.generated/
17 | Flutter/App.framework
18 | Flutter/Flutter.framework
19 | Flutter/Flutter.podspec
20 | Flutter/Generated.xcconfig
21 | Flutter/app.flx
22 | Flutter/app.zip
23 | Flutter/flutter_assets/
24 | Flutter/flutter_export_environment.sh
25 | ServiceDefinitions.json
26 | Runner/GeneratedPluginRegistrant.*
27 |
28 | # Exceptions to above rules.
29 | !default.mode1v3
30 | !default.mode2v3
31 | !default.pbxuser
32 | !default.perspectivev3
33 |
--------------------------------------------------------------------------------
/exemple/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 | 8.0
25 |
26 |
27 |
--------------------------------------------------------------------------------
/exemple/ios/Flutter/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Generated.xcconfig"
2 |
--------------------------------------------------------------------------------
/exemple/ios/Flutter/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Generated.xcconfig"
2 |
--------------------------------------------------------------------------------
/exemple/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.exemple;
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.exemple;
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.exemple;
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 |
--------------------------------------------------------------------------------
/exemple/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/exemple/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/exemple/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/exemple/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 |
--------------------------------------------------------------------------------
/exemple/ios/Runner.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/exemple/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/exemple/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/exemple/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 |
--------------------------------------------------------------------------------
/exemple/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 |
--------------------------------------------------------------------------------
/exemple/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/X-SLAYER/Multiavatar/a68542bade4eaa6a6e459dc23541d425b749a6a2/exemple/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
--------------------------------------------------------------------------------
/exemple/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/X-SLAYER/Multiavatar/a68542bade4eaa6a6e459dc23541d425b749a6a2/exemple/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
--------------------------------------------------------------------------------
/exemple/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/X-SLAYER/Multiavatar/a68542bade4eaa6a6e459dc23541d425b749a6a2/exemple/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
--------------------------------------------------------------------------------
/exemple/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/X-SLAYER/Multiavatar/a68542bade4eaa6a6e459dc23541d425b749a6a2/exemple/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
--------------------------------------------------------------------------------
/exemple/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/X-SLAYER/Multiavatar/a68542bade4eaa6a6e459dc23541d425b749a6a2/exemple/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
--------------------------------------------------------------------------------
/exemple/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/X-SLAYER/Multiavatar/a68542bade4eaa6a6e459dc23541d425b749a6a2/exemple/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
--------------------------------------------------------------------------------
/exemple/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/X-SLAYER/Multiavatar/a68542bade4eaa6a6e459dc23541d425b749a6a2/exemple/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
--------------------------------------------------------------------------------
/exemple/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/X-SLAYER/Multiavatar/a68542bade4eaa6a6e459dc23541d425b749a6a2/exemple/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
--------------------------------------------------------------------------------
/exemple/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/X-SLAYER/Multiavatar/a68542bade4eaa6a6e459dc23541d425b749a6a2/exemple/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
--------------------------------------------------------------------------------
/exemple/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/X-SLAYER/Multiavatar/a68542bade4eaa6a6e459dc23541d425b749a6a2/exemple/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
--------------------------------------------------------------------------------
/exemple/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/X-SLAYER/Multiavatar/a68542bade4eaa6a6e459dc23541d425b749a6a2/exemple/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
--------------------------------------------------------------------------------
/exemple/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/X-SLAYER/Multiavatar/a68542bade4eaa6a6e459dc23541d425b749a6a2/exemple/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
--------------------------------------------------------------------------------
/exemple/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/X-SLAYER/Multiavatar/a68542bade4eaa6a6e459dc23541d425b749a6a2/exemple/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
--------------------------------------------------------------------------------
/exemple/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/X-SLAYER/Multiavatar/a68542bade4eaa6a6e459dc23541d425b749a6a2/exemple/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
--------------------------------------------------------------------------------
/exemple/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/X-SLAYER/Multiavatar/a68542bade4eaa6a6e459dc23541d425b749a6a2/exemple/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
--------------------------------------------------------------------------------
/exemple/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 |
--------------------------------------------------------------------------------
/exemple/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/X-SLAYER/Multiavatar/a68542bade4eaa6a6e459dc23541d425b749a6a2/exemple/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
--------------------------------------------------------------------------------
/exemple/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/X-SLAYER/Multiavatar/a68542bade4eaa6a6e459dc23541d425b749a6a2/exemple/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
--------------------------------------------------------------------------------
/exemple/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/X-SLAYER/Multiavatar/a68542bade4eaa6a6e459dc23541d425b749a6a2/exemple/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
--------------------------------------------------------------------------------
/exemple/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.
--------------------------------------------------------------------------------
/exemple/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 |
--------------------------------------------------------------------------------
/exemple/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 |
--------------------------------------------------------------------------------
/exemple/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 | exemple
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 |
--------------------------------------------------------------------------------
/exemple/ios/Runner/Runner-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import "GeneratedPluginRegistrant.h"
2 |
--------------------------------------------------------------------------------
/exemple/lib/main.dart:
--------------------------------------------------------------------------------
1 | import 'dart:developer';
2 |
3 | import 'package:flutter/material.dart';
4 | import 'package:multiavatar/multiavatar.dart';
5 |
6 | void main() {
7 | runApp(MyApp());
8 | }
9 |
10 | class MyApp extends StatelessWidget {
11 | @override
12 | Widget build(BuildContext context) {
13 | return MaterialApp(
14 | title: 'MultiAvatar exemple',
15 | theme: ThemeData(
16 | primarySwatch: Colors.blue,
17 | ),
18 | home: MyHomePage(title: 'MultiAvatar Exemple'),
19 | );
20 | }
21 | }
22 |
23 | class MyHomePage extends StatefulWidget {
24 | MyHomePage({Key key, this.title}) : super(key: key);
25 |
26 | final String title;
27 |
28 | @override
29 | _MyHomePageState createState() => _MyHomePageState();
30 | }
31 |
32 | class _MyHomePageState extends State {
33 | TextEditingController _controller = TextEditingController();
34 | @override
35 | Widget build(BuildContext context) {
36 | return Scaffold(
37 | appBar: AppBar(
38 | title: Text(widget.title),
39 | ),
40 | body: Center(
41 | child: Column(
42 | mainAxisAlignment: MainAxisAlignment.center,
43 | children: [
44 | FloatingActionButton(
45 | onPressed: () {
46 | ///The svg code
47 | log(multiavatar(DateTime.now().toIso8601String()));
48 | setState(() {
49 | _controller.text =
50 | multiavatar(DateTime.now().toIso8601String());
51 | });
52 | },
53 | tooltip: 'Generate',
54 | child: Icon(Icons.gesture),
55 | ),
56 | SizedBox(height: 20),
57 | TextField(
58 | controller: _controller,
59 | decoration: InputDecoration(
60 | border: InputBorder.none,
61 | filled: true,
62 | ),
63 | maxLines: 20,
64 | )
65 | ],
66 | ),
67 | ),
68 | );
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/exemple/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.5.0"
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.2.0"
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 | crypto:
47 | dependency: transitive
48 | description:
49 | name: crypto
50 | url: "https://pub.dartlang.org"
51 | source: hosted
52 | version: "3.0.0"
53 | cupertino_icons:
54 | dependency: "direct main"
55 | description:
56 | name: cupertino_icons
57 | url: "https://pub.dartlang.org"
58 | source: hosted
59 | version: "1.0.2"
60 | fake_async:
61 | dependency: transitive
62 | description:
63 | name: fake_async
64 | url: "https://pub.dartlang.org"
65 | source: hosted
66 | version: "1.2.0"
67 | flutter:
68 | dependency: "direct main"
69 | description: flutter
70 | source: sdk
71 | version: "0.0.0"
72 | flutter_test:
73 | dependency: "direct dev"
74 | description: flutter
75 | source: sdk
76 | version: "0.0.0"
77 | matcher:
78 | dependency: transitive
79 | description:
80 | name: matcher
81 | url: "https://pub.dartlang.org"
82 | source: hosted
83 | version: "0.12.10"
84 | meta:
85 | dependency: transitive
86 | description:
87 | name: meta
88 | url: "https://pub.dartlang.org"
89 | source: hosted
90 | version: "1.3.0"
91 | multiavatar:
92 | dependency: "direct main"
93 | description:
94 | path: ".."
95 | relative: true
96 | source: path
97 | version: "0.1.4"
98 | path:
99 | dependency: transitive
100 | description:
101 | name: path
102 | url: "https://pub.dartlang.org"
103 | source: hosted
104 | version: "1.8.0"
105 | sky_engine:
106 | dependency: transitive
107 | description: flutter
108 | source: sdk
109 | version: "0.0.99"
110 | source_span:
111 | dependency: transitive
112 | description:
113 | name: source_span
114 | url: "https://pub.dartlang.org"
115 | source: hosted
116 | version: "1.8.0"
117 | stack_trace:
118 | dependency: transitive
119 | description:
120 | name: stack_trace
121 | url: "https://pub.dartlang.org"
122 | source: hosted
123 | version: "1.10.0"
124 | stream_channel:
125 | dependency: transitive
126 | description:
127 | name: stream_channel
128 | url: "https://pub.dartlang.org"
129 | source: hosted
130 | version: "2.1.0"
131 | string_scanner:
132 | dependency: transitive
133 | description:
134 | name: string_scanner
135 | url: "https://pub.dartlang.org"
136 | source: hosted
137 | version: "1.1.0"
138 | term_glyph:
139 | dependency: transitive
140 | description:
141 | name: term_glyph
142 | url: "https://pub.dartlang.org"
143 | source: hosted
144 | version: "1.2.0"
145 | test_api:
146 | dependency: transitive
147 | description:
148 | name: test_api
149 | url: "https://pub.dartlang.org"
150 | source: hosted
151 | version: "0.2.19"
152 | typed_data:
153 | dependency: transitive
154 | description:
155 | name: typed_data
156 | url: "https://pub.dartlang.org"
157 | source: hosted
158 | version: "1.3.0"
159 | vector_math:
160 | dependency: transitive
161 | description:
162 | name: vector_math
163 | url: "https://pub.dartlang.org"
164 | source: hosted
165 | version: "2.1.0"
166 | sdks:
167 | dart: ">=2.12.0 <3.0.0"
168 | flutter: ">=1.17.0"
169 |
--------------------------------------------------------------------------------
/exemple/pubspec.yaml:
--------------------------------------------------------------------------------
1 | name: exemple
2 | description: A new Flutter project.
3 |
4 | # The following line prevents the package from being accidentally published to
5 | # pub.dev using `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.7.0 <3.0.0"
22 |
23 | dependencies:
24 | flutter:
25 | sdk: flutter
26 | multiavatar:
27 | path: ../
28 |
29 |
30 | # The following adds the Cupertino Icons font to your application.
31 | # Use with the CupertinoIcons class for iOS style icons.
32 | cupertino_icons: ^1.0.2
33 |
34 | dev_dependencies:
35 | flutter_test:
36 | sdk: flutter
37 |
38 | # For information on the generic Dart part of this file, see the
39 | # following page: https://dart.dev/tools/pub/pubspec
40 |
41 | # The following section is specific to Flutter.
42 | flutter:
43 |
44 | # The following line ensures that the Material Icons font is
45 | # included with your application, so that you can use the icons in
46 | # the material Icons class.
47 | uses-material-design: true
48 |
49 | # To add assets to your application, add an assets section, like this:
50 | # assets:
51 | # - images/a_dot_burr.jpeg
52 | # - images/a_dot_ham.jpeg
53 |
54 | # An image asset can refer to one or more resolution-specific "variants", see
55 | # https://flutter.dev/assets-and-images/#resolution-aware.
56 |
57 | # For details regarding adding assets from package dependencies, see
58 | # https://flutter.dev/assets-and-images/#from-packages
59 |
60 | # To add custom fonts to your application, add a fonts section here,
61 | # in this "flutter" section. Each entry in this list should have a
62 | # "family" key with the font family name, and a "fonts" key with a
63 | # list giving the asset and other descriptors for the font. For
64 | # example:
65 | # fonts:
66 | # - family: Schyler
67 | # fonts:
68 | # - asset: fonts/Schyler-Regular.ttf
69 | # - asset: fonts/Schyler-Italic.ttf
70 | # style: italic
71 | # - family: Trajan Pro
72 | # fonts:
73 | # - asset: fonts/TrajanPro.ttf
74 | # - asset: fonts/TrajanPro_Bold.ttf
75 | # weight: 700
76 | #
77 | # For details regarding fonts from package dependencies,
78 | # see https://flutter.dev/custom-fonts/#from-packages
79 |
--------------------------------------------------------------------------------
/exemple/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:exemple/main.dart';
12 |
13 | void main() {
14 | testWidgets('Counter increments smoke test', (WidgetTester tester) async {
15 | // Build our app and trigger a frame.
16 | await tester.pumpWidget(MyApp());
17 |
18 | // Verify that our counter starts at 0.
19 | expect(find.text('0'), findsOneWidget);
20 | expect(find.text('1'), findsNothing);
21 |
22 | // Tap the '+' icon and trigger a frame.
23 | await tester.tap(find.byIcon(Icons.add));
24 | await tester.pump();
25 |
26 | // Verify that our counter has incremented.
27 | expect(find.text('0'), findsNothing);
28 | expect(find.text('1'), findsOneWidget);
29 | });
30 | }
31 |
--------------------------------------------------------------------------------
/exemple/web/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/X-SLAYER/Multiavatar/a68542bade4eaa6a6e459dc23541d425b749a6a2/exemple/web/favicon.png
--------------------------------------------------------------------------------
/exemple/web/icons/Icon-192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/X-SLAYER/Multiavatar/a68542bade4eaa6a6e459dc23541d425b749a6a2/exemple/web/icons/Icon-192.png
--------------------------------------------------------------------------------
/exemple/web/icons/Icon-512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/X-SLAYER/Multiavatar/a68542bade4eaa6a6e459dc23541d425b749a6a2/exemple/web/icons/Icon-512.png
--------------------------------------------------------------------------------
/exemple/web/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 | exemple
30 |
31 |
32 |
33 |
36 |
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/exemple/web/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "exemple",
3 | "short_name": "exemple",
4 | "start_url": ".",
5 | "display": "standalone",
6 | "background_color": "#0175C2",
7 | "theme_color": "#0175C2",
8 | "description": "A new Flutter project.",
9 | "orientation": "portrait-primary",
10 | "prefer_related_applications": false,
11 | "icons": [
12 | {
13 | "src": "icons/Icon-192.png",
14 | "sizes": "192x192",
15 | "type": "image/png"
16 | },
17 | {
18 | "src": "icons/Icon-512.png",
19 | "sizes": "512x512",
20 | "type": "image/png"
21 | }
22 | ]
23 | }
24 |
--------------------------------------------------------------------------------
/lib/multiavatar.dart:
--------------------------------------------------------------------------------
1 | library multiavatar;
2 |
3 | import 'dart:convert';
4 | import 'package:crypto/crypto.dart';
5 |
6 | String multiavatar(String string, {bool trBackground = false}) {
7 | string += '';
8 |
9 | Map>>> themes = {
10 | // Robo
11 | "00": {
12 | "A": {
13 | "env": ["#ff2f2b"],
14 | "clo": ["#fff", "#000"],
15 | "head": ["#fff"],
16 | "mouth": ["#fff", "#000", "#000"],
17 | "eyes": ["#000", "none", "#00FFFF"],
18 | "top": ["#fff", "#fff"]
19 | },
20 | "B": {
21 | "env": ["#ff1ec1"],
22 | "clo": ["#000", "#fff"],
23 | "head": ["#ffc1c1"],
24 | "mouth": ["#fff", "#000", "#000"],
25 | "eyes": ["#FF2D00", "#fff", "none"],
26 | "top": ["#a21d00", "#fff"]
27 | },
28 | "C": {
29 | "env": ["#0079b1"],
30 | "clo": ["#0e00b1", "#d1fffe"],
31 | "head": ["#f5aa77"],
32 | "mouth": ["#fff", "#000", "#000"],
33 | "eyes": ["#0c00de", "#fff", "none"],
34 | "top": ["#acfffd", "#acfffd"]
35 | },
36 | },
37 |
38 | // Girl
39 | "01": {
40 | "A": {
41 | "env": ["#a50000"],
42 | "clo": ["#f06", "#8e0039"],
43 | "head": ["#85492C"],
44 | "mouth": ["#000"],
45 | "eyes": ["#000", "#ff9809"],
46 | "top": ["#ff9809", "#ff9809", "none", "none"]
47 | },
48 | "B": {
49 | "env": ["#40E83B"],
50 | "clo": ["#00650b", "#62ce5a"],
51 | "head": ["#f7c1a6"],
52 | "mouth": ["#6e1c1c"],
53 | "eyes": ["#000", "#ff833b"],
54 | "top": ["#67FFCC", "none", "none", "#ecff3b"]
55 | },
56 | "C": {
57 | "env": ["#ff2c2c"],
58 | "clo": ["#fff", "#000"],
59 | "head": ["#ffce8b"],
60 | "mouth": ["#000"],
61 | "eyes": ["#000", "#0072ff"],
62 | "top": ["#ff9809", "none", "#ffc809", "none"]
63 | }
64 | },
65 |
66 | // Blonde
67 | "02": {
68 | "A": {
69 | "env": ["#ff7520"],
70 | "clo": ["#d12823"],
71 | "head": ["#fee3c5"],
72 | "mouth": ["#d12823"],
73 | "eyes": ["#000", "none"],
74 | "top": ["#000", "none", "none", "#FFCC00", "red"]
75 | },
76 | "B": {
77 | "env": ["#ff9700"],
78 | "clo": ["#000"],
79 | "head": ["#d2ad6d"],
80 | "mouth": ["#000"],
81 | "eyes": ["#000", "#00ffdc"],
82 | "top": ["#fdff00", "#fdff00", "none", "none", "none"]
83 | },
84 | "C": {
85 | "env": ["#26a7ff"],
86 | "clo": ["#d85cd7"],
87 | "head": ["#542e02"],
88 | "mouth": ["#f70014"],
89 | "eyes": ["#000", "magenta"],
90 | // "eyes": ["#000", "#ff0000"],
91 | "top": ["#FFCC00", "#FFCC00", "#FFCC00", "#ff0000", "yellow"]
92 | }
93 | },
94 |
95 | // Evilnormie
96 | "03": {
97 | "A": {
98 | "env": ["#6FC30E"],
99 | "clo": ["#b4e1fa", "#5b5d6e", "#515262", "#a0d2f0", "#a0d2f0"],
100 | // "clo": ["#1f9ee4", "#262c5f", "#262c5f", "#a0d2f0", "#a0d2f0"],
101 | "head": ["#fae3b9"],
102 | "mouth": ["#fff", "#000"],
103 | "eyes": ["#000"],
104 | "top": ["#8eff45", "#8eff45", "none", "none"]
105 | },
106 | "B": {
107 | "env": ["#00a58c"],
108 | "clo": ["#000", "#005b00", "#005100", "#00a000", "#00a000"],
109 | "head": ["#FAD2B9"],
110 | "mouth": ["#fff", "#000"],
111 | "eyes": ["#000"],
112 | "top": ["#FFC600", "none", "#FFC600", "none"]
113 | },
114 | "C": {
115 | "env": ["#ff501f"],
116 | "clo": ["#000", "#ff0000", "#ff0000", "#7d7d7d", "#7d7d7d"],
117 | "head": ["#fff3dc"],
118 | "mouth": ["#d2001b", "none"],
119 | "eyes": ["#000"],
120 | "top": ["#D2001B", "none", "none", "#D2001B"]
121 | }
122 | },
123 |
124 | // Country
125 | "04": {
126 | "A": {
127 | "env": ["#fc0"],
128 | "clo": ["#901e0e", "#ffbe1e", "#ffbe1e", "#c55f54"],
129 | "head": ["#f8d9ad"],
130 | "mouth": ["#000", "none", "#000", "none"],
131 | "eyes": ["#000"],
132 | // "top": ["#48362D", "#AF892E", "#674C43", "#282828"]
133 | "top": ["#583D00", "#AF892E", "#462D00", "#a0a0a0"]
134 | },
135 | "B": {
136 | "env": ["#386465"],
137 | "clo": ["#fff", "#333", "#333", "#333"],
138 | "head": ["#FFD79D"],
139 | "mouth": ["#000", "#000", "#000", "#000"],
140 | "eyes": ["#000"],
141 | "top": ["#27363C", "#5DCAD4", "#314652", "#333"]
142 | // "top": ["#95E8CF", "#12353D", "#09A4AF", "#333"]
143 | },
144 | "C": {
145 | "env": ["#DFFF00"],
146 | "clo": ["#304267", "#aab0b1", "#aab0b1", "#aab0b1"],
147 | "head": ["#e6b876"],
148 | "mouth": ["#50230a", "#50230a", "#50230a", "#50230a"],
149 | "eyes": ["#000"],
150 | "top": ["#333", "#afafaf", "#222", "#6d3a1d"]
151 | }
152 | },
153 |
154 | // Johnyold
155 | "05": {
156 | "A": {
157 | // "env": ["#c7b810"],
158 | "env": ["#a09300"],
159 | "clo": [
160 | "#c7d4e2",
161 | "#435363",
162 | "#435363",
163 | "#141720",
164 | "#141720",
165 | "#e7ecf2",
166 | "#e7ecf2"
167 | ],
168 | "head": ["#f5d4a6"],
169 | "mouth": ["#000", "#cf9f76"],
170 | "eyes": [
171 | "#000",
172 | "#000",
173 | "#000",
174 | "#000",
175 | "#000",
176 | "#000",
177 | "#fff",
178 | "#fff",
179 | "#fff",
180 | "#fff",
181 | "#000",
182 | "#000"
183 | ],
184 | "top": ["none", "#fdff00"]
185 | },
186 | "B": {
187 | "env": ["#b3003e"],
188 | "clo": [
189 | "#000",
190 | "#435363",
191 | "#435363",
192 | "#000",
193 | "none",
194 | "#e7ecf2",
195 | "#e7ecf2"
196 | ],
197 | "head": ["#f5d4a6"],
198 | "mouth": ["#000", "#af9f94"],
199 | "eyes": [
200 | "#9ff3ffdb",
201 | "#000",
202 | "#9ff3ffdb",
203 | "#000",
204 | "#2f508a",
205 | "#000",
206 | "#000",
207 | "#000",
208 | "none",
209 | "none",
210 | "none",
211 | "none"
212 | ],
213 | "top": ["#ff9a00", "#ff9a00"]
214 | },
215 | "C": {
216 | "env": ["#884f00"],
217 | "clo": [
218 | "#ff0000",
219 | "#fff",
220 | "#fff",
221 | "#141720",
222 | "#141720",
223 | "#e7ecf2",
224 | "#e7ecf2"
225 | ],
226 | "head": ["#c57b14"],
227 | "mouth": ["#000", "#cf9f76"],
228 | "eyes": [
229 | "none",
230 | "#000",
231 | "none",
232 | "#000",
233 | "#5a0000",
234 | "#000",
235 | "#000",
236 | "#000",
237 | "none",
238 | "none",
239 | "none",
240 | "none"
241 | ],
242 | "top": ["#efefef", "none"]
243 | }
244 | },
245 |
246 | // Asian
247 | "06": {
248 | "A": {
249 | "env": ["#8acf00"],
250 | "clo": ["#ee2829", "#ff0"],
251 | "head": ["#ffce73"],
252 | "mouth": ["#fff", "#000"],
253 | "eyes": ["#000"],
254 | "top": ["#000", "#000", "none", "#000", "#ff4e4e", "#000"]
255 | },
256 | "B": {
257 | "env": ["#00d2a3"],
258 | // "env": ["#007359"],
259 | "clo": ["#0D0046", "#ffce73"],
260 | "head": ["#ffce73"],
261 | "mouth": ["#000", "none"],
262 | "eyes": ["#000"],
263 | "top": [
264 | "#000",
265 | "#000",
266 | "#000",
267 | "none",
268 | "#ffb358",
269 | "#000",
270 | "none",
271 | "none"
272 | ]
273 | // "top": ["#00898c", "#fff"]
274 | },
275 | "C": {
276 | // "env": ["#C13D5C"],
277 | "env": ["#ff184e"],
278 | "clo": ["#000", "none"],
279 | "head": ["#ffce73"],
280 | "mouth": ["#ff0000", "none"],
281 | "eyes": ["#000"],
282 | "top": [
283 | "none",
284 | "none",
285 | "none",
286 | "none",
287 | "none",
288 | "#ffc107",
289 | "none",
290 | "none"
291 | ]
292 | }
293 | },
294 |
295 | // Punk
296 | "07": {
297 | "A": {
298 | "env": ["#00deae"],
299 | // "clo": ["#cc8562", "#f2efea", "#cc8562"],
300 | "clo": ["#ff0000"],
301 | "head": ["#ffce94"],
302 | "mouth": ["#f73b6c", "#000"],
303 | "eyes": ["#e91e63", "#000", "#e91e63", "#000", "#000", "#000"],
304 | "top": ["#dd104f", "#dd104f", "#f73b6c", "#dd104f"]
305 | },
306 | "B": {
307 | "env": ["#181284"],
308 | "clo": ["#491f49", "#ff9809", "#491f49"],
309 | "head": ["#f6ba97"],
310 | "mouth": ["#ff9809", "#000"],
311 | "eyes": ["#c4ffe4", "#000", "#c4ffe4", "#000", "#000", "#000"],
312 | "top": ["none", "none", "#d6f740", "#516303"]
313 | },
314 | "C": {
315 | "env": ["#bcf700"],
316 | "clo": ["#ff14e4", "#000", "#14fffd"],
317 | "head": ["#7b401e"],
318 | "mouth": ["#666", "#000"],
319 | "eyes": ["#00b5b4", "#000", "#00b5b4", "#000", "#000", "#000"],
320 | "top": ["#14fffd", "#14fffd", "#14fffd", "#0d3a62"]
321 | }
322 | },
323 |
324 | // Afrohair
325 | "08": {
326 | "A": {
327 | "env": ["#0df"],
328 | "clo": ["#571e57", "#ff0"],
329 | "head": ["#f2c280"],
330 | "eyes": ["#795548", "#000"],
331 | "mouth": ["#ff0000"],
332 | "top": ["#de3b00", "none"]
333 | },
334 | "B": {
335 | "env": ["#B400C2"],
336 | "clo": ["#0D204A", "#00ffdf"],
337 | "head": ["#ca8628"],
338 | "eyes": ["#cbbdaf", "#000"],
339 | "mouth": ["#1a1a1a"],
340 | "top": ["#000", "#000"]
341 | },
342 | "C": {
343 | "env": ["#ffe926"],
344 | "clo": ["#00d6af", "#000"],
345 | "head": ["#8c5100"],
346 | "eyes": ["none", "#000"],
347 | "mouth": ["#7d0000"],
348 | "top": ["#f7f7f7", "none"]
349 | }
350 | },
351 |
352 | // Normie female
353 | "09": {
354 | "A": {
355 | "env": ["#4aff0c"],
356 | "clo": ["#101010", "#fff", "#fff"],
357 | "head": ["#dbbc7f"],
358 | "mouth": ["#000"],
359 | "eyes": ["#000", "none", "none"],
360 | "top": ["#531148", "#531148", "#531148", "none"]
361 | },
362 | "B": {
363 | "env": ["#FFC107"],
364 | "clo": ["#033c58", "#fff", "#fff"],
365 | "head": ["#dbc97f"],
366 | "mouth": ["#000"],
367 | "eyes": ["none", "#fff", "#000"],
368 | "top": ["#FFEB3B", "#FFEB3B", "none", "#FFEB3B"]
369 | // "top": ["#085258", "#085258", "none", "#085258"]
370 | },
371 | "C": {
372 | "env": ["#FF9800"],
373 | "clo": ["#b40000", "#fff", "#fff"],
374 | "head": ["#E2AF6B"],
375 | "mouth": ["#000"],
376 | "eyes": ["none", "#fff", "#000"],
377 | "top": ["#ec0000", "#ec0000", "none", "none"]
378 | }
379 | },
380 |
381 | // Older
382 | "10": {
383 | "A": {
384 | "env": ["#104c8c"],
385 | "clo": ["#354B65", "#3D8EBB", "#89D0DA", "#00FFFD"],
386 | "head": ["#cc9a5c"],
387 | "mouth": ["#222", "#fff"],
388 | "eyes": ["#000", "#000"],
389 | "top": ["#fff", "#fff", "none"]
390 | },
391 | "B": {
392 | "env": ["#0DC15C"],
393 | "clo": ["#212121", "#fff", "#212121", "#fff"],
394 | "head": ["#dca45f"],
395 | "mouth": ["#111", "#633b1d"],
396 | "eyes": ["#000", "#000"],
397 | "top": ["none", "#792B74", "#792B74"]
398 | },
399 | "C": {
400 | "env": ["#ffe500"],
401 | "clo": ["#1e5e80", "#fff", "#1e5e80", "#fff"],
402 | "head": ["#e8bc86"],
403 | "mouth": ["#111", "none"],
404 | "eyes": ["#000", "#000"],
405 | // "eyes": ["#636363", "#ADADAD", "#301e19"],
406 | "top": ["none", "none", "#633b1d"]
407 | }
408 | },
409 |
410 | // Firehair
411 | "11": {
412 | "A": {
413 | "env": ["#4a3f73"],
414 | "clo": ["#e6e9ee", "#f1543f", "#ff7058", "#fff", "#fff"],
415 | "head": ["#b27e5b"],
416 | "mouth": ["#191919", "#191919"],
417 | "eyes": ["#000", "#000", "#57FFFD"],
418 | "top": ["#ffc", "#ffc", "#ffc"]
419 | },
420 | "B": {
421 | "env": ["#00a08d"],
422 | "clo": ["#FFBA32", "#484848", "#4e4e4e", "#fff", "#fff"],
423 | "head": ["#ab5f2c"],
424 | "mouth": ["#191919", "#191919"],
425 | // "#61b7ff",
426 | "eyes": ["#000", "#ff23fa63", "#000"],
427 | "top": ["#ff90f4", "#ff90f4", "#ff90f4"]
428 | },
429 | "C": {
430 | "env": ["#22535d"],
431 | "clo": ["#000", "#ff2500", "#ff2500", "#fff", "#fff"],
432 | "head": ["#a76c44"],
433 | "mouth": ["#191919", "#191919"],
434 | "eyes": ["#000", "none", "#000"],
435 | "top": ["none", "#00efff", "none"]
436 | }
437 | },
438 |
439 | // Blond
440 | "12": {
441 | "A": {
442 | "env": ["#2668DC"],
443 | "clo": ["#2385c6", "#b8d0e0", "#b8d0e0"],
444 | "head": ["#ad8a60"],
445 | "mouth": ["#000", "#4d4d4d"],
446 | "eyes": ["#7fb5a2", "#d1eddf", "#301e19"],
447 | // "top": ["#ff6"]
448 | // "top": ["#ff0"]
449 | "top": ["#fff510", "#fff510"]
450 | },
451 | "B": {
452 | "env": ["#643869"],
453 | "clo": ["#D67D1B", "#b8d0e0", "#b8d0e0"],
454 | "head": ["#CC985A", "none0000"],
455 | "mouth": ["#000", "#ececec"],
456 | "eyes": ["#1f2644", "#9b97ce", "#301e19"],
457 | // "top": ["#c700c7"]
458 | // "top": ["#c54560"]
459 | // "top": ["#ff393e", "none"]
460 | "top": ["#00eaff", "none"]
461 | },
462 | "C": {
463 | "env": ["#F599FF"],
464 | "clo": ["#2823C6", "#b8d0e0", "#b8d0e0"],
465 | "head": ["#C7873A"],
466 | "mouth": ["#000", "#4d4d4d"],
467 | "eyes": ["#581b1b", "#FF8B8B", "#000"],
468 | // "top": ["#5F1F1F"]
469 | // "top": ["#fff00"]
470 | "top": ["none", "#9c0092"]
471 | }
472 | },
473 |
474 | // Ateam
475 | "13": {
476 | "A": {
477 | "env": ["#d10084"],
478 | "clo": ["#efedee", "#00a1e0", "#00a1e0", "#efedee", "#ffce1c"],
479 | "head": ["#b35f49"],
480 | "mouth": ["#3a484a", "#000"],
481 | "eyes": ["#000"],
482 | "top": ["#000", "none", "#000", "none"]
483 | },
484 | "B": {
485 | "env": ["#E6C117"],
486 | "clo": ["#efedee", "#ec0033", "#ec0033", "#efedee", "#f2ff05"],
487 | "head": ["#ffc016"],
488 | "mouth": ["#4a3737", "#000"],
489 | "eyes": ["#000"],
490 | "top": ["#ffe900", "#ffe900", "none", "#ffe900"]
491 | },
492 | "C": {
493 | "env": ["#1d8c00"],
494 | // "env": ["#C6FE3C"],
495 | // "env": ["#cace10"],
496 | "clo": ["#e000cb", "#fff", "#fff", "#e000cb", "#ffce1c"],
497 | "head": ["#b96438"],
498 | "mouth": ["#000", "#000"],
499 | "eyes": ["#000"],
500 | // "top": ["#eff4b0"]
501 | // "top": ["#e0e0e0"]
502 | // "top": ["#d7ffff"] // ice
503 | // "top": ["#f0ffff"] // ice
504 | "top": ["#53ffff", "#53ffff", "none", "none"]
505 | }
506 | },
507 |
508 | // Rasta
509 | "14": {
510 | "A": {
511 | "env": ["#fc0065"],
512 | "clo": ["#708913", "#fdea14", "#708913", "#fdea14", "#708913"],
513 | "head": ["#DEA561"],
514 | "mouth": ["#444", "#000"],
515 | "eyes": ["#000"],
516 | "top": [
517 | "#32393f",
518 | "#32393f",
519 | "#32393f",
520 | "#32393f",
521 | "#32393f",
522 | "#32393f",
523 | "#32393f",
524 | "#32393f",
525 | "#32393f",
526 | "#32393f",
527 | "#32393f",
528 | "#32393f",
529 | "#32393f",
530 | "#32393f",
531 | "#32393f",
532 | "#32393f",
533 | "#32393f"
534 | ]
535 | },
536 | "B": {
537 | "env": ["#81f72e"],
538 | "clo": ["#ff0000", "#ffc107", "#ff0000", "#ffc107", "#ff0000"],
539 | "head": ["#ef9831"],
540 | // "mouth": ["#a2a2a2", "#000"],
541 | "mouth": ["#6b0000", "#000"],
542 | "eyes": ["#000"],
543 | "top": [
544 | "#FFFAAD",
545 | "#FFFAAD",
546 | "#FFFAAD",
547 | "#FFFAAD",
548 | "#FFFAAD",
549 | "#FFFAAD",
550 | "#FFFAAD",
551 | "#FFFAAD",
552 | "#FFFAAD",
553 | "#FFFAAD",
554 | "#FFFAAD",
555 | "#FFFAAD",
556 | "#FFFAAD",
557 | "none",
558 | "none",
559 | "none",
560 | "none"
561 | ]
562 | },
563 | "C": {
564 | "env": ["#00D872"],
565 | "clo": ["#590D00", "#FD1336", "#590D00", "#FD1336", "#590D00"],
566 | "head": ["#c36c00"],
567 | "mouth": ["#56442b", "#000"],
568 | "eyes": ["#000"],
569 | "top": [
570 | "#004E4C",
571 | "#004E4C",
572 | "#004E4C",
573 | "#004E4C",
574 | "#004E4C",
575 | "#004E4C",
576 | "#004E4C",
577 | "#004E4C",
578 | "#004E4C",
579 | "none",
580 | "none",
581 | "none",
582 | "none",
583 | "none",
584 | "none",
585 | "none",
586 | "none"
587 | ]
588 | }
589 | },
590 |
591 | // Meta
592 | "15": {
593 | "A": {
594 | // "env": ["#ccc"],
595 | "env": ["#111"],
596 | "clo": ["#000", "#00FFFF"],
597 | "head": ["#755227"],
598 | "mouth": ["#fff", "#000"],
599 | "eyes": ["black", "#66008a", "aqua"],
600 | // "top": ["#004a57"] // dark blue
601 | "top": ["#fff", "#fff", "#fff", "#fff", "#fff"]
602 | },
603 | "B": {
604 | "env": ["#00D0D4"],
605 | // "env": ["#30afab"],
606 | // "env": ["#E8E8E8"],
607 | "clo": ["#000", "#fff"],
608 | "head": ["#755227"],
609 | "mouth": ["#fff", "#000"],
610 | // "eyes": ["black", "black", "#ff0303"],
611 | "eyes": ["black", "#1df7ffa3", "#fcff2c"],
612 | // "top": ["#fffbaf"] // bright yellow
613 | "top": ["#fff539", "none", "#fff539", "none", "#fff539"]
614 | },
615 | "C": {
616 | "env": ["#DC75FF"],
617 | "clo": ["#000", "#FFBDEC"],
618 | "head": ["#997549"],
619 | "mouth": ["#fff", "#000"],
620 | "eyes": ["black", "black", "aqua"],
621 | // "top": ["#474747"]
622 | // "top": ["#ff64e6"]
623 | "top": ["#00fffd", "none", "none", "none", "none"]
624 | }
625 | }
626 | };
627 |
628 | Map> sP = {
629 | '00': {},
630 | '01': {},
631 | '02': {},
632 | '03': {},
633 | '04': {},
634 | '05': {},
635 | '06': {},
636 | '07': {},
637 | '08': {},
638 | '09': {},
639 | '10': {},
640 | '11': {},
641 | '12': {},
642 | '13': {},
643 | '14': {},
644 | '15': {},
645 | };
646 | String svgStart =
647 | '';
649 |
650 | String env =
651 | '';
652 | String head =
653 | '';
654 | String str = 'stroke-linecap:round;stroke-linejoin:round;stroke-width:';
655 |
656 | // Robo
657 | sP['00']?['env'] = env;
658 | sP['00']?['clo'] =
659 | '';
660 | sP['00']?['head'] = head;
661 | sP['00']?['mouth'] =
662 | '';
667 | sP['00']?['eyes'] =
668 | '';
669 | sP['00']?['top'] =
670 | '';
671 |
672 | // Girl
673 | sP['01']?['env'] = env;
674 | sP['01']?['clo'] =
675 | '';
676 | sP['01']?['head'] = head;
677 | sP['01']?['mouth'] =
678 | '';
681 | sP['01']?['eyes'] =
682 | '';
687 | sP['01']?['top'] =
688 | '';
689 |
690 | // Blonde
691 | sP['02']?['env'] = env;
692 | sP['02']?['clo'] =
693 | '';
694 | sP['02']?['head'] = head;
695 | sP['02']?['mouth'] =
696 | '';
697 | sP['02']?['eyes'] =
698 | '';
701 | sP['02']?['top'] =
702 | '';
703 |
704 | // Guy
705 | sP['03']?['env'] = env;
706 | sP['03']?['clo'] =
707 | '';
708 | sP['03']?['head'] = head;
709 | sP['03']?['mouth'] =
710 | '';
713 | sP['03']?['eyes'] =
714 | '';
717 | sP['03']?['top'] =
718 | '';
719 |
720 | // Country
721 | sP['04']?['env'] = env;
722 | sP['04']?['clo'] =
723 | '';
724 | sP['04']?['head'] = head;
725 | sP['04']?['mouth'] =
726 | '';
727 | sP['04']?['eyes'] =
728 | '';
731 | sP['04']?['top'] =
732 | '';
733 |
734 | // Geeknot
735 | sP['05']?['env'] = env;
736 | sP['05']?['clo'] =
737 | '';
738 | sP['05']?['head'] = head;
739 | sP['05']?['mouth'] =
740 | '';
743 | sP['05']?['eyes'] = '';
762 | sP['05']?['top'] =
763 | '';
764 |
765 | // Asian
766 | sP['06']?['env'] = env;
767 | sP['06']?['clo'] =
768 | '';
769 | sP['06']?['head'] = head;
770 | sP['06']?['mouth'] =
771 | '';
774 | sP['06']?['eyes'] =
775 | '';
778 | sP['06']?['top'] =
779 | '';
780 |
781 | // Punk
782 | sP['07']?['env'] = env;
783 | sP['07']?['clo'] =
784 | '';
785 | sP['07']?['head'] = head;
786 | sP['07']?['mouth'] =
787 | '';
790 | sP['07']?['eyes'] =
791 | '';
794 | sP['07']?['top'] =
795 | '';
796 |
797 | // Afrohair
798 | sP['08']?['env'] = env;
799 | sP['08']?['clo'] =
800 | '';
801 | sP['08']?['head'] = head;
802 | sP['08']?['mouth'] =
803 | '';
804 | sP['08']?['eyes'] =
805 | '';
808 | sP['08']?['top'] =
809 | '';
810 |
811 | // Normie Female
812 | sP['09']?['env'] = env;
813 | sP['09']?['clo'] =
814 | '';
815 | sP['09']?['head'] = head;
816 | sP['09']?['mouth'] =
817 | '';
820 | sP['09']?['eyes'] =
821 | '';
822 | sP['09']?['top'] =
823 | '';
824 |
825 | // Older
826 | sP['10']?['env'] = env;
827 | sP['10']?['clo'] =
828 | '';
829 | sP['10']?['head'] = head;
830 | sP['10']?['mouth'] =
831 | '';
834 | sP['10']?['eyes'] =
835 | '';
840 | sP['10']?['top'] =
841 | '';
842 |
843 | // Firehair
844 | sP['11']?['env'] = env;
845 | sP['11']?['clo'] =
846 | '';
847 | sP['11']?['head'] = head;
848 | sP['11']?['mouth'] =
849 | '';
850 | sP['11']?['eyes'] =
851 | '';
852 | sP['11']?['top'] =
853 | '';
854 |
855 | // Blond
856 | sP['12']?['env'] = env;
857 | sP['12']?['clo'] =
858 | '';
859 | sP['12']?['head'] = head;
860 | sP['12']?['mouth'] =
861 | '';
866 | sP['12']?['eyes'] =
867 | '';
870 | sP['12']?['top'] =
871 | '';
872 |
873 | // Ateam
874 | sP['13']?['env'] = env;
875 | sP['13']?['clo'] =
876 | '';
877 | sP['13']?['head'] = head;
878 | sP['13']?['mouth'] =
879 | '';
880 | sP['13']?['eyes'] =
881 | '';
884 | sP['13']?['top'] =
885 | '';
886 |
887 | // Rasta
888 | sP['14']?['env'] = env;
889 | sP['14']?['clo'] =
890 | '';
891 | sP['14']?['head'] = head;
892 | sP['14']?['mouth'] =
893 | '';
896 | sP['14']?['eyes'] =
897 | '';
900 | sP['14']?['top'] = '';
935 |
936 | // Meta
937 | sP['15']?['env'] = env;
938 | sP['15']?['clo'] =
939 | '';
940 | sP['15']?['head'] = head;
941 | sP['15']?['mouth'] =
942 | '';
945 | sP['15']?['eyes'] =
946 | '';
951 | sP['15']?['top'] =
952 | '';
953 |
954 | String hash = '';
955 | if (string.length == 0) return hash;
956 |
957 | List bytes1 = utf8.encode(string);
958 | Digest sha256Hash = sha256.convert(bytes1);
959 | String sha256Numbers =
960 | sha256Hash.toString().replaceAll(RegExp(r'[^0-9]'), '');
961 |
962 | hash = sha256Numbers.substring(0, 12);
963 |
964 | Map p = {};
965 |
966 | p['env'] = hash[0] + '' + hash[1];
967 | p['env'] = ((47 / 100) * int.parse(p['env'])).round().toString() + '';
968 |
969 | p['clo'] = hash[2] + '' + hash[3];
970 | p['clo'] = ((47 / 100) * int.parse(p['clo'])).round().toString() + '';
971 |
972 | p['head'] = hash[4] + '' + hash[5];
973 | p['head'] = ((47 / 100) * int.parse(p['head'])).round().toString() + '';
974 |
975 | p['mouth'] = hash[6] + '' + hash[7];
976 | p['mouth'] = ((47 / 100) * int.parse(p['mouth'])).round().toString() + '';
977 |
978 | p['eyes'] = hash[8] + '' + hash[9];
979 | p['eyes'] = ((47 / 100) * int.parse(p['eyes'])).round().toString() + '';
980 |
981 | p['top'] = hash[10] + '' + hash[11];
982 | p['top'] = ((47 / 100) * int.parse(p['top'])).round().toString() + '';
983 |
984 | for (var part in p.keys) {
985 | var nr = p[part];
986 |
987 | if (int.parse(nr) > 31) {
988 | nr = (int.parse(nr) - 32).toString() + '';
989 | if (nr.length == 1) nr = '0' + nr;
990 | p[part] = nr + 'C';
991 | } else if (int.parse(nr) > 15) {
992 | nr = (int.parse(nr) - 16).toString() + '';
993 | if (nr.length == 1) nr = '0' + nr;
994 | p[part] = nr + 'B';
995 | } else {
996 | if ((nr + '').length == 1)
997 | p[part] = '0' + nr + 'A';
998 | else
999 | p[part] = nr + 'A';
1000 | }
1001 | }
1002 |
1003 | String getFinal(part, partV, theme) {
1004 | List? colors = themes[partV]?[theme]?[part];
1005 | String? svgString = sP[partV]?[part];
1006 |
1007 | String regex = r"(#.*?;)";
1008 | String resultFinal = svgString ?? "";
1009 |
1010 | List? result = RegExp(regex)
1011 | .allMatches(svgString ?? "")
1012 | .toList()
1013 | .map((e) => e.group(1))
1014 | .toList();
1015 | // print(result);
1016 |
1017 | for (var i = 0; i < result.length; i++) {
1018 | // print("change: ${result[i]} ===> with: ${colors[i]}");
1019 | resultFinal =
1020 | resultFinal.replaceFirst(result[i] ?? "", (colors?[i] ?? "") + ';');
1021 | }
1022 |
1023 | return resultFinal;
1024 | }
1025 |
1026 | Map _final = {};
1027 |
1028 | for (var part in p.keys) {
1029 | var partV = p[part].substring(0, 2);
1030 | var theme = p[part].substring(2, 3);
1031 |
1032 | _final[part] = getFinal(part, partV, theme);
1033 | }
1034 |
1035 | if (trBackground) _final['env'] = '';
1036 |
1037 | return (svgStart +
1038 | _final['env'] +
1039 | _final['head'] +
1040 | _final['clo'] +
1041 | _final['top'] +
1042 | _final['eyes'] +
1043 | _final['mouth'] +
1044 | svgEnd);
1045 | }
1046 |
--------------------------------------------------------------------------------
/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.5.0"
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.2.0"
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 | crypto:
47 | dependency: "direct main"
48 | description:
49 | name: crypto
50 | url: "https://pub.dartlang.org"
51 | source: hosted
52 | version: "3.0.0"
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_test:
66 | dependency: "direct dev"
67 | description: flutter
68 | source: sdk
69 | version: "0.0.0"
70 | matcher:
71 | dependency: transitive
72 | description:
73 | name: matcher
74 | url: "https://pub.dartlang.org"
75 | source: hosted
76 | version: "0.12.10"
77 | meta:
78 | dependency: transitive
79 | description:
80 | name: meta
81 | url: "https://pub.dartlang.org"
82 | source: hosted
83 | version: "1.3.0"
84 | path:
85 | dependency: transitive
86 | description:
87 | name: path
88 | url: "https://pub.dartlang.org"
89 | source: hosted
90 | version: "1.8.0"
91 | sky_engine:
92 | dependency: transitive
93 | description: flutter
94 | source: sdk
95 | version: "0.0.99"
96 | source_span:
97 | dependency: transitive
98 | description:
99 | name: source_span
100 | url: "https://pub.dartlang.org"
101 | source: hosted
102 | version: "1.8.0"
103 | stack_trace:
104 | dependency: transitive
105 | description:
106 | name: stack_trace
107 | url: "https://pub.dartlang.org"
108 | source: hosted
109 | version: "1.10.0"
110 | stream_channel:
111 | dependency: transitive
112 | description:
113 | name: stream_channel
114 | url: "https://pub.dartlang.org"
115 | source: hosted
116 | version: "2.1.0"
117 | string_scanner:
118 | dependency: transitive
119 | description:
120 | name: string_scanner
121 | url: "https://pub.dartlang.org"
122 | source: hosted
123 | version: "1.1.0"
124 | term_glyph:
125 | dependency: transitive
126 | description:
127 | name: term_glyph
128 | url: "https://pub.dartlang.org"
129 | source: hosted
130 | version: "1.2.0"
131 | test_api:
132 | dependency: transitive
133 | description:
134 | name: test_api
135 | url: "https://pub.dartlang.org"
136 | source: hosted
137 | version: "0.2.19"
138 | typed_data:
139 | dependency: transitive
140 | description:
141 | name: typed_data
142 | url: "https://pub.dartlang.org"
143 | source: hosted
144 | version: "1.3.0"
145 | vector_math:
146 | dependency: transitive
147 | description:
148 | name: vector_math
149 | url: "https://pub.dartlang.org"
150 | source: hosted
151 | version: "2.1.0"
152 | sdks:
153 | dart: ">=2.12.0 <3.0.0"
154 | flutter: ">=1.17.0"
155 |
--------------------------------------------------------------------------------
/pubspec.yaml:
--------------------------------------------------------------------------------
1 | name: multiavatar
2 | description: Multiavatar is a multicultural avatar maker. 12 billion unique multicultural avatars
3 | version: 0.1.5
4 | homepage: https://github.com/X-SLAYER/Multiavatar
5 | documentation: https://github.com/X-SLAYER/Multiavatar
6 |
7 | environment:
8 | sdk: ">=2.12.0 <3.0.0"
9 | flutter: ">=1.17.0"
10 |
11 | dependencies:
12 | flutter:
13 | sdk: flutter
14 | crypto: ^3.0.0
15 |
16 | dev_dependencies:
17 | flutter_test:
18 | sdk: flutter
19 |
--------------------------------------------------------------------------------
/test/multiavatar_test.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter_test/flutter_test.dart';
2 | import 'package:multiavatar/multiavatar.dart';
3 |
4 | void main() {
5 | test('Generate svg file', () {
6 | final svgCode = multiavatar("Pixelium");
7 | final noBackgroundAvatar = multiavatar('X-SLAYER', trBackground: true);
8 |
9 | /// use svg package to handle this generated string
10 | print(svgCode);
11 | print(noBackgroundAvatar);
12 | });
13 | }
14 |
--------------------------------------------------------------------------------