├── .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 | 
4 | 
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 |
--------------------------------------------------------------------------------
/assets/images/animals/Cow.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/animals/Dog.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/animals/Duck.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/animals/Elephant.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/animals/Giraffe.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/animals/Lion.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/animals/Monkey.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/animals/Mouse.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/award.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
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 |
--------------------------------------------------------------------------------
/assets/images/gmail.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------