├── .gitignore ├── .metadata ├── LICENSE.md ├── README.md ├── android ├── .project ├── .settings │ └── org.eclipse.buildship.core.prefs ├── app │ ├── .classpath │ ├── .project │ ├── .settings │ │ └── org.eclipse.buildship.core.prefs │ ├── build.gradle │ └── src │ │ ├── debug │ │ └── AndroidManifest.xml │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ │ └── com │ │ │ │ └── example │ │ │ │ └── quiz_app │ │ │ │ └── MainActivity.java │ │ └── res │ │ │ ├── drawable │ │ │ └── launch_background.xml │ │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ └── launcher_icon.png │ │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ └── launcher_icon.png │ │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ └── launcher_icon.png │ │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── launcher_icon.png │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── launcher_icon.png │ │ │ └── values │ │ │ └── styles.xml │ │ └── profile │ │ └── AndroidManifest.xml ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ └── gradle-wrapper.properties └── settings.gradle ├── assets ├── animations │ ├── animal_animation.flr │ ├── babySStepsQuiz.flr │ ├── background_animation.flr │ ├── click.flr │ ├── fail.flr │ ├── flag_animation.flr │ ├── food_animation.flr │ ├── job_animation.flr │ ├── logo_circle.flr │ ├── loss.flr │ ├── success.flr │ ├── tapp.flr │ ├── transportation_animation.flr │ ├── troph.flr │ └── weather_animation.flr ├── audio │ └── background.mp3 ├── fonts │ └── Blad.ttf ├── icon │ ├── Thumbs.db │ └── launcher_icon.png └── images │ ├── animals │ ├── Bull.svg │ ├── Cow.svg │ ├── Dog.svg │ ├── Duck.svg │ ├── Elephant.svg │ ├── Giraffe.svg │ ├── Lion.svg │ ├── Monkey.svg │ ├── Mouse.svg │ └── Tiger.svg │ ├── award.svg │ ├── dev_icon.png │ ├── flags │ ├── Belgium.svg │ ├── France.svg │ ├── Germany.svg │ ├── Iceland.svg │ ├── Ireland.svg │ ├── Italy.svg │ ├── Japan.svg │ ├── Netherlands.svg │ ├── Russia.svg │ └── Sweden.svg │ ├── foods │ ├── Apple.svg │ ├── Bread.svg │ ├── Cheese.svg │ ├── Donut.svg │ ├── Egg.svg │ ├── Fries.svg │ ├── Grapes.svg │ ├── Mushroom.svg │ ├── Pizza.svg │ └── Steak.svg │ ├── github.svg │ ├── gmail.svg │ ├── intros │ ├── categ.jpg │ ├── categ.png │ ├── lang.jpg │ ├── lang.png │ ├── prog.jpg │ ├── prog.png │ ├── rew.jpg │ ├── rew.png │ ├── win.jpg │ └── win.png │ ├── jobs │ ├── female │ │ ├── Artist_female.svg │ │ ├── Astronaut_female.svg │ │ ├── Cook_female.svg │ │ ├── Doctor_female.svg │ │ ├── Farmer_female.svg │ │ ├── Firefighter_female.svg │ │ ├── Judge_female.svg │ │ ├── Pilot_female.svg │ │ ├── Scientist_female.svg │ │ └── Singer_female.svg │ └── male │ │ ├── Artist_male.svg │ │ ├── Astronaut_male.svg │ │ ├── Cook_male.svg │ │ ├── Doctor_male.svg │ │ ├── Farmer_male.svg │ │ ├── Firefighter_male.svg │ │ ├── Judge_male.svg │ │ ├── Pilot_male.svg │ │ ├── Scientist_male.svg │ │ └── Singer_male.svg │ ├── transportations │ ├── Airplane.svg │ ├── Ambulance.svg │ ├── Boat.svg │ ├── Car.svg │ ├── Helicopter.svg │ ├── Metro.svg │ ├── Rocket.svg │ ├── Scooter.svg │ ├── Ship.svg │ └── Truck.svg │ ├── twitter.svg │ └── weathers │ ├── Cloud.svg │ ├── Cloudy.svg │ ├── Lightning.svg │ ├── Moon.svg │ ├── Rain.svg │ ├── Rainbow.svg │ ├── Rainy.svg │ ├── Snow.svg │ ├── Snowy.svg │ └── Sun.svg ├── ios ├── Flutter │ ├── AppFrameworkInfo.plist │ ├── Debug.xcconfig │ └── Release.xcconfig ├── Runner.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ └── contents.xcworkspacedata │ └── xcshareddata │ │ └── xcschemes │ │ └── Runner.xcscheme ├── Runner.xcworkspace │ └── contents.xcworkspacedata └── Runner │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── 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 │ └── main.m ├── lib ├── main.dart ├── models │ ├── Categories.dart │ ├── Category.dart │ ├── CurrentCategory.dart │ └── Quiz.dart ├── routeGenerator.dart ├── strings │ ├── SVGs.dart │ ├── Strings.dart │ ├── StringsAR.dart │ ├── StringsES.dart │ ├── StringsFR.dart │ └── StringsLoader.dart └── ui │ ├── Transitions.dart │ ├── screens │ ├── AboutScreen.dart │ ├── CategoryMenuScreen.dart │ ├── CategoryScreen.dart │ ├── HomeScreen.dart │ ├── IntroScreen.dart │ ├── ProgressScreen.dart │ ├── ResultScreen.dart │ └── SplashScreen.dart │ └── widgets │ ├── EmptyAppBar.dart │ ├── Progress.dart │ └── chooser │ ├── ArcChooser.dart │ ├── ChooserPainter.dart │ └── ChooserWidget.dart ├── pubspec.lock ├── pubspec.yaml ├── screenshots ├── card.png ├── play_store_badge.png ├── screenshot1.png ├── screenshot2.png ├── screenshot3.png └── screenshot4.png └── test └── widget_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 | .packages 28 | .pub-cache/ 29 | .pub/ 30 | /build/ 31 | 32 | # Android related 33 | **/android/**/gradle-wrapper.jar 34 | **/android/.gradle 35 | **/android/captures/ 36 | **/android/gradlew 37 | **/android/gradlew.bat 38 | **/android/local.properties 39 | **/android/**/GeneratedPluginRegistrant.java 40 | 41 | # iOS/XCode related 42 | **/ios/**/*.mode1v3 43 | **/ios/**/*.mode2v3 44 | **/ios/**/*.moved-aside 45 | **/ios/**/*.pbxuser 46 | **/ios/**/*.perspectivev3 47 | **/ios/**/*sync/ 48 | **/ios/**/.sconsign.dblite 49 | **/ios/**/.tags* 50 | **/ios/**/.vagrant/ 51 | **/ios/**/DerivedData/ 52 | **/ios/**/Icon? 53 | **/ios/**/Pods/ 54 | **/ios/**/.symlinks/ 55 | **/ios/**/profile 56 | **/ios/**/xcuserdata 57 | **/ios/.generated/ 58 | **/ios/Flutter/App.framework 59 | **/ios/Flutter/Flutter.framework 60 | **/ios/Flutter/Generated.xcconfig 61 | **/ios/Flutter/app.flx 62 | **/ios/Flutter/app.zip 63 | **/ios/Flutter/flutter_assets/ 64 | **/ios/ServiceDefinitions.json 65 | **/ios/Runner/GeneratedPluginRegistrant.* 66 | 67 | # Exceptions to above rules. 68 | !**/ios/**/default.mode1v3 69 | !**/ios/**/default.mode2v3 70 | !**/ios/**/default.pbxuser 71 | !**/ios/**/default.perspectivev3 72 | !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages 73 | -------------------------------------------------------------------------------- /.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: 20e59316b8b8474554b38493b8ca888794b0234a 8 | channel: stable 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Skender Lahdhiri 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Baby Steps Quiz 2 | 3 | ![GitHub repo size](https://img.shields.io/github/repo-size/skenderl/Flutter-BabyStepsQuiz) 4 | ![GitHub language count](https://img.shields.io/github/languages/count/skenderl/Flutter-BabyStepsQuiz) 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | This is a flutter project of a simple multilingual (EN, FR, ES, AR) Quiz App. 13 | 14 | ## 📸 Screenshots 15 | Screenshot1 | Screenshot2 | Screenshot3 | Screenshot4 16 | :-------------------------:|:-------------------------:|:-------------------------:|:-------------------------: 17 | | | | 18 | 19 | ## 🏁 Getting Started 20 | 21 | These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. 22 | 23 | ### Prerequisites 24 | 25 | ``` 26 | flutter 27 | ``` 28 | 29 | ### Installing 30 | 31 | Steps: 32 | 33 | ``` 34 | Clone/ Download the repository 35 | ``` 36 | 37 | And install the packages from the command line: 38 | 39 | ``` 40 | flutter pub get 41 | ``` 42 | 43 | ## Built With 44 | 45 | * [Flutter](https://flutter.dev/) - The mobile framework used. 46 | * [Audioplayers](https://github.com/luanpotter/audioplayers) - A Flutter plugin to play multiple simultaneously audio files. 47 | * [Flare Flutter](https://github.com/2d-inc/Flare-Flutter) - Load and get full control of your Flare files in a Flutter project using this library. 48 | * [Url Launcher](https://github.com/flutter/plugins/tree/master/packages/url_launcher) - A Flutter plugin for launching a URL in the mobile platform. 49 | * [Shared Preferences](https://github.com/flutter/plugins/tree/master/packages/shared_preferences) - Wraps NSUserDefaults (on iOS) and SharedPreferences (on Android), providing a persistent store for simple data. 50 | * [Flutter Svg](https://github.com/dnfield/flutter_svg) - Draw SVG (and some Android VectorDrawable (XML)) files on a Flutter Widget. 51 | * [Flutter Launcher Icons](https://github.com/fluttercommunity/flutter_launcher_icons) - A command-line tool which simplifies the task of updating your Flutter app's launcher icon. 52 | 53 | ## Authors 54 | 55 | * **Skender Lahdhiri** - *Initial work* - [Skenderl](https://github.com/skenderl) 56 | 57 | ## Acknowledgments 58 | 59 | ### Inspirations 60 | 61 | * [FLX](https://github.com/HossamElghamry/FLX) 62 | * [Review Page Interaction](https://github.com/supermarcos/flutter-review-page-iteraction) 63 | * [Widget Quiz](https://github.com/mono0926/widget-quiz) 64 | * [Review Page Interaction](https://github.com/supermarcos/flutter-review-page-iteraction) 65 | 66 | ### Assets 67 | 68 | **SVGs used:** 69 | 70 | * [BomSymbols](https://www.iconfinder.com/korawan_m) 71 | * [Webalys](https://www.iconfinder.com/webalys) 72 | * [Paolo Valzania](https://www.iconfinder.com/Spot) 73 | * [Thiago Silva](https://www.iconfinder.com/thiagopontes) 74 | * [icon lauk](https://www.iconfinder.com/andhikairfani) 75 | * [goodware std.](https://www.iconfinder.com/goodware) 76 | 77 | **Flares used:** 78 | 79 | * [Gaston](https://www.2dimensions.com/a/budindepan) 80 | * [Domobile](https://www.2dimensions.com/a/domo) 81 | * [James Testou](https://www.2dimensions.com/a/ytesti) 82 | * [Prakash George](https://www.2dimensions.com/a/prakash) 83 | * [JcToon](https://www.2dimensions.com/a/JuanCarlos) 84 | * [Guido Rosso](https://www.2dimensions.com/a/pollux) 85 | 86 | ## License 87 | 88 | This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details 89 | -------------------------------------------------------------------------------- /android/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | android 4 | Project android created by Buildship. 5 | 6 | 7 | 8 | 9 | org.eclipse.buildship.core.gradleprojectbuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.buildship.core.gradleprojectnature 16 | 17 | 18 | -------------------------------------------------------------------------------- /android/.settings/org.eclipse.buildship.core.prefs: -------------------------------------------------------------------------------- 1 | connection.project.dir= 2 | eclipse.preferences.version=1 3 | -------------------------------------------------------------------------------- /android/app/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /android/app/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | app 4 | Project app created by Buildship. 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | org.eclipse.buildship.core.gradleprojectbuilder 15 | 16 | 17 | 18 | 19 | 20 | org.eclipse.jdt.core.javanature 21 | org.eclipse.buildship.core.gradleprojectnature 22 | 23 | 24 | -------------------------------------------------------------------------------- /android/app/.settings/org.eclipse.buildship.core.prefs: -------------------------------------------------------------------------------- 1 | connection.project.dir=.. 2 | eclipse.preferences.version=1 3 | -------------------------------------------------------------------------------- /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 from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" 26 | 27 | android { 28 | compileSdkVersion 28 29 | 30 | lintOptions { 31 | disable 'InvalidPackage' 32 | } 33 | 34 | defaultConfig { 35 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). 36 | applicationId "com.example.quiz_app" 37 | minSdkVersion 16 38 | targetSdkVersion 28 39 | versionCode flutterVersionCode.toInteger() 40 | versionName flutterVersionName 41 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 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 | testImplementation 'junit:junit:4.12' 59 | androidTestImplementation 'com.android.support.test:runner:1.0.2' 60 | androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' 61 | } 62 | -------------------------------------------------------------------------------- /android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 9 | 10 | 14 | 21 | 25 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /android/app/src/main/java/com/example/quiz_app/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.example.quiz_app; 2 | 3 | import android.os.Bundle; 4 | import io.flutter.app.FlutterActivity; 5 | import io.flutter.plugins.GeneratedPluginRegistrant; 6 | 7 | public class MainActivity extends FlutterActivity { 8 | @Override 9 | protected void onCreate(Bundle savedInstanceState) { 10 | super.onCreate(savedInstanceState); 11 | GeneratedPluginRegistrant.registerWith(this); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/launcher_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/android/app/src/main/res/mipmap-hdpi/launcher_icon.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/launcher_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/android/app/src/main/res/mipmap-mdpi/launcher_icon.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/launcher_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png -------------------------------------------------------------------------------- /android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | -------------------------------------------------------------------------------- /android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | repositories { 3 | google() 4 | jcenter() 5 | } 6 | 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:3.2.1' 9 | } 10 | } 11 | 12 | allprojects { 13 | repositories { 14 | google() 15 | jcenter() 16 | } 17 | } 18 | 19 | rootProject.buildDir = '../build' 20 | subprojects { 21 | project.buildDir = "${rootProject.buildDir}/${project.name}" 22 | } 23 | subprojects { 24 | project.evaluationDependsOn(':app') 25 | } 26 | 27 | task clean(type: Delete) { 28 | delete rootProject.buildDir 29 | } 30 | -------------------------------------------------------------------------------- /android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | 3 | -------------------------------------------------------------------------------- /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-4.10.2-all.zip 7 | -------------------------------------------------------------------------------- /android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() 4 | 5 | def plugins = new Properties() 6 | def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins') 7 | if (pluginsFile.exists()) { 8 | pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) } 9 | } 10 | 11 | plugins.each { name, path -> 12 | def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile() 13 | include ":$name" 14 | project(":$name").projectDir = pluginDirectory 15 | } 16 | -------------------------------------------------------------------------------- /assets/animations/animal_animation.flr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/assets/animations/animal_animation.flr -------------------------------------------------------------------------------- /assets/animations/babySStepsQuiz.flr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/assets/animations/babySStepsQuiz.flr -------------------------------------------------------------------------------- /assets/animations/background_animation.flr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/assets/animations/background_animation.flr -------------------------------------------------------------------------------- /assets/animations/click.flr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/assets/animations/click.flr -------------------------------------------------------------------------------- /assets/animations/fail.flr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/assets/animations/fail.flr -------------------------------------------------------------------------------- /assets/animations/flag_animation.flr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/assets/animations/flag_animation.flr -------------------------------------------------------------------------------- /assets/animations/food_animation.flr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/assets/animations/food_animation.flr -------------------------------------------------------------------------------- /assets/animations/job_animation.flr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/assets/animations/job_animation.flr -------------------------------------------------------------------------------- /assets/animations/logo_circle.flr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/assets/animations/logo_circle.flr -------------------------------------------------------------------------------- /assets/animations/loss.flr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/assets/animations/loss.flr -------------------------------------------------------------------------------- /assets/animations/success.flr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/assets/animations/success.flr -------------------------------------------------------------------------------- /assets/animations/tapp.flr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/assets/animations/tapp.flr -------------------------------------------------------------------------------- /assets/animations/transportation_animation.flr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/assets/animations/transportation_animation.flr -------------------------------------------------------------------------------- /assets/animations/troph.flr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/assets/animations/troph.flr -------------------------------------------------------------------------------- /assets/animations/weather_animation.flr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/assets/animations/weather_animation.flr -------------------------------------------------------------------------------- /assets/audio/background.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/assets/audio/background.mp3 -------------------------------------------------------------------------------- /assets/fonts/Blad.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/assets/fonts/Blad.ttf -------------------------------------------------------------------------------- /assets/icon/Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/assets/icon/Thumbs.db -------------------------------------------------------------------------------- /assets/icon/launcher_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/assets/icon/launcher_icon.png -------------------------------------------------------------------------------- /assets/images/animals/Bull.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | background 6 | 7 | 8 | 9 | Layer 1 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/images/animals/Cow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | background 6 | 7 | 8 | 9 | Layer 1 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /assets/images/animals/Dog.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | background 6 | 7 | 8 | 9 | Layer 1 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /assets/images/animals/Duck.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | background 6 | 7 | 8 | 9 | Layer 1 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /assets/images/animals/Elephant.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | background 6 | 7 | 8 | 9 | Layer 1 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /assets/images/animals/Giraffe.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | background 6 | 7 | 8 | 9 | Layer 1 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /assets/images/animals/Lion.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | background 6 | 7 | 8 | 9 | Layer 1 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /assets/images/animals/Monkey.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | background 6 | 7 | 8 | 9 | Layer 1 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /assets/images/animals/Mouse.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | background 6 | 7 | 8 | 9 | Layer 1 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /assets/images/award.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 11 | 13 | 14 | 16 | 18 | 30 | 39 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | -------------------------------------------------------------------------------- /assets/images/dev_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/assets/images/dev_icon.png -------------------------------------------------------------------------------- /assets/images/flags/Belgium.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/flags/France.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/flags/Germany.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/flags/Iceland.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/flags/Ireland.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/flags/Italy.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/flags/Japan.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/flags/Netherlands.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/flags/Russia.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/flags/Sweden.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/foods/Apple.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/foods/Bread.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/foods/Cheese.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/foods/Egg.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/foods/Fries.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/foods/Mushroom.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/foods/Pizza.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/github.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | background 5 | 6 | 7 | 8 | Layer 1 9 | 10 | 11 | -------------------------------------------------------------------------------- /assets/images/gmail.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | background 5 | 6 | 7 | 8 | Layer 1 9 | 10 | 11 | -------------------------------------------------------------------------------- /assets/images/intros/categ.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/assets/images/intros/categ.jpg -------------------------------------------------------------------------------- /assets/images/intros/categ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/assets/images/intros/categ.png -------------------------------------------------------------------------------- /assets/images/intros/lang.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/assets/images/intros/lang.jpg -------------------------------------------------------------------------------- /assets/images/intros/lang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/assets/images/intros/lang.png -------------------------------------------------------------------------------- /assets/images/intros/prog.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/assets/images/intros/prog.jpg -------------------------------------------------------------------------------- /assets/images/intros/prog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/assets/images/intros/prog.png -------------------------------------------------------------------------------- /assets/images/intros/rew.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/assets/images/intros/rew.jpg -------------------------------------------------------------------------------- /assets/images/intros/rew.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/assets/images/intros/rew.png -------------------------------------------------------------------------------- /assets/images/intros/win.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/assets/images/intros/win.jpg -------------------------------------------------------------------------------- /assets/images/intros/win.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/assets/images/intros/win.png -------------------------------------------------------------------------------- /assets/images/transportations/Airplane.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/transportations/Ambulance.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/transportations/Boat.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/transportations/Car.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/transportations/Helicopter.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/transportations/Metro.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/transportations/Rocket.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/transportations/Scooter.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/transportations/Ship.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/transportations/Truck.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/twitter.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | background 5 | 6 | 7 | 8 | Layer 1 9 | 10 | 11 | -------------------------------------------------------------------------------- /assets/images/weathers/Cloud.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/weathers/Cloudy.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/weathers/Lightning.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/weathers/Moon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/weathers/Rain.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/weathers/Rainbow.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/weathers/Rainy.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/weathers/Snow.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/weathers/Snowy.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/weathers/Sun.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ios/Flutter/AppFrameworkInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 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 | -------------------------------------------------------------------------------- /ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ios/Runner/AppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | @interface AppDelegate : FlutterAppDelegate 5 | 6 | @end 7 | -------------------------------------------------------------------------------- /ios/Runner/AppDelegate.m: -------------------------------------------------------------------------------- 1 | #include "AppDelegate.h" 2 | #include "GeneratedPluginRegistrant.h" 3 | 4 | @implementation AppDelegate 5 | 6 | - (BOOL)application:(UIApplication *)application 7 | didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 8 | [GeneratedPluginRegistrant registerWithRegistry:self]; 9 | // Override point for customization after application launch. 10 | return [super application:application didFinishLaunchingWithOptions:launchOptions]; 11 | } 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "20x20", 5 | "idiom" : "iphone", 6 | "filename" : "Icon-App-20x20@2x.png", 7 | "scale" : "2x" 8 | }, 9 | { 10 | "size" : "20x20", 11 | "idiom" : "iphone", 12 | "filename" : "Icon-App-20x20@3x.png", 13 | "scale" : "3x" 14 | }, 15 | { 16 | "size" : "29x29", 17 | "idiom" : "iphone", 18 | "filename" : "Icon-App-29x29@1x.png", 19 | "scale" : "1x" 20 | }, 21 | { 22 | "size" : "29x29", 23 | "idiom" : "iphone", 24 | "filename" : "Icon-App-29x29@2x.png", 25 | "scale" : "2x" 26 | }, 27 | { 28 | "size" : "29x29", 29 | "idiom" : "iphone", 30 | "filename" : "Icon-App-29x29@3x.png", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "size" : "40x40", 35 | "idiom" : "iphone", 36 | "filename" : "Icon-App-40x40@2x.png", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "size" : "40x40", 41 | "idiom" : "iphone", 42 | "filename" : "Icon-App-40x40@3x.png", 43 | "scale" : "3x" 44 | }, 45 | { 46 | "size" : "60x60", 47 | "idiom" : "iphone", 48 | "filename" : "Icon-App-60x60@2x.png", 49 | "scale" : "2x" 50 | }, 51 | { 52 | "size" : "60x60", 53 | "idiom" : "iphone", 54 | "filename" : "Icon-App-60x60@3x.png", 55 | "scale" : "3x" 56 | }, 57 | { 58 | "size" : "20x20", 59 | "idiom" : "ipad", 60 | "filename" : "Icon-App-20x20@1x.png", 61 | "scale" : "1x" 62 | }, 63 | { 64 | "size" : "20x20", 65 | "idiom" : "ipad", 66 | "filename" : "Icon-App-20x20@2x.png", 67 | "scale" : "2x" 68 | }, 69 | { 70 | "size" : "29x29", 71 | "idiom" : "ipad", 72 | "filename" : "Icon-App-29x29@1x.png", 73 | "scale" : "1x" 74 | }, 75 | { 76 | "size" : "29x29", 77 | "idiom" : "ipad", 78 | "filename" : "Icon-App-29x29@2x.png", 79 | "scale" : "2x" 80 | }, 81 | { 82 | "size" : "40x40", 83 | "idiom" : "ipad", 84 | "filename" : "Icon-App-40x40@1x.png", 85 | "scale" : "1x" 86 | }, 87 | { 88 | "size" : "40x40", 89 | "idiom" : "ipad", 90 | "filename" : "Icon-App-40x40@2x.png", 91 | "scale" : "2x" 92 | }, 93 | { 94 | "size" : "76x76", 95 | "idiom" : "ipad", 96 | "filename" : "Icon-App-76x76@1x.png", 97 | "scale" : "1x" 98 | }, 99 | { 100 | "size" : "76x76", 101 | "idiom" : "ipad", 102 | "filename" : "Icon-App-76x76@2x.png", 103 | "scale" : "2x" 104 | }, 105 | { 106 | "size" : "83.5x83.5", 107 | "idiom" : "ipad", 108 | "filename" : "Icon-App-83.5x83.5@2x.png", 109 | "scale" : "2x" 110 | }, 111 | { 112 | "size" : "1024x1024", 113 | "idiom" : "ios-marketing", 114 | "filename" : "Icon-App-1024x1024@1x.png", 115 | "scale" : "1x" 116 | } 117 | ], 118 | "info" : { 119 | "version" : 1, 120 | "author" : "xcode" 121 | } 122 | } 123 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /ios/Runner/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /ios/Runner/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /ios/Runner/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | Baby Steps Quiz 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 | -------------------------------------------------------------------------------- /ios/Runner/main.m: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import "AppDelegate.h" 4 | 5 | int main(int argc, char* argv[]) { 6 | @autoreleasepool { 7 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /lib/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter/services.dart'; 3 | 4 | import 'package:quiz_app/routeGenerator.dart'; 5 | 6 | void main() { 7 | SystemChrome.setPreferredOrientations( 8 | [DeviceOrientation.portraitUp, DeviceOrientation.portraitDown]); 9 | return runApp(QuizApp()); 10 | } 11 | 12 | class QuizApp extends StatefulWidget { 13 | @override 14 | _QuizAppState createState() => _QuizAppState(); 15 | } 16 | 17 | class _QuizAppState extends State { 18 | Widget build(BuildContext context) { 19 | return MaterialApp( 20 | theme: ThemeData( 21 | fontFamily: 'Blad', 22 | ), 23 | title: 'Baby Steps Quiz', 24 | // Initially display FirstPage 25 | initialRoute: '/Splash', 26 | onGenerateRoute: RouteGenerator.generateRoute, 27 | debugShowCheckedModeBanner: false, 28 | ); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /lib/models/Categories.dart: -------------------------------------------------------------------------------- 1 | enum Categories { 2 | Animal, 3 | Food, 4 | Transportation, 5 | Job, 6 | Flag, 7 | Weather, 8 | } 9 | -------------------------------------------------------------------------------- /lib/models/Category.dart: -------------------------------------------------------------------------------- 1 | import 'package:quiz_app/models/Quiz.dart'; 2 | 3 | class Category { 4 | Category(this.name, this.question, List others) { 5 | others.shuffle(); 6 | quizs = others; 7 | } 8 | String question; 9 | String name; 10 | List quizs; 11 | } 12 | -------------------------------------------------------------------------------- /lib/models/CurrentCategory.dart: -------------------------------------------------------------------------------- 1 | import 'package:quiz_app/models/Category.dart'; 2 | import 'package:quiz_app/ui/widgets/Progress.dart'; 3 | 4 | class CurrentCategory{ 5 | CurrentCategory(this.category, this.current, this.progress); 6 | 7 | final int current; 8 | final Category category; 9 | final Progress progress; 10 | } 11 | -------------------------------------------------------------------------------- /lib/models/Quiz.dart: -------------------------------------------------------------------------------- 1 | class Quiz { 2 | Quiz(this.correct, List others, this.image, [this.secondImage]) { 3 | others = List.from(others); 4 | others.remove(correct); 5 | others = others.sublist(0, 3); 6 | others.add(correct); 7 | others.shuffle(); 8 | others.shuffle(); 9 | candidates = others; 10 | } 11 | 12 | String correct; 13 | String image; 14 | String secondImage; 15 | List candidates; 16 | } 17 | -------------------------------------------------------------------------------- /lib/routeGenerator.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:quiz_app/ui/Transitions.dart'; 3 | 4 | import 'package:quiz_app/ui/screens/SplashScreen.dart'; 5 | import 'package:quiz_app/ui/screens/IntroScreen.dart'; 6 | import 'package:quiz_app/ui/screens/HomeScreen.dart'; 7 | import 'package:quiz_app/ui/screens/ProgressScreen.dart'; 8 | import 'package:quiz_app/ui/screens/AboutScreen.dart'; 9 | import 'package:quiz_app/ui/screens/CategoryMenuScreen.dart'; 10 | import 'package:quiz_app/ui/screens/CategoryScreen.dart'; 11 | import 'package:quiz_app/ui/screens/ResultScreen.dart'; 12 | 13 | class RouteGenerator { 14 | static Route generateRoute(RouteSettings settings) { 15 | final args = settings.arguments; 16 | 17 | switch (settings.name) { 18 | case '/Splash': 19 | return FadeRoute(page: SplashScreen()); 20 | case '/Intro': 21 | return FadeRoute(page: IntroScreen()); 22 | case '/Home': 23 | return ScaleRoute(page: HomeScreen()); 24 | case '/MyProgress': 25 | return FadeRoute(page: ProgressScreen()); 26 | case '/About': 27 | return FadeRoute(page: AboutScreen()); 28 | case '/Menu': 29 | return FadeRoute(page: CategoryMenuScreen()); 30 | case '/Category': 31 | return SizeRoute(page: CategoryScreen(category: args)); 32 | case '/Result': 33 | return ScaleRoute(page: ResultScreen(correct: args)); 34 | default: 35 | return _errorRoute(); 36 | } 37 | } 38 | 39 | static Route _errorRoute() { 40 | return MaterialPageRoute(builder: (_) { 41 | return Scaffold( 42 | appBar: AppBar( 43 | title: Text('Error'), 44 | ), 45 | body: Center( 46 | child: Text('ERROR'), 47 | ), 48 | ); 49 | }); 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /lib/strings/SVGs.dart: -------------------------------------------------------------------------------- 1 | const List animalsSVG = [ 2 | 'Cow', 3 | 'Dog', 4 | 'Duck', 5 | 'Elephant', 6 | 'Bull', 7 | 'Giraffe', 8 | 'Lion', 9 | 'Monkey', 10 | 'Mouse', 11 | 'Tiger' 12 | ]; 13 | const List weathersSVG = [ 14 | 'Cloud', 15 | 'Cloudy', 16 | 'Lightning', 17 | 'Moon', 18 | 'Rain', 19 | 'Rainbow', 20 | 'Rainy', 21 | 'Snow', 22 | 'Snowy', 23 | 'Sun' 24 | ]; 25 | const List foodsSVG = [ 26 | 'Apple', 27 | 'Bread', 28 | 'Cheese', 29 | 'Donut', 30 | 'Egg', 31 | 'Fries', 32 | 'Grapes', 33 | 'Mushroom', 34 | 'Pizza', 35 | 'Steak' 36 | ]; 37 | const List flagsSVG = [ 38 | 'Belgium', 39 | 'France', 40 | 'Germany', 41 | 'Iceland', 42 | 'Ireland', 43 | 'Italy', 44 | 'Japan', 45 | 'Netherlands', 46 | 'Russia', 47 | 'Sweden' 48 | ]; 49 | const List transportationsSVG = [ 50 | 'Airplane', 51 | 'Ambulance', 52 | 'Boat', 53 | 'Car', 54 | 'Helicopter', 55 | 'Metro', 56 | 'Rocket', 57 | 'Scooter', 58 | 'Ship', 59 | 'Truck' 60 | ]; 61 | const List jobsSVG = [ 62 | 'Artist', 63 | 'Astronaut', 64 | 'Cook', 65 | 'Doctor', 66 | 'Farmer', 67 | 'Firefighter', 68 | 'Judge', 69 | 'Pilot', 70 | 'Scientist', 71 | 'Singer' 72 | ]; 73 | -------------------------------------------------------------------------------- /lib/strings/Strings.dart: -------------------------------------------------------------------------------- 1 | import 'package:quiz_app/models/Category.dart'; 2 | import 'package:quiz_app/models/Quiz.dart'; 3 | 4 | class Strings { 5 | Strings._(); 6 | 7 | static String categoryMenu ="Categories"; 8 | static String correct = "Correct"; 9 | static String wrong = "Wrong"; 10 | static String next = "Next"; 11 | static String result = "Result"; 12 | static String answer = "Answer"; 13 | static String win = "Good Job all correct !"; 14 | static String loose = "Good luck next time !"; 15 | static String playAgain = "Play Again"; 16 | static const List animals = [ 17 | 'Cow', 18 | 'Dog', 19 | 'Duck', 20 | 'Elephant', 21 | 'Bull', 22 | 'Giraffe', 23 | 'Lion', 24 | 'Monkey', 25 | 'Mouse', 26 | 'Tiger' 27 | ]; 28 | static const List weathers = [ 29 | 'Cloud', 30 | 'Cloudy', 31 | 'Lightning', 32 | 'Moon', 33 | 'Rain', 34 | 'Rainbow', 35 | 'Rainy', 36 | 'Snow', 37 | 'Snowy', 38 | 'Sun' 39 | ]; 40 | static const List foods = [ 41 | 'Apple', 42 | 'Bread', 43 | 'Cheese', 44 | 'Donut', 45 | 'Egg', 46 | 'Fries', 47 | 'Grapes', 48 | 'Mushroom', 49 | 'Pizza', 50 | 'Steak' 51 | ]; 52 | static const List flags = [ 53 | 'Belgium', 54 | 'France', 55 | 'Germany', 56 | 'Iceland', 57 | 'Ireland', 58 | 'Italy', 59 | 'Japan', 60 | 'Netherlands', 61 | 'Russia', 62 | 'Sweden' 63 | ]; 64 | static const List transportations = [ 65 | 'Airplane', 66 | 'Ambulance', 67 | 'Boat', 68 | 'Car', 69 | 'Helicopter', 70 | 'Metro', 71 | 'Rocket', 72 | 'Scooter', 73 | 'Ship', 74 | 'Truck' 75 | ]; 76 | static const List jobs = [ 77 | 'Artist', 78 | 'Astronaut', 79 | 'Cook', 80 | 'Doctor', 81 | 'Farmer', 82 | 'Firefighter', 83 | 'Judge', 84 | 'Pilot', 85 | 'Scientist', 86 | 'Singer' 87 | ]; 88 | 89 | static getCategory(String name) { 90 | Category category; 91 | List quizs = List(); 92 | 93 | switch (name) { 94 | case 'animal': 95 | for (var i = 0; i < animals.length; i++) { 96 | quizs.add(Quiz(animals[i], animals, 97 | "assets/images/animals/" + animals[i] + ".svg")); 98 | } 99 | category = 100 | new Category('Animals', 'What is this animal called ?', quizs); 101 | return category; 102 | case 'weather': 103 | for (var i = 0; i < weathers.length; i++) { 104 | quizs.add(Quiz(weathers[i], weathers, 105 | "assets/images/weathers/" + weathers[i] + ".svg")); 106 | } 107 | category = new Category('Weathers', 'What is this called ?', quizs); 108 | return category; 109 | case 'food': 110 | for (var i = 0; i < foods.length; i++) { 111 | quizs.add(Quiz( 112 | foods[i], foods, "assets/images/foods/" + foods[i] + ".svg")); 113 | } 114 | category = new Category('Foods', 'What is this food called ?', quizs); 115 | return category; 116 | case 'flag': 117 | for (var i = 0; i < flags.length; i++) { 118 | quizs.add(Quiz( 119 | flags[i], flags, "assets/images/flags/" + flags[i] + ".svg")); 120 | } 121 | category = 122 | new Category('Countries', 'What is this country Named ?', quizs); 123 | return category; 124 | case 'transportation': 125 | for (var i = 0; i < transportations.length; i++) { 126 | quizs.add(Quiz(transportations[i], transportations, 127 | "assets/images/transportations/" + transportations[i] + ".svg")); 128 | } 129 | category = new Category( 130 | 'Transportations', 'What is this transportation called ?', quizs); 131 | return category; 132 | case 'job': 133 | for (var i = 0; i < jobs.length; i++) { 134 | quizs.add(Quiz( 135 | jobs[i], 136 | jobs, 137 | "assets/images/jobs/male/" + jobs[i] + "_male.svg", 138 | "assets/images/jobs/female/" + jobs[i] + "_female.svg")); 139 | } 140 | category = new Category('Jobs', 'What is this job called ?', quizs); 141 | return category; 142 | } 143 | } 144 | } 145 | -------------------------------------------------------------------------------- /lib/strings/StringsAR.dart: -------------------------------------------------------------------------------- 1 | import 'package:quiz_app/models/Category.dart'; 2 | import 'package:quiz_app/models/Quiz.dart'; 3 | import 'package:quiz_app/strings/SVGs.dart'; 4 | 5 | class StringsAR { 6 | StringsAR._(); 7 | 8 | static String categoryMenu ="فئاة"; 9 | static String correct = "صحيح"; 10 | static String wrong = "خاطئ"; 11 | static String next = "التالي"; 12 | static String result = "نتيجة"; 13 | static String answer = "أجب"; 14 | static String win = "! عمل الجيد الكل صحيح"; 15 | static String loose = "! حظ سعيد في المرة القادمة"; 16 | static String playAgain = "العب مرة أخرى"; 17 | static const List animals = [ 18 | 'بقرة', 19 | 'كلب', 20 | 'بطة', 21 | 'فيل', 22 | 'ثور', 23 | 'زرافة', 24 | 'أسد', 25 | 'قرد', 26 | 'فأر', 27 | 'نمر' 28 | ]; 29 | static const List weathers = [ 30 | 'غيم', 31 | 'غائم', 32 | 'برق', 33 | 'القمر', 34 | 'تمطر', 35 | 'قوس قزح', 36 | 'مطر', 37 | 'ثلج', 38 | 'مثلج', 39 | 'شمس' 40 | ]; 41 | static const List foods = [ 42 | 'تفاحة', 43 | 'خبز', 44 | 'جبن', 45 | 'كعكة', 46 | 'بيضة', 47 | 'بطاطا', 48 | 'عنب', 49 | 'فطر', 50 | 'بيتزا', 51 | 'لحم' 52 | ]; 53 | static const List flags = [ 54 | 'بلجيكا', 55 | 'فرنسا', 56 | 'ألمانيا', 57 | 'أيسلندا', 58 | "أيرلندا", 59 | 'إيطاليا', 60 | 'اليابان', 61 | 'هولندا', 62 | 'روسيا', 63 | 'السويد' 64 | ]; 65 | static const List transportations = [ 66 | 'طائرة', 67 | 'سياره اسعاف', 68 | 'قارب', 69 | 'سيارة', 70 | 'طائرة عامودية', 71 | 'قطار', 72 | 'صاروخ', 73 | 'دراجة بخارية ', 74 | 'سفينة', 75 | 'شاحنة' 76 | ]; 77 | static const List jobs = [ 78 | 'فنان', 79 | 'رائد فضاء', 80 | 'طباخ', 81 | 'طبيب', 82 | 'فلاح', 83 | 'إطفائي', 84 | 'قاضي', 85 | 'قائد الطائرة', 86 | 'عالم', 87 | 'مغني' 88 | ]; 89 | 90 | static getCategory(String name) { 91 | Category category; 92 | List quizs = List(); 93 | 94 | switch (name) { 95 | case 'animal': 96 | for (var i = 0; i < animals.length; i++) { 97 | quizs.add(Quiz(animals[i], animals, 98 | "assets/images/animals/" + animalsSVG[i] + ".svg")); 99 | } 100 | category = 101 | new Category('الحيوانات', 'ماذا يسمى هذا الحيوان؟', quizs); 102 | return category; 103 | case 'weather': 104 | for (var i = 0; i < weathers.length; i++) { 105 | quizs.add(Quiz(weathers[i], weathers, 106 | "assets/images/weathers/" + weathersSVG[i] + ".svg")); 107 | } 108 | category = new Category('طقس', 'ماذا يدعى ؟', quizs); 109 | return category; 110 | case 'food': 111 | for (var i = 0; i < foods.length; i++) { 112 | quizs.add(Quiz( 113 | foods[i], foods, "assets/images/foods/" + foodsSVG[i] + ".svg")); 114 | } 115 | category = new Category('طعام', 'ماذا يسمى هذا الطعام؟', quizs); 116 | return category; 117 | case 'flag': 118 | for (var i = 0; i < flags.length; i++) { 119 | quizs.add(Quiz( 120 | flags[i], flags, "assets/images/flags/" + flagsSVG[i] + ".svg")); 121 | } 122 | category = 123 | new Category('بلدان', 'ما اسم هذا البلد؟', quizs); 124 | return category; 125 | case 'transportation': 126 | for (var i = 0; i < transportations.length; i++) { 127 | quizs.add(Quiz(transportations[i], transportations, 128 | "assets/images/transportations/" + transportationsSVG[i] + ".svg")); 129 | } 130 | category = new Category( 131 | 'نقل', 'ماذا يسمى هذا النقل؟', quizs); 132 | return category; 133 | case 'job': 134 | for (var i = 0; i < jobs.length; i++) { 135 | quizs.add(Quiz( 136 | jobs[i], 137 | jobs, 138 | "assets/images/jobs/male/" + jobsSVG[i] + "_male.svg", 139 | "assets/images/jobs/female/" + jobsSVG[i] + "_female.svg")); 140 | } 141 | category = new Category('وظائف', 'ماذا يسمى هذا العمل؟', quizs); 142 | return category; 143 | } 144 | } 145 | } 146 | -------------------------------------------------------------------------------- /lib/strings/StringsES.dart: -------------------------------------------------------------------------------- 1 | import 'package:quiz_app/models/Category.dart'; 2 | import 'package:quiz_app/models/Quiz.dart'; 3 | import 'package:quiz_app/strings/SVGs.dart'; 4 | 5 | class StringsES { 6 | StringsES._(); 7 | 8 | static String categoryMenu ="Categorías"; 9 | static String correct = "Correcto"; 10 | static String wrong = "Incorrecto"; 11 | static String next = "Siguiente"; 12 | static String result = "Resultado"; 13 | static String answer = "Responder"; 14 | static String win = "Buen trabajo todo correcto!"; 15 | static String loose = "Buena suerte la próxima vez !"; 16 | static String playAgain = "Juega de nuevo"; 17 | static const List animals = [ 18 | 'Vaca', 19 | 'Perro', 20 | 'Pato', 21 | 'Elefante', 22 | 'Toro', 23 | 'Jirafa', 24 | 'León', 25 | 'Mono', 26 | 'Ratón', 27 | 'Tigre' 28 | ]; 29 | static const List weathers = [ 30 | 'Nube', 31 | 'Nublado', 32 | 'Relámpago', 33 | 'Luna', 34 | 'Lluvia', 35 | 'Arco iris', 36 | 'Lluvioso', 37 | 'Nieve', 38 | 'Nevado', 39 | 'Dom' 40 | ]; 41 | static const List foods = [ 42 | 'Manzana', 43 | 'Un pan', 44 | 'Queso', 45 | 'Rosquilla', 46 | 'Huevo', 47 | 'Papas fritas', 48 | 'Uvas', 49 | 'Seta', 50 | 'Pizza', 51 | 'Filete' 52 | ]; 53 | static const List flags = [ 54 | 'Bélgica', 55 | 'Francia', 56 | 'Alemania', 57 | 'Islandia', 58 | 'Irlanda', 59 | 'Italia', 60 | 'Japón', 61 | 'Países Bajos', 62 | 'Rusia', 63 | 'Suecia' 64 | ]; 65 | static const List transportations = [ 66 | 'Avión', 67 | 'Ambulancia', 68 | 'Bote', 69 | 'Coche', 70 | 'Helicóptero', 71 | 'Metro', 72 | 'Cohete', 73 | 'Scooter', 74 | 'Enviar', 75 | 'Camión' 76 | ]; 77 | static const List jobs = [ 78 | 'Artista', 79 | 'Astronauta', 80 | 'Cocinar', 81 | 'Médico', 82 | 'Granjero', 83 | 'Bombero', 84 | 'Juez', 85 | 'Piloto', 86 | 'Científico', 87 | 'Cantante' 88 | ]; 89 | 90 | static getCategory(String name) { 91 | Category category; 92 | List quizs = List(); 93 | 94 | switch (name) { 95 | case 'animal': 96 | for (var i = 0; i < animals.length; i++) { 97 | quizs.add(Quiz(animals[i], animals, 98 | "assets/images/animals/" + animalsSVG[i] + ".svg")); 99 | } 100 | category = 101 | new Category('Animales', '¿Cómo se llama este animal?', quizs); 102 | return category; 103 | case 'weather': 104 | for (var i = 0; i < weathers.length; i++) { 105 | quizs.add(Quiz(weathers[i], weathers, 106 | "assets/images/weathers/" + weathersSVG[i] + ".svg")); 107 | } 108 | category = new Category('Climas', '¿Como se llama esto ?', quizs); 109 | return category; 110 | case 'food': 111 | for (var i = 0; i < foods.length; i++) { 112 | quizs.add(Quiz( 113 | foods[i], foods, "assets/images/foods/" + foodsSVG[i] + ".svg")); 114 | } 115 | category = new Category('Alimentos', '¿Cómo se llama esta comida?', quizs); 116 | return category; 117 | case 'flag': 118 | for (var i = 0; i < flags.length; i++) { 119 | quizs.add(Quiz( 120 | flags[i], flags, "assets/images/flags/" + flagsSVG[i] + ".svg")); 121 | } 122 | category = 123 | new Category('Países', '¿Cómo se llama este país?', quizs); 124 | return category; 125 | case 'transportation': 126 | for (var i = 0; i < transportations.length; i++) { 127 | quizs.add(Quiz(transportations[i], transportations, 128 | "assets/images/transportations/" + transportationsSVG[i] + ".svg")); 129 | } 130 | category = new Category( 131 | 'Transportes', '¿Cómo se llama este transporte?', quizs); 132 | return category; 133 | case 'job': 134 | for (var i = 0; i < jobs.length; i++) { 135 | quizs.add(Quiz( 136 | jobs[i], 137 | jobs, 138 | "assets/images/jobs/male/" + jobsSVG[i] + "_male.svg", 139 | "assets/images/jobs/female/" + jobsSVG[i] + "_female.svg")); 140 | } 141 | category = new Category('Trabajos', '¿Cómo se llama este trabajo?', quizs); 142 | return category; 143 | } 144 | } 145 | } 146 | -------------------------------------------------------------------------------- /lib/strings/StringsFR.dart: -------------------------------------------------------------------------------- 1 | import 'package:quiz_app/models/Category.dart'; 2 | import 'package:quiz_app/models/Quiz.dart'; 3 | import 'package:quiz_app/strings/SVGs.dart'; 4 | 5 | class StringsFR { 6 | StringsFR._(); 7 | 8 | static String categoryMenu ="Catégories"; 9 | static String correct = "Correct"; 10 | static String wrong = "Faux"; 11 | static String next = "Suivant"; 12 | static String result = "Résultat"; 13 | static String answer = "Répondre"; 14 | static String win = "Bon travail tout est correct!"; 15 | static String loose = "Bonne chance la prochaine fois!"; 16 | static String playAgain = "Rejouer"; 17 | static const List animals = [ 18 | 'Vache', 19 | 'Chien', 20 | 'Canard', 21 | 'Eléphant', 22 | 'Taureau', 23 | 'Girafe', 24 | 'Lion', 25 | 'Singe', 26 | 'Souris', 27 | 'Tigre' 28 | ]; 29 | static const List weathers = [ 30 | 'Nuage', 31 | 'Nuageux', 32 | 'Foudre', 33 | 'Lune', 34 | 'Pluie', 35 | 'Arc en ciel', 36 | 'Pluvieux', 37 | 'Neige', 38 | 'Neigeux', 39 | 'Soleil' 40 | ]; 41 | static const List foods = [ 42 | 'Pomme', 43 | 'Pain', 44 | 'Fromage', 45 | 'Donut', 46 | 'Oeuf', 47 | 'Frites', 48 | 'Raisins', 49 | 'Champignon', 50 | 'Pizza', 51 | 'Steak' 52 | ]; 53 | static const List flags = [ 54 | 'Belgique', 55 | 'France', 56 | 'Allemagne', 57 | 'Islande', 58 | 'Irlande', 59 | 'Italie', 60 | 'Japon', 61 | 'Pays-Bas', 62 | 'Russie', 63 | 'Suède' 64 | ]; 65 | static const List transportations = [ 66 | 'Avion', 67 | 'Ambulance', 68 | 'Bateau', 69 | 'Voiture', 70 | 'Hélicoptère', 71 | 'Métro', 72 | 'Fusée', 73 | 'Scooter', 74 | 'Navire', 75 | 'Camion' 76 | ]; 77 | static const List jobs = [ 78 | 'Artiste', 79 | 'Astronaute', 80 | 'Cuisinier', 81 | 'Médecin', 82 | 'Fermier', 83 | 'Pompier', 84 | 'Juge', 85 | 'Pilote', 86 | 'Scientifique', 87 | 'Chanteur' 88 | ]; 89 | 90 | static getCategory(String name) { 91 | Category category; 92 | List quizs = List(); 93 | 94 | switch (name) { 95 | case 'animal': 96 | for (var i = 0; i < animals.length; i++) { 97 | quizs.add(Quiz(animals[i], animals, 98 | "assets/images/animals/" + animalsSVG[i] + ".svg")); 99 | } 100 | category = 101 | new Category('Animaux', 'Comment s\'appelle cet animal?', quizs); 102 | return category; 103 | case 'weather': 104 | for (var i = 0; i < weathers.length; i++) { 105 | quizs.add(Quiz(weathers[i], weathers, 106 | "assets/images/weathers/" + weathersSVG[i] + ".svg")); 107 | } 108 | category = new Category('Météo', 'Qu\'est-ce que c\'est ?', quizs); 109 | return category; 110 | case 'food': 111 | for (var i = 0; i < foods.length; i++) { 112 | quizs.add(Quiz( 113 | foods[i], foods, "assets/images/foods/" + foodsSVG[i] + ".svg")); 114 | } 115 | category = new Category('Nourriture', 'Comment s\'appelle cette nourriture?', quizs); 116 | return category; 117 | case 'flag': 118 | for (var i = 0; i < flags.length; i++) { 119 | quizs.add(Quiz( 120 | flags[i], flags, "assets/images/flags/" + flagsSVG[i] + ".svg")); 121 | } 122 | category = 123 | new Category('Pays', 'Quel est ce pays?', quizs); 124 | return category; 125 | case 'transportation': 126 | for (var i = 0; i < transportations.length; i++) { 127 | quizs.add(Quiz(transportations[i], transportations, 128 | "assets/images/transportations/" + transportationsSVG[i] + ".svg")); 129 | } 130 | category = new Category( 131 | 'Transports', 'Comment s\'appelle ce transport?', quizs); 132 | return category; 133 | case 'job': 134 | for (var i = 0; i < jobs.length; i++) { 135 | quizs.add(Quiz( 136 | jobs[i], 137 | jobs, 138 | "assets/images/jobs/male/" + jobsSVG[i] + "_male.svg", 139 | "assets/images/jobs/female/" + jobsSVG[i] + "_female.svg")); 140 | } 141 | category = new Category('Métiers', 'Comment s\'appelle ce travail?', quizs); 142 | return category; 143 | } 144 | } 145 | } 146 | -------------------------------------------------------------------------------- /lib/strings/StringsLoader.dart: -------------------------------------------------------------------------------- 1 | import 'package:quiz_app/strings/Strings.dart'; 2 | import 'package:quiz_app/strings/StringsFR.dart'; 3 | import 'package:quiz_app/strings/StringsES.dart'; 4 | import 'package:quiz_app/strings/StringsAR.dart'; 5 | 6 | class StringsLoader { 7 | 8 | String lang ; 9 | 10 | StringsLoader(String lang){ 11 | this.lang = lang; 12 | } 13 | 14 | loadWinLoose(bool nx){ 15 | switch (lang) { 16 | case "": 17 | switch (nx) { 18 | case true: 19 | return(Strings.win); 20 | case false: 21 | return(Strings.loose); 22 | } 23 | break; 24 | case "FR": 25 | switch (nx) { 26 | case true: 27 | return(StringsFR.win); 28 | case false: 29 | return(StringsFR.loose); 30 | } 31 | break; 32 | case "ES": 33 | switch (nx) { 34 | case true: 35 | return(StringsES.win); 36 | case false: 37 | return(StringsES.loose); 38 | } 39 | break; 40 | case "AR": 41 | switch (nx) { 42 | case true: 43 | return(StringsAR.win); 44 | case false: 45 | return(StringsAR.loose); 46 | } 47 | break; 48 | } 49 | } 50 | 51 | loadNext(bool nx){ 52 | switch (lang) { 53 | case "": 54 | switch (nx) { 55 | case true: 56 | return(Strings.next); 57 | case false: 58 | return(Strings.result); 59 | } 60 | break; 61 | case "FR": 62 | switch (nx) { 63 | case true: 64 | return(StringsFR.next); 65 | case false: 66 | return(StringsFR.result); 67 | } 68 | break; 69 | case "ES": 70 | switch (nx) { 71 | case true: 72 | return(StringsES.next); 73 | case false: 74 | return(StringsES.result); 75 | } 76 | break; 77 | case "AR": 78 | switch (nx) { 79 | case true: 80 | return(StringsAR.next); 81 | case false: 82 | return(StringsAR.result); 83 | } 84 | break; 85 | } 86 | } 87 | 88 | loadResult(bool answer){ 89 | switch (lang) { 90 | case "": 91 | switch (answer) { 92 | case true: 93 | return(Strings.correct); 94 | case false: 95 | return(Strings.wrong); 96 | } 97 | break; 98 | case "FR": 99 | switch (answer) { 100 | case true: 101 | return(StringsFR.correct); 102 | case false: 103 | return(StringsFR.wrong); 104 | } 105 | break; 106 | case "ES": 107 | switch (answer) { 108 | case true: 109 | return(StringsES.correct); 110 | case false: 111 | return(StringsES.wrong); 112 | } 113 | break; 114 | case "AR": 115 | switch (answer) { 116 | case true: 117 | return(StringsAR.correct); 118 | case false: 119 | return(StringsAR.wrong); 120 | } 121 | break; 122 | } 123 | } 124 | 125 | loadPlayAgain(){ 126 | switch (lang) { 127 | case "": 128 | return(Strings.playAgain); 129 | break; 130 | case "FR": 131 | return(StringsFR.playAgain); 132 | break; 133 | case "ES": 134 | return(StringsES.playAgain); 135 | break; 136 | case "AR": 137 | return(StringsAR.playAgain); 138 | break; 139 | } 140 | } 141 | 142 | loadCategoryMenu(){ 143 | switch (lang) { 144 | case "": 145 | return(Strings.categoryMenu); 146 | break; 147 | case "FR": 148 | return(StringsFR.categoryMenu); 149 | break; 150 | case "ES": 151 | return(StringsES.categoryMenu); 152 | break; 153 | case "AR": 154 | return(StringsAR.categoryMenu); 155 | break; 156 | } 157 | } 158 | 159 | loadAnswer(){ 160 | switch (lang) { 161 | case "": 162 | return(Strings.answer); 163 | break; 164 | case "FR": 165 | return(StringsFR.answer); 166 | break; 167 | case "ES": 168 | return(StringsES.answer); 169 | break; 170 | case "AR": 171 | return(StringsAR.answer); 172 | break; 173 | } 174 | } 175 | 176 | loadCategories(String name) { 177 | switch (lang) { 178 | case "": 179 | return(Strings.getCategory(name)); 180 | break; 181 | case "FR": 182 | return(StringsFR.getCategory(name)); 183 | break; 184 | case "ES": 185 | return(StringsES.getCategory(name)); 186 | break; 187 | case "AR": 188 | return(StringsAR.getCategory(name)); 189 | break; 190 | } 191 | } 192 | 193 | } 194 | -------------------------------------------------------------------------------- /lib/ui/Transitions.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class ScaleRoute extends PageRouteBuilder { 4 | final Widget page; 5 | ScaleRoute({this.page}) 6 | : super( 7 | pageBuilder: ( 8 | BuildContext context, 9 | Animation animation, 10 | Animation secondaryAnimation, 11 | ) => 12 | page, 13 | transitionsBuilder: ( 14 | BuildContext context, 15 | Animation animation, 16 | Animation secondaryAnimation, 17 | Widget child, 18 | ) => 19 | ScaleTransition( 20 | scale: Tween( 21 | begin: 0.0, 22 | end: 1.0, 23 | ).animate( 24 | CurvedAnimation( 25 | parent: animation, 26 | curve: Curves.fastOutSlowIn, 27 | ), 28 | ), 29 | child: child, 30 | ), 31 | ); 32 | } 33 | 34 | class SizeRoute extends PageRouteBuilder { 35 | final Widget page; 36 | SizeRoute({this.page}) 37 | : super( 38 | pageBuilder: ( 39 | BuildContext context, 40 | Animation animation, 41 | Animation secondaryAnimation, 42 | ) => 43 | page, 44 | transitionsBuilder: ( 45 | BuildContext context, 46 | Animation animation, 47 | Animation secondaryAnimation, 48 | Widget child, 49 | ) => 50 | Align( 51 | child: SizeTransition( 52 | sizeFactor: animation, 53 | child: child, 54 | ), 55 | ), 56 | ); 57 | } 58 | 59 | class FadeRoute extends PageRouteBuilder { 60 | final Widget page; 61 | FadeRoute({this.page}) 62 | : super( 63 | pageBuilder: ( 64 | BuildContext context, 65 | Animation animation, 66 | Animation secondaryAnimation, 67 | ) => 68 | page, 69 | transitionsBuilder: ( 70 | BuildContext context, 71 | Animation animation, 72 | Animation secondaryAnimation, 73 | Widget child, 74 | ) => 75 | FadeTransition( 76 | opacity: animation, 77 | child: child, 78 | ), 79 | ); 80 | } 81 | -------------------------------------------------------------------------------- /lib/ui/screens/SplashScreen.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | import 'package:flutter/material.dart'; 3 | import 'package:shared_preferences/shared_preferences.dart'; 4 | 5 | class SplashScreen extends StatefulWidget { 6 | @override 7 | SplashScreenState createState() => new SplashScreenState(); 8 | } 9 | 10 | class SplashScreenState extends State 11 | with SingleTickerProviderStateMixin { 12 | var _visible = true; 13 | 14 | AnimationController animationController; 15 | Animation animation; 16 | SharedPreferences prefs; 17 | 18 | startTime() async { 19 | var _duration = new Duration(seconds: 6); 20 | return new Timer(_duration, navigationPage); 21 | } 22 | 23 | void navigationPage() async{ 24 | prefs = await SharedPreferences.getInstance(); 25 | if(prefs.containsKey('intro')){ 26 | Navigator.of(context).pushNamedAndRemoveUntil('/Home',(Route route) => false); 27 | }else{ 28 | Navigator.of(context).pushNamedAndRemoveUntil('/Intro',(Route route) => false); 29 | } 30 | 31 | } 32 | 33 | @override 34 | void initState() { 35 | super.initState(); 36 | animationController = new AnimationController( 37 | vsync: this, 38 | duration: new Duration(seconds: 4), 39 | ); 40 | animation = 41 | new CurvedAnimation(parent: animationController, curve: Curves.easeOut); 42 | 43 | animation.addListener(() => this.setState(() {})); 44 | animationController.forward(); 45 | 46 | setState(() { 47 | _visible = !_visible; 48 | }); 49 | startTime(); 50 | } 51 | 52 | @override 53 | Widget build(BuildContext context) { 54 | return WillPopScope( 55 | onWillPop: () async => false, 56 | child:Scaffold( 57 | backgroundColor: Colors.black, 58 | body: Stack( 59 | fit: StackFit.expand, 60 | children: [ 61 | new Column( 62 | mainAxisAlignment: MainAxisAlignment.end, 63 | mainAxisSize: MainAxisSize.min, 64 | children: [ 65 | Padding( 66 | padding: EdgeInsets.only(bottom: 30.0), 67 | child: Text( 68 | "all copyrights reserved ©", 69 | style: TextStyle( 70 | color: Colors.amberAccent, 71 | shadows: [ 72 | Shadow( 73 | color: Colors.yellowAccent, 74 | blurRadius: 10.0, 75 | offset: Offset(3.0, 3.0), 76 | ), 77 | Shadow( 78 | color: Colors.pink[300], 79 | blurRadius: 10.0, 80 | offset: Offset(-2.0, 2.0), 81 | ), 82 | ], 83 | ), 84 | ), 85 | ) 86 | ], 87 | ), 88 | new Column( 89 | mainAxisAlignment: MainAxisAlignment.center, 90 | children: [ 91 | new Image.asset( 92 | "assets/images/dev_icon.png", 93 | width: animation.value * 250, 94 | height: animation.value * 250, 95 | ), 96 | ], 97 | ), 98 | ], 99 | ), 100 | ), 101 | ); 102 | } 103 | } 104 | -------------------------------------------------------------------------------- /lib/ui/widgets/EmptyAppBar.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class EmptyAppBar extends StatelessWidget implements PreferredSizeWidget { 4 | @override 5 | Widget build(BuildContext context) { 6 | return Container(); 7 | } 8 | 9 | @override 10 | Size get preferredSize => Size(0.0, 0.0); 11 | } 12 | -------------------------------------------------------------------------------- /lib/ui/widgets/Progress.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Progress extends StatelessWidget { 4 | List progress; 5 | 6 | Progress({ 7 | Key key, 8 | this.progress, 9 | }) : super(key: key); 10 | 11 | @override 12 | Widget build(BuildContext context) { 13 | return Center( 14 | child: Row( 15 | mainAxisAlignment: MainAxisAlignment.spaceAround, 16 | children: progress.map((kind) { 17 | return Text(_convertToStringFromProgressKind(kind)); 18 | }).toList(), 19 | ), 20 | ); 21 | } 22 | 23 | String _convertToStringFromProgressKind(ProgressKind kind) { 24 | switch (kind) { 25 | case ProgressKind.correct: 26 | return '⭕️️️'; 27 | case ProgressKind.incorrect: 28 | return '❌'; 29 | case ProgressKind.notYet: 30 | return '▫️'; 31 | case ProgressKind.current: 32 | return '🔷'; 33 | } 34 | assert(false, 'invalid kind: $kind'); 35 | return ''; 36 | } 37 | } 38 | 39 | enum ProgressKind { 40 | correct, 41 | incorrect, 42 | current, 43 | notYet, 44 | } 45 | -------------------------------------------------------------------------------- /lib/ui/widgets/chooser/ChooserWidget.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:quiz_app/ui/widgets/chooser/ArcChooser.dart'; 3 | import 'package:quiz_app/ui/widgets/chooser/ChooserPainter.dart'; 4 | 5 | 6 | class ChooserWidget extends StatefulWidget { 7 | List arcNames; 8 | 9 | @override 10 | State createState() { 11 | return _ChooserWidgetState(arcNames); 12 | } 13 | } 14 | 15 | class _ChooserWidgetState extends State 16 | with TickerProviderStateMixin { 17 | final PageController pageControl = new PageController( 18 | initialPage: 2, 19 | keepPage: false, 20 | viewportFraction: 0.2, 21 | ); 22 | 23 | _ChooserWidgetState(List arcNames) { 24 | this.arcNames = arcNames; 25 | } 26 | 27 | int slideValue = 200; 28 | int lastAnimPosition = 2; 29 | int answer = 2; 30 | 31 | AnimationController animation; 32 | 33 | List arcNames; 34 | 35 | 36 | Color startColor; 37 | Color endColor; 38 | 39 | @override 40 | void initState() { 41 | super.initState(); 42 | 43 | 44 | startColor = Color(0xFF21e1fa); 45 | endColor = Color(0xff3bb8fd); 46 | 47 | animation = new AnimationController( 48 | value: 0.0, 49 | lowerBound: 0.0, 50 | upperBound: 400.0, 51 | duration: const Duration(milliseconds: 800), 52 | vsync: this, 53 | )..addListener(() { 54 | setState(() { 55 | slideValue = animation.value.toInt(); 56 | double ratio; 57 | 58 | if (slideValue <= 100) { 59 | ratio = animation.value / 100; 60 | startColor = 61 | Color.lerp(Color(0xFFfe0944), Color(0xFFF9D976), ratio); 62 | endColor = 63 | Color.lerp(Color(0xFFfeae96), Color(0xfff39f86), ratio); 64 | } else if (slideValue <= 200) { 65 | ratio = (animation.value - 100) / 100; 66 | startColor = 67 | Color.lerp(Color(0xFFF9D976), Color(0xFF21e1fa), ratio); 68 | endColor = 69 | Color.lerp(Color(0xfff39f86), Color(0xff3bb8fd), ratio); 70 | } else if (slideValue <= 300) { 71 | ratio = (animation.value - 200) / 100; 72 | startColor = 73 | Color.lerp(Color(0xFF21e1fa), Color(0xFF3ee98a), ratio); 74 | endColor = 75 | Color.lerp(Color(0xff3bb8fd), Color(0xFF41f7c7), ratio); 76 | } else if (slideValue <= 400) { 77 | ratio = (animation.value - 300) / 100; 78 | startColor = 79 | Color.lerp(Color(0xFF3ee98a), Color(0xFFfe0944), ratio); 80 | endColor = 81 | Color.lerp(Color(0xFF41f7c7), Color(0xFFfeae96), ratio); 82 | } 83 | }); 84 | }); 85 | 86 | animation.animateTo(slideValue.toDouble()); 87 | } 88 | 89 | @override 90 | Widget build(BuildContext context) { 91 | var size = MediaQuery.of(context).size; 92 | 93 | return Container( 94 | color: Colors.red, 95 | width: size.width, 96 | child:ArcChooser() 97 | ..arcNames = arcNames 98 | ..arcSelectedCallback = (int pos, ArcItem item) { 99 | int animPosition = pos - 2; 100 | if (animPosition > 3) { 101 | animPosition = animPosition - 4; 102 | } 103 | 104 | if (animPosition < 0) { 105 | animPosition = 4 + animPosition; 106 | } 107 | 108 | if (lastAnimPosition == 3 && animPosition == 0) { 109 | animation.animateTo(4 * 100.0); 110 | } else if (lastAnimPosition == 0 && animPosition == 3) { 111 | animation.forward(from: 4 * 100.0); 112 | animation.animateTo(animPosition * 100.0); 113 | } else if (lastAnimPosition == 0 && animPosition == 1) { 114 | animation.forward(from: 0.0); 115 | animation.animateTo(animPosition * 100.0); 116 | } else { 117 | animation.animateTo(animPosition * 100.0); 118 | } 119 | 120 | lastAnimPosition = animPosition; 121 | setState(() { 122 | answer = lastAnimPosition; 123 | }); 124 | }, 125 | ); 126 | 127 | } 128 | } 129 | -------------------------------------------------------------------------------- /pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: quiz_app 2 | description: A new Flutter project. 3 | 4 | # The following defines the version and build number for your application. 5 | # A version number is three numbers separated by dots, like 1.2.43 6 | # followed by an optional build number separated by a +. 7 | # Both the version and the builder number may be overridden in flutter 8 | # build by specifying --build-name and --build-number, respectively. 9 | # In Android, build-name is used as versionName while build-number used as versionCode. 10 | # Read more about Android versioning at https://developer.android.com/studio/publish/versioning 11 | # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. 12 | # Read more about iOS versioning at 13 | # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html 14 | version: 1.0.0+1 15 | 16 | environment: 17 | sdk: ">=2.1.0 <3.0.0" 18 | 19 | dependencies: 20 | flutter: 21 | sdk: flutter 22 | 23 | audioplayers: ^0.13.1 24 | flare_flutter: ^1.5.5 25 | url_launcher: ^5.1.2 26 | shared_preferences: ^0.5.3+4 27 | flutter_svg: ^0.14.0 28 | intro_slider: ^2.2.8 29 | 30 | dev_dependencies: 31 | flutter_launcher_icons: "^0.7.2" 32 | flutter_test: 33 | sdk: flutter 34 | 35 | flutter_icons: 36 | android: "launcher_icon" 37 | ios: true 38 | image_path: "assets/icon/launcher_icon.png" 39 | 40 | 41 | # For information on the generic Dart part of this file, see the 42 | # following page: https://dart.dev/tools/pub/pubspec 43 | 44 | # The following section is specific to Flutter. 45 | flutter: 46 | 47 | # The following line ensures that the Material Icons font is 48 | # included with your application, so that you can use the icons in 49 | # the material Icons class. 50 | uses-material-design: true 51 | 52 | # To add assets to your application, add an assets section, like this: 53 | assets: 54 | - assets/animations/ 55 | - assets/audio/ 56 | - assets/images/ 57 | - assets/images/intros/ 58 | - assets/images/animals/ 59 | - assets/images/flags/ 60 | - assets/images/foods/ 61 | - assets/images/jobs/female/ 62 | - assets/images/jobs/male/ 63 | - assets/images/transportations/ 64 | - assets/images/weathers/ 65 | # - images/a_dot_burr.jpeg 66 | # - images/a_dot_ham.jpeg 67 | 68 | # An image asset can refer to one or more resolution-specific "variants", see 69 | # https://flutter.dev/assets-and-images/#resolution-aware. 70 | 71 | # For details regarding adding assets from package dependencies, see 72 | # https://flutter.dev/assets-and-images/#from-packages 73 | 74 | # To add custom fonts to your application, add a fonts section here, 75 | # in this "flutter" section. Each entry in this list should have a 76 | # "family" key with the font family name, and a "fonts" key with a 77 | # list giving the asset and other descriptors for the font. For 78 | # example: 79 | fonts: 80 | - family: Blad 81 | fonts: 82 | - asset: assets/fonts/Blad.ttf 83 | # - family: Schyler 84 | # fonts: 85 | # - asset: fonts/Schyler-Regular.ttf 86 | # - asset: fonts/Schyler-Italic.ttf 87 | # style: italic 88 | # - family: Trajan Pro 89 | # fonts: 90 | # - asset: fonts/TrajanPro.ttf 91 | # - asset: fonts/TrajanPro_Bold.ttf 92 | # weight: 700 93 | # 94 | # For details regarding fonts from package dependencies, 95 | # see https://flutter.dev/custom-fonts/#from-packages 96 | -------------------------------------------------------------------------------- /screenshots/card.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/screenshots/card.png -------------------------------------------------------------------------------- /screenshots/play_store_badge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/screenshots/play_store_badge.png -------------------------------------------------------------------------------- /screenshots/screenshot1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/screenshots/screenshot1.png -------------------------------------------------------------------------------- /screenshots/screenshot2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/screenshots/screenshot2.png -------------------------------------------------------------------------------- /screenshots/screenshot3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/screenshots/screenshot3.png -------------------------------------------------------------------------------- /screenshots/screenshot4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skenderl/Flutter-BabyStepsQuiz/d2fb0f34a829ac2fe2489397ce72eef8c38b2a16/screenshots/screenshot4.png -------------------------------------------------------------------------------- /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:quiz_app/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(QuizApp()); 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 | --------------------------------------------------------------------------------