diff --git a/Challenge7/analysis_options.yaml b/Challenge7/analysis_options.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..a7acf24597bee228b0108300752757607c3a57ff
--- /dev/null
+++ b/Challenge7/analysis_options.yaml
@@ -0,0 +1,29 @@
+# This file configures the analyzer, which statically analyzes Dart code to
+# check for errors, warnings, and lints.
+#
+# The issues identified by the analyzer are surfaced in the UI of Dart-enabled
+# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
+# invoked from the command line by running `flutter analyze`.
+
+# The following line activates a set of recommended lints for Flutter apps,
+# packages, and plugins designed to encourage good coding practices.
+include: package:flutter_lints/flutter.yaml
+
+linter:
+  # The lint rules applied to this project can be customized in the
+  # section below to disable rules from the `package:flutter_lints/flutter.yaml`
+  # included above or to enable additional rules. A list of all available lints
+  # and their documentation is published at
+  # https://dart-lang.github.io/linter/lints/index.html.
+  #
+  # Instead of disabling a lint rule for the entire project in the
+  # section below, it can also be suppressed for a single line of code
+  # or a specific dart file by using the `// ignore: name_of_lint` and
+  # `// ignore_for_file: name_of_lint` syntax on the line or in the file
+  # producing the lint.
+  rules:
+    # avoid_print: false  # Uncomment to disable the `avoid_print` rule
+    # prefer_single_quotes: true  # Uncomment to enable the `prefer_single_quotes` rule
+
+# Additional information about this file can be found at
+# https://dart.dev/guides/language/analysis-options
diff --git a/Challenge7/android/app/build.gradle b/Challenge7/android/app/build.gradle
new file mode 100644
index 0000000000000000000000000000000000000000..c5a68cc27270427323756bba6c5044975e3ff115
--- /dev/null
+++ b/Challenge7/android/app/build.gradle
@@ -0,0 +1,71 @@
+def localProperties = new Properties()
+def localPropertiesFile = rootProject.file('local.properties')
+if (localPropertiesFile.exists()) {
+    localPropertiesFile.withReader('UTF-8') { reader ->
+        localProperties.load(reader)
+    }
+}
+
+def flutterRoot = localProperties.getProperty('flutter.sdk')
+if (flutterRoot == null) {
+    throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
+}
+
+def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
+if (flutterVersionCode == null) {
+    flutterVersionCode = '1'
+}
+
+def flutterVersionName = localProperties.getProperty('flutter.versionName')
+if (flutterVersionName == null) {
+    flutterVersionName = '1.0'
+}
+
+apply plugin: 'com.android.application'
+apply plugin: 'kotlin-android'
+apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
+
+android {
+    compileSdkVersion flutter.compileSdkVersion
+    ndkVersion flutter.ndkVersion
+
+    compileOptions {
+        sourceCompatibility JavaVersion.VERSION_1_8
+        targetCompatibility JavaVersion.VERSION_1_8
+    }
+
+    kotlinOptions {
+        jvmTarget = '1.8'
+    }
+
+    sourceSets {
+        main.java.srcDirs += 'src/main/kotlin'
+    }
+
+    defaultConfig {
+        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
+        applicationId "com.example.pomodoro_self_trial"
+        // You can update the following values to match your application needs.
+        // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration.
+        minSdkVersion flutter.minSdkVersion
+        targetSdkVersion flutter.targetSdkVersion
+        versionCode flutterVersionCode.toInteger()
+        versionName flutterVersionName
+    }
+
+    buildTypes {
+        release {
+            // TODO: Add your own signing config for the release build.
+            // Signing with the debug keys for now, so `flutter run --release` works.
+            signingConfig signingConfigs.debug
+        }
+    }
+}
+
+flutter {
+    source '../..'
+}
+
+dependencies {
+    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
+}
diff --git a/Challenge7/android/app/src/debug/AndroidManifest.xml b/Challenge7/android/app/src/debug/AndroidManifest.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c2994b079dd3671ec32fff72acd6415c6c5fe18a
--- /dev/null
+++ b/Challenge7/android/app/src/debug/AndroidManifest.xml
@@ -0,0 +1,8 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.example.pomodoro_self_trial">
+    <!-- The INTERNET permission is required for development. Specifically,
+         the Flutter tool needs it to communicate with the running application
+         to allow setting breakpoints, to provide hot reload, etc.
+    -->
+    <uses-permission android:name="android.permission.INTERNET"/>
+</manifest>
diff --git a/Challenge7/android/app/src/main/AndroidManifest.xml b/Challenge7/android/app/src/main/AndroidManifest.xml
new file mode 100644
index 0000000000000000000000000000000000000000..15de1f7279e5cba04ae7df672e17a7c5b2fb810b
--- /dev/null
+++ b/Challenge7/android/app/src/main/AndroidManifest.xml
@@ -0,0 +1,34 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.example.pomodoro_self_trial">
+   <application
+        android:label="pomodoro_self_trial"
+        android:name="${applicationName}"
+        android:icon="@mipmap/ic_launcher">
+        <activity
+            android:name=".MainActivity"
+            android:exported="true"
+            android:launchMode="singleTop"
+            android:theme="@style/LaunchTheme"
+            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
+            android:hardwareAccelerated="true"
+            android:windowSoftInputMode="adjustResize">
+            <!-- Specifies an Android theme to apply to this Activity as soon as
+                 the Android process has started. This theme is visible to the user
+                 while the Flutter UI initializes. After that, this theme continues
+                 to determine the Window background behind the Flutter UI. -->
+            <meta-data
+              android:name="io.flutter.embedding.android.NormalTheme"
+              android:resource="@style/NormalTheme"
+              />
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN"/>
+                <category android:name="android.intent.category.LAUNCHER"/>
+            </intent-filter>
+        </activity>
+        <!-- Don't delete the meta-data below.
+             This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
+        <meta-data
+            android:name="flutterEmbedding"
+            android:value="2" />
+    </application>
+</manifest>
diff --git a/Challenge7/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java b/Challenge7/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java
new file mode 100644
index 0000000000000000000000000000000000000000..1e1ab4f02e319739f82ddf60a73b3d50117d77f0
--- /dev/null
+++ b/Challenge7/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java
@@ -0,0 +1,24 @@
+package io.flutter.plugins;
+
+import androidx.annotation.Keep;
+import androidx.annotation.NonNull;
+import io.flutter.Log;
+
+import io.flutter.embedding.engine.FlutterEngine;
+
+/**
+ * Generated file. Do not edit.
+ * This file is generated by the Flutter tool based on the
+ * plugins that support the Android platform.
+ */
+@Keep
+public final class GeneratedPluginRegistrant {
+  private static final String TAG = "GeneratedPluginRegistrant";
+  public static void registerWith(@NonNull FlutterEngine flutterEngine) {
+    try {
+      flutterEngine.getPlugins().add(new io.flutter.plugins.pathprovider.PathProviderPlugin());
+    } catch(Exception e) {
+      Log.e(TAG, "Error registering plugin path_provider_android, io.flutter.plugins.pathprovider.PathProviderPlugin", e);
+    }
+  }
+}
diff --git a/Challenge7/android/app/src/main/kotlin/com/example/pomodoro_self_trial/MainActivity.kt b/Challenge7/android/app/src/main/kotlin/com/example/pomodoro_self_trial/MainActivity.kt
new file mode 100644
index 0000000000000000000000000000000000000000..e60257dd7883529ca36f4b3d657c831f611781bb
--- /dev/null
+++ b/Challenge7/android/app/src/main/kotlin/com/example/pomodoro_self_trial/MainActivity.kt
@@ -0,0 +1,6 @@
+package com.example.pomodoro_self_trial
+
+import io.flutter.embedding.android.FlutterActivity
+
+class MainActivity: FlutterActivity() {
+}
diff --git a/Challenge7/android/app/src/main/res/drawable-v21/launch_background.xml b/Challenge7/android/app/src/main/res/drawable-v21/launch_background.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1cb7aa2f6e8c2438e50149b6ec567b515c243c88
--- /dev/null
+++ b/Challenge7/android/app/src/main/res/drawable-v21/launch_background.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Modify this file to customize your launch splash screen -->
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="?android:colorBackground" />
+
+    <!-- You can insert your own image assets here -->
+    <!-- <item>
+        <bitmap
+            android:gravity="center"
+            android:src="@mipmap/launch_image" />
+    </item> -->
+</layer-list>
diff --git a/Challenge7/android/app/src/main/res/drawable/launch_background.xml b/Challenge7/android/app/src/main/res/drawable/launch_background.xml
new file mode 100644
index 0000000000000000000000000000000000000000..84037589b06bb17b24ba7acffee949159cd99a16
--- /dev/null
+++ b/Challenge7/android/app/src/main/res/drawable/launch_background.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Modify this file to customize your launch splash screen -->
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@android:color/white" />
+
+    <!-- You can insert your own image assets here -->
+    <!-- <item>
+        <bitmap
+            android:gravity="center"
+            android:src="@mipmap/launch_image" />
+    </item> -->
+</layer-list>
diff --git a/Challenge7/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/Challenge7/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..db77bb4b7b0906d62b1847e87f15cdcacf6a4f29
Binary files /dev/null and b/Challenge7/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/Challenge7/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/Challenge7/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..17987b79bb8a35cc66c3c1fd44f5a5526c1b78be
Binary files /dev/null and b/Challenge7/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/Challenge7/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/Challenge7/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..09d4391482be68e9e4a07fab769b5de337d16eb1
Binary files /dev/null and b/Challenge7/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/Challenge7/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/Challenge7/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..d5f1c8d34e7a88e3f88bea192c3a370d44689c3c
Binary files /dev/null and b/Challenge7/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/Challenge7/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/Challenge7/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..4d6372eebdb28e45604e46eeda8dd24651419bc0
Binary files /dev/null and b/Challenge7/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/Challenge7/android/app/src/main/res/values-night/styles.xml b/Challenge7/android/app/src/main/res/values-night/styles.xml
new file mode 100644
index 0000000000000000000000000000000000000000..360a1605cd6d544ad23ddd7515862ff2c9df6ab8
--- /dev/null
+++ b/Challenge7/android/app/src/main/res/values-night/styles.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on -->
+    <style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
+        <!-- Show a splash screen on the activity. Automatically removed when
+             the Flutter engine draws its first frame -->
+        <item name="android:windowBackground">@drawable/launch_background</item>
+    </style>
+    <!-- Theme applied to the Android Window as soon as the process has started.
+         This theme determines the color of the Android Window while your
+         Flutter UI initializes, as well as behind your Flutter UI while its
+         running.
+
+         This Theme is only used starting with V2 of Flutter's Android embedding. -->
+    <style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
+        <item name="android:windowBackground">?android:colorBackground</item>
+    </style>
+</resources>
diff --git a/Challenge7/android/app/src/main/res/values/styles.xml b/Challenge7/android/app/src/main/res/values/styles.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5fac679616bbc0255412f37eea3eae0a3716e7d7
--- /dev/null
+++ b/Challenge7/android/app/src/main/res/values/styles.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
+    <style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
+        <!-- Show a splash screen on the activity. Automatically removed when
+             the Flutter engine draws its first frame -->
+        <item name="android:windowBackground">@drawable/launch_background</item>
+    </style>
+    <!-- Theme applied to the Android Window as soon as the process has started.
+         This theme determines the color of the Android Window while your
+         Flutter UI initializes, as well as behind your Flutter UI while its
+         running.
+
+         This Theme is only used starting with V2 of Flutter's Android embedding. -->
+    <style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar">
+        <item name="android:windowBackground">?android:colorBackground</item>
+    </style>
+</resources>
diff --git a/Challenge7/android/app/src/profile/AndroidManifest.xml b/Challenge7/android/app/src/profile/AndroidManifest.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c2994b079dd3671ec32fff72acd6415c6c5fe18a
--- /dev/null
+++ b/Challenge7/android/app/src/profile/AndroidManifest.xml
@@ -0,0 +1,8 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.example.pomodoro_self_trial">
+    <!-- The INTERNET permission is required for development. Specifically,
+         the Flutter tool needs it to communicate with the running application
+         to allow setting breakpoints, to provide hot reload, etc.
+    -->
+    <uses-permission android:name="android.permission.INTERNET"/>
+</manifest>
diff --git a/Challenge7/android/build.gradle b/Challenge7/android/build.gradle
new file mode 100644
index 0000000000000000000000000000000000000000..104a4864b851da9cd6c8c4ca9d063238f5736b1c
--- /dev/null
+++ b/Challenge7/android/build.gradle
@@ -0,0 +1,31 @@
+buildscript {
+    ext.kotlin_version = '1.6.10'
+    repositories {
+        google()
+        mavenCentral()
+    }
+
+    dependencies {
+        classpath 'com.android.tools.build:gradle:7.1.2'
+        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
+    }
+}
+
+allprojects {
+    repositories {
+        google()
+        mavenCentral()
+    }
+}
+
+rootProject.buildDir = '../build'
+subprojects {
+    project.buildDir = "${rootProject.buildDir}/${project.name}"
+}
+subprojects {
+    project.evaluationDependsOn(':app')
+}
+
+task clean(type: Delete) {
+    delete rootProject.buildDir
+}
diff --git a/Challenge7/android/gradle.properties b/Challenge7/android/gradle.properties
new file mode 100644
index 0000000000000000000000000000000000000000..46c1f169affc8780e4d36b676bb291931b7782e7
--- /dev/null
+++ b/Challenge7/android/gradle.properties
@@ -0,0 +1,3 @@
+org.gradle.jvmargs=-Xmx1536M
+android.useAndroidX=true
+android.enableJetifier=true
diff --git a/Challenge7/android/gradle/wrapper/gradle-wrapper.jar b/Challenge7/android/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000000000000000000000000000000000000..13372aef5e24af05341d49695ee84e5f9b594659
Binary files /dev/null and b/Challenge7/android/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/Challenge7/android/gradle/wrapper/gradle-wrapper.properties b/Challenge7/android/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000000000000000000000000000000000000..2108ceb9bf8fa991f55f6a1fccd6615611bd363e
--- /dev/null
+++ b/Challenge7/android/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,5 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip
diff --git a/Challenge7/android/gradlew b/Challenge7/android/gradlew
new file mode 100644
index 0000000000000000000000000000000000000000..9d82f78915133e1c35a6ea51252590fb38efac2f
--- /dev/null
+++ b/Challenge7/android/gradlew
@@ -0,0 +1,160 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+##  Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+    echo "$*"
+}
+
+die ( ) {
+    echo
+    echo "$*"
+    echo
+    exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+case "`uname`" in
+  CYGWIN* )
+    cygwin=true
+    ;;
+  Darwin* )
+    darwin=true
+    ;;
+  MINGW* )
+    msys=true
+    ;;
+esac
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+        PRG="$link"
+    else
+        PRG=`dirname "$PRG"`"/$link"
+    fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+        # IBM's JDK on AIX uses strange locations for the executables
+        JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+        JAVACMD="$JAVA_HOME/bin/java"
+    fi
+    if [ ! -x "$JAVACMD" ] ; then
+        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+    fi
+else
+    JAVACMD="java"
+    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ $? -eq 0 ] ; then
+        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+            MAX_FD="$MAX_FD_LIMIT"
+        fi
+        ulimit -n $MAX_FD
+        if [ $? -ne 0 ] ; then
+            warn "Could not set maximum file descriptor limit: $MAX_FD"
+        fi
+    else
+        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+    fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+    JAVACMD=`cygpath --unix "$JAVACMD"`
+
+    # We build the pattern for arguments to be converted via cygpath
+    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+    SEP=""
+    for dir in $ROOTDIRSRAW ; do
+        ROOTDIRS="$ROOTDIRS$SEP$dir"
+        SEP="|"
+    done
+    OURCYGPATTERN="(^($ROOTDIRS))"
+    # Add a user-defined pattern to the cygpath arguments
+    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+    fi
+    # Now convert the arguments - kludge to limit ourselves to /bin/sh
+    i=0
+    for arg in "$@" ; do
+        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
+
+        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
+            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+        else
+            eval `echo args$i`="\"$arg\""
+        fi
+        i=$((i+1))
+    done
+    case $i in
+        (0) set -- ;;
+        (1) set -- "$args0" ;;
+        (2) set -- "$args0" "$args1" ;;
+        (3) set -- "$args0" "$args1" "$args2" ;;
+        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+    esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+    JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/Challenge7/android/gradlew.bat b/Challenge7/android/gradlew.bat
new file mode 100644
index 0000000000000000000000000000000000000000..aec99730b4e8fcd90b57a0e8e01544fea7c31a89
--- /dev/null
+++ b/Challenge7/android/gradlew.bat
@@ -0,0 +1,90 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem  Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windowz variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+if "%@eval[2+2]" == "4" goto 4NT_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+goto execute
+
+:4NT_args
+@rem Get arguments from the 4NT Shell from JP Software
+set CMD_LINE_ARGS=%$
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/Challenge7/android/local.properties b/Challenge7/android/local.properties
new file mode 100644
index 0000000000000000000000000000000000000000..791ae74e0749fb6aac94cf6852f94f743796e915
--- /dev/null
+++ b/Challenge7/android/local.properties
@@ -0,0 +1,5 @@
+sdk.dir=C:\\Users\\Dhruv Khanna\\AppData\\Local\\Android\\sdk
+flutter.sdk=C:\\Users\\Dhruv Khanna\\Documents\\Coding stuff\\Flutter and Dart\\flutter
+flutter.buildMode=release
+flutter.versionName=1.0.0
+flutter.versionCode=1
\ No newline at end of file
diff --git a/Challenge7/android/pomodoro_self_trial_android.iml b/Challenge7/android/pomodoro_self_trial_android.iml
new file mode 100644
index 0000000000000000000000000000000000000000..5e74ee6a3cd8575cb57a2f45552a388c0021daf6
--- /dev/null
+++ b/Challenge7/android/pomodoro_self_trial_android.iml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="JAVA_MODULE" version="4">
+  <component name="FacetManager">
+    <facet type="android" name="Android">
+      <configuration>
+        <option name="ALLOW_USER_CONFIGURATION" value="false" />
+        <option name="GEN_FOLDER_RELATIVE_PATH_APT" value="/gen" />
+        <option name="GEN_FOLDER_RELATIVE_PATH_AIDL" value="/gen" />
+        <option name="MANIFEST_FILE_RELATIVE_PATH" value="/app/src/main/AndroidManifest.xml" />
+        <option name="RES_FOLDER_RELATIVE_PATH" value="/app/src/main/res" />
+        <option name="ASSETS_FOLDER_RELATIVE_PATH" value="/app/src/main/assets" />
+        <option name="LIBS_FOLDER_RELATIVE_PATH" value="/app/src/main/libs" />
+        <option name="PROGUARD_LOGS_FOLDER_RELATIVE_PATH" value="/app/src/main/proguard_logs" />
+      </configuration>
+    </facet>
+  </component>
+  <component name="NewModuleRootManager" inherit-compiler-output="true">
+    <exclude-output />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/app/src/main/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/app/src/main/kotlin" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/gen" isTestSource="false" generated="true" />
+    </content>
+    <orderEntry type="jdk" jdkName="Android API 29 Platform" jdkType="Android SDK" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" name="Flutter for Android" level="project" />
+    <orderEntry type="library" name="KotlinJavaRuntime" level="project" />
+  </component>
+</module>
diff --git a/Challenge7/android/settings.gradle b/Challenge7/android/settings.gradle
new file mode 100644
index 0000000000000000000000000000000000000000..33f0745d1f811414fe3de85f22f2145c94a2cf2b
--- /dev/null
+++ b/Challenge7/android/settings.gradle
@@ -0,0 +1,11 @@
+include ':app'
+
+def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
+def properties = new Properties()
+
+assert localPropertiesFile.exists()
+localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
+
+def flutterSdkPath = properties.getProperty("flutter.sdk")
+assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
+apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"
diff --git a/Challenge7/lib/fonts/Google Sans/GoogleSans-Bold.ttf b/Challenge7/lib/fonts/Google Sans/GoogleSans-Bold.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..80497666ec8ca0abb81ce5bd9ce649896555753e
Binary files /dev/null and b/Challenge7/lib/fonts/Google Sans/GoogleSans-Bold.ttf differ
diff --git a/Challenge7/lib/fonts/Google Sans/GoogleSans-BoldItalic.ttf b/Challenge7/lib/fonts/Google Sans/GoogleSans-BoldItalic.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..e940d022ecbcfe05b53085f48a871ce39509fa30
Binary files /dev/null and b/Challenge7/lib/fonts/Google Sans/GoogleSans-BoldItalic.ttf differ
diff --git a/Challenge7/lib/fonts/Google Sans/GoogleSans-Italic.ttf b/Challenge7/lib/fonts/Google Sans/GoogleSans-Italic.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..bfb1a2cd2c63a5dd176fe273c06a19184ce556fb
Binary files /dev/null and b/Challenge7/lib/fonts/Google Sans/GoogleSans-Italic.ttf differ
diff --git a/Challenge7/lib/fonts/Google Sans/GoogleSans-Medium.otf b/Challenge7/lib/fonts/Google Sans/GoogleSans-Medium.otf
new file mode 100644
index 0000000000000000000000000000000000000000..815f072cf73ea60861ab2bc0f87423d9b74f5082
Binary files /dev/null and b/Challenge7/lib/fonts/Google Sans/GoogleSans-Medium.otf differ
diff --git a/Challenge7/lib/fonts/Google Sans/GoogleSans-MediumItalic.otf b/Challenge7/lib/fonts/Google Sans/GoogleSans-MediumItalic.otf
new file mode 100644
index 0000000000000000000000000000000000000000..b54143e067215a6edaf55c63e21326150ed3e5d9
Binary files /dev/null and b/Challenge7/lib/fonts/Google Sans/GoogleSans-MediumItalic.otf differ
diff --git a/Challenge7/lib/fonts/Google Sans/GoogleSans-Regular.ttf b/Challenge7/lib/fonts/Google Sans/GoogleSans-Regular.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..ab605f9e2e3c347708a810435ba3a7debc52e1df
Binary files /dev/null and b/Challenge7/lib/fonts/Google Sans/GoogleSans-Regular.ttf differ
diff --git a/Challenge7/lib/fonts/SF Pro/SF Pro Font License.rtf b/Challenge7/lib/fonts/SF Pro/SF Pro Font License.rtf
new file mode 100644
index 0000000000000000000000000000000000000000..2372f8a62c5747b6a554cdb67233b3cfbcf6352c
--- /dev/null
+++ b/Challenge7/lib/fonts/SF Pro/SF Pro Font License.rtf	
@@ -0,0 +1,94 @@
+{\rtf1\ansi\ansicpg1252\cocoartf1504\cocoasubrtf830
+{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;}
+{\colortbl;\red255\green255\blue255;}
+{\*\expandedcolortbl;;}
+\margl1440\margr1440\vieww11440\viewh10620\viewkind0
+\deftab720
+\pard\pardeftab720\partightenfactor0
+
+\f0\b\fs20 \cf0 APPLE INC.
+\b0 \
+
+\b LICENSE AGREEMENT FOR THE APPLE SAN FRANCISCO FONT\
+For iOS, OS X and tvOS application uses only\
+
+\b0 \
+
+\b PLEASE READ THIS SOFTWARE LICENSE AGREEMENT ("LICENSE") CAREFULLY BEFORE USING THE APPLE SAN FRANCISCO FONT (DEFINED BELOW). BY USING THE APPLE FONT, YOU ARE AGREEING TO BE BOUND BY THE TERMS OF THIS LICENSE. IF YOU ARE ACCESSING THE APPLE FONT ELECTRONICALLY, SIGNIFY YOUR AGREEMENT TO BE BOUND BY THE TERMS OF THIS LICENSE BY CLICKING THE "AGREE " BUTTON. IF YOU DO NOT AGREE TO THE TERMS OF THIS LICENSE, DO NOT USE THE APPLE FONT AND CLICK \'93DISAGREE\'94.
+\b0 \
+\
+
+\b IMPORTANT NOTE:  THE APPLE SAN FRANCISCO FONT IS TO BE USED SOLELY FOR CREATING MOCK-UPS OF USER INTERFACES TO BE\'a0USED IN SOFTWARE PRODUCTS
+\b0  
+\b RUNNING ON APPLE\'92S iOS, OS X OR tvOS OPERATING SYSTEMS, AS APPLICABLE.
+\b0 \
+\
+
+\b 1. General.
+\b0 \
+A. The Apple font, interfaces, content, data, and other materials accompanying this License, whether on disk, print or electronic documentation, in read only memory, or any other media or in any other form, (collectively, the "
+\b Apple Font
+\b0 ") are licensed, not sold, to you by Apple Inc. ("
+\b Apple
+\b0 ") for use only under the terms of this License. Apple and/or Apple\'92s licensors retain ownership of the Apple Font itself and reserve all rights not expressly granted to you. The terms of this License will govern any software upgrades provided by Apple that replace and/or supplement the original Apple Font, unless such upgrade is accompanied by a separate license in which case the terms of that license will govern.\
+\
+B. Title and intellectual property rights in and to any content displayed by or accessed through the Apple Font belongs to the respective content owner. Such content may be protected by copyright or other intellectual property laws and treaties, and may be subject to terms of use of the third party providing such content. This License does not grant you any rights to use such content nor does it guarantee that such content will continue to be available to you.\
+\
+
+\b 2. Permitted License Uses and Restrictions.
+\b0 \
+A. \ul \ulc0 Limited License\ulnone . Subject to the terms of this License, you may use the Apple Font solely for creating mock-ups of user interfaces to be used in software products running\'a0on Apple\'92s iOS, OS X or tvOS operating systems, as applicable. The foregoing right includes the right to show the Apple Font in screen shots, images, mock-ups or other depictions, digital and/or print, of such software products running solely on iOS, OS X or tvOS.\
+\
+You may use this Apple Font only for the purposes described in this License and only if you are a registered Apple Developer, or as otherwise expressly permitted by Apple in writing.\
+\
+B. \ul Other Use Restrictions\ulnone . The grants set forth in this License do not permit you to, and you agree not to, install, use or run the Apple Font for the purpose of creating mock-ups of user interfaces to be used in software products running on any non-Apple operating system or to enable others to do so. You may not embed the Apple Font in any software programs or other products.  Except as expressly provided for herein, you may not use the Apple Font to, create, develop, display or otherwise distribute any documentation, artwork, website content or any other work product. \
+\
+Except as otherwise expressly permitted by the terms of this License or as otherwise licensed by Apple: (i) only one user may use the Apple Font at a time, and (ii) you may not make the Apple Font available over a network where it could be run or used by multiple computers at the same time. You may not rent, lease, lend, trade, transfer, sell, sublicense or otherwise redistribute the Apple Font in any unauthorized way.\
+\
+C. \ul No Reverse Engineering; Limitations\ulnone . You may not, and you agree not to or to enable others to, copy (except as expressly permitted by this License), decompile, reverse engineer, disassemble, attempt to derive the source code of, decrypt, modify, create derivative works of the Apple Font or any part thereof (except as and only to the extent any foregoing restriction is prohibited by applicable law).\
+\
+D. \ul Compliance with Laws\ulnone . You agree to use the Apple Font in compliance with all applicable laws, including local laws of the country or region in which you reside or in which you download or use the Apple Font.\
+\
+
+\b 3. No Transfer.
+\b0  Except as otherwise set forth herein, you may not transfer this Apple Font without Apple\'92s express prior written approval. All components of the Apple Font are provided as part of a bundle and may not be separated from the bundle and distributed as standalone applications.\
+\
+
+\b 4. Termination.
+\b0  This License shall commence upon your installation or use of the Apple Font. Your rights under this License will terminate automatically or cease to be effective without notice from Apple (a) if you fail to comply with any term(s) of this License, (b) if you are no longer a registered Apple Developer, or (c) if Apple releases a version of the Apple Font which is incompatible with this version of the Apple Font. Upon the termination of this License, you shall cease all use of the Apple Font and destroy all copies, full or partial, of the Apple Font. Section 2B, 2C, and 5 through 10 of this License shall survive any termination.\
+\
+
+\b 5. Disclaimer of Warranties.
+\b0 \
+A. YOU EXPRESSLY ACKNOWLEDGE AND AGREE THAT, TO THE EXTENT PERMITTED BY APPLICABLE LAW, USE OF THE APPLE FONT IS AT YOUR SOLE RISK AND THAT THE ENTIRE RISK AS TO SATISFACTORY QUALITY, PERFORMANCE, ACCURACY AND EFFORT IS WITH YOU.\
+\
+B. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THE APPLE FONT IS PROVIDED \'93AS IS\'94 AND \'93AS AVAILABLE\'94, WITH ALL FAULTS AND WITHOUT WARRANTY OF ANY KIND, AND APPLE AND APPLE'S LICENSORS (COLLECTIVELY REFERRED TO AS \'93APPLE\'94 FOR THE PURPOSES OF SECTIONS 5 AND 6) HEREBY DISCLAIM ALL WARRANTIES AND CONDITIONS WITH RESPECT TO THE APPLE FONT, EITHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES AND/OR CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, ACCURACY, QUIET ENJOYMENT, AND NON-INFRINGEMENT OF THIRD PARTY RIGHTS.\
+\
+C. APPLE DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE APPLE FONT, THAT THE FUNCTIONS CONTAINED IN THE APPLE FONT WILL MEET YOUR REQUIREMENTS, THAT THE OPERATION OF THE APPLE FONT WILL BE UNINTERRUPTED OR ERROR-FREE, THAT THE APPLE FONT WILL BE COMPATIBLE OR WORK WITH ANY THIRD PARTY SOFTWARE, APPLICATIONS OR THIRD PARTY SERVICES, OR THAT DEFECTS IN THE APPLE FONT WILL BE CORRECTED. INSTALLATION OF THIS APPLE FONT MAY AFFECT THE AVAILABILITY AND USABILITY OF THIRD PARTY SOFTWARE, APPLICATIONS OR THIRD PARTY SERVICES, AS WELL AS APPLE PRODUCTS AND SERVICES.\
+\
+D. YOU FURTHER ACKNOWLEDGE THAT THE APPLE FONT IS NOT INTENDED OR SUITABLE FOR USE IN SITUATIONS OR ENVIRONMENTS WHERE THE FAILURE OR TIME DELAYS OF, OR ERRORS OR INACCURACIES IN THE CONTENT, DATA OR INFORMATION PROVIDED BY, THE APPLE FONT COULD LEAD TO DEATH, PERSONAL INJURY, OR SEVERE PHYSICAL OR ENVIRONMENTAL DAMAGE, INCLUDING WITHOUT LIMITATION THE OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, AIR TRAFFIC CONTROL, LIFE SUPPORT OR WEAPONS SYSTEMS.\
+\
+E. NO ORAL OR WRITTEN INFORMATION OR ADVICE GIVEN BY APPLE OR AN APPLE AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SHOULD THE APPLE FONT PROVE DEFECTIVE, YOU ASSUME THE ENTIRE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\
+\
+
+\b 6. Limitation of Liability.
+\b0  TO THE EXTENT NOT PROHIBITED BY APPLICABLE LAW, IN NO EVENT SHALL APPLE BE LIABLE FOR PERSONAL INJURY, OR ANY INCIDENTAL, SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES WHATSOEVER, INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF PROFITS, CORRUPTION OR LOSS OF DATA, FAILURE TO TRANSMIT OR RECEIVE ANY DATA OR INFORMATION, BUSINESS INTERRUPTION OR ANY OTHER COMMERCIAL DAMAGES OR LOSSES, ARISING OUT OF OR RELATED TO YOUR USE OR INABILITY TO USE THE APPLE FONT OR ANY THIRD PARTY SOFTWARE, APPLICATIONS, OR SERVICES IN CONJUNCTION WITH THE APPLE FONT, HOWEVER CAUSED, REGARDLESS OF THE THEORY OF LIABILITY (CONTRACT, TORT OR OTHERWISE) AND EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR PERSONAL INJURY, OR OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS LIMITATION MAY NOT APPLY TO YOU. In no event shall Apple's total liability to you for all damages (other than as may be required by applicable law in cases involving personal injury) exceed the amount of fifty dollars ($50.00). The foregoing limitations will apply even if the above stated remedy fails of its essential purpose.\
+\
+
+\b 7. Export Control.
+\b0  You may not use or otherwise export or re-export the Apple Font except as authorized by United States law and the laws of the jurisdiction(s) in which the Apple Font was obtained. In particular, but without limitation, the Apple Font may not be exported or re-exported (a) into any U.S. embargoed countries or (b) to anyone on the U.S. Treasury Department's list of Specially Designated Nationals or the U.S. Department of Commerce Denied Person's List or Entity List or any other restricted party lists. By using the Apple Font, you represent and warrant that you are not located in any such country or on any such list. You also agree that you will not use the Apple Font for any purposes prohibited by United States law, including, without limitation, the development, design, manufacture or production of missiles, nuclear, chemical or biological weapons. \
+\
+
+\b 8. Government End Users.
+\b0  The Apple Font and related documentation are "Commercial Items", as that term is defined at 48 C.F.R. \'a72.101, consisting of "Commercial Computer Software" and "Commercial Computer Software Documentation", as such terms are used in 48 C.F.R. \'a712.212 or 48 C.F.R. \'a7227.7202, as applicable. Consistent with 48 C.F.R. \'a712.212 or 48 C.F.R. \'a7227.7202-1 through 227.7202-4, as applicable, the Commercial Computer Software and Commercial Computer Software Documentation are being licensed to U.S. Government end users (a) only as Commercial Items and (b) with only those rights as are granted to all other end users pursuant to the terms and conditions herein. Unpublished-rights reserved under the copyright laws of the United States.\
+\
+
+\b 9. Controlling Law and Severability.
+\b0  This License will be governed by and construed in accordance with the laws of the State of California, excluding its conflict of law principles. This License shall not be governed by the United Nations Convention on Contracts for the International Sale of Goods, the application of which is expressly excluded. If for any reason a court of competent jurisdiction finds any provision, or portion thereof, to be unenforceable, the remainder of this License shall continue in full force and effect.\
+\
+
+\b 10. Complete Agreement; Governing Language.
+\b0  This License constitutes the entire agreement between you and Apple relating to the use of the Apple Font licensed hereunder and supersedes all prior or contemporaneous understandings regarding such subject matter. No amendment to or modification of this License will be binding unless in writing and signed by Apple. To the extent that there are any inconsistent terms in any applicable Apple software license agreements, these terms shall govern your use of the Apple Font.\
+\
+EA1370\
+2/24/2016}
\ No newline at end of file
diff --git a/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-Black.otf b/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-Black.otf
new file mode 100644
index 0000000000000000000000000000000000000000..e621e1b5a63716333ec0fc7f52890a22c1ac1217
Binary files /dev/null and b/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-Black.otf differ
diff --git a/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-BlackItalic.otf b/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-BlackItalic.otf
new file mode 100644
index 0000000000000000000000000000000000000000..b8626130fb9382ca1dc5735da754632175a37cbc
Binary files /dev/null and b/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-BlackItalic.otf differ
diff --git a/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-Bold.otf b/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-Bold.otf
new file mode 100644
index 0000000000000000000000000000000000000000..025b25c27aae647e146418e2f8bc12260015382f
Binary files /dev/null and b/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-Bold.otf differ
diff --git a/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-BoldItalic.otf b/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-BoldItalic.otf
new file mode 100644
index 0000000000000000000000000000000000000000..77ee0c2096ca5d8b2933431920f09fae1879374d
Binary files /dev/null and b/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-BoldItalic.otf differ
diff --git a/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-Heavy.otf b/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-Heavy.otf
new file mode 100644
index 0000000000000000000000000000000000000000..82851649b55b4885e4631234605abad027288c10
Binary files /dev/null and b/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-Heavy.otf differ
diff --git a/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-HeavyItalic.otf b/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-HeavyItalic.otf
new file mode 100644
index 0000000000000000000000000000000000000000..c44f86577f0ae196434372e556eb64ac0628bbc5
Binary files /dev/null and b/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-HeavyItalic.otf differ
diff --git a/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-Light.otf b/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-Light.otf
new file mode 100644
index 0000000000000000000000000000000000000000..b25e3dc8d16f370800df13e76cf0ba92bf37a4d0
Binary files /dev/null and b/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-Light.otf differ
diff --git a/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-LightItalic.otf b/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-LightItalic.otf
new file mode 100644
index 0000000000000000000000000000000000000000..74b5e8b76ac147309f9923d4e5ed673b059d1c3e
Binary files /dev/null and b/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-LightItalic.otf differ
diff --git a/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-Medium.otf b/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-Medium.otf
new file mode 100644
index 0000000000000000000000000000000000000000..b2f7daca100957c47773fb6655226f57162811c7
Binary files /dev/null and b/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-Medium.otf differ
diff --git a/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-MediumItalic.otf b/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-MediumItalic.otf
new file mode 100644
index 0000000000000000000000000000000000000000..918709e19748ad6c75c416cb9454c0e5b6132b72
Binary files /dev/null and b/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-MediumItalic.otf differ
diff --git a/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-Regular.otf b/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-Regular.otf
new file mode 100644
index 0000000000000000000000000000000000000000..09aaca9fcc08ccfd0666b128a23a3ba6066757a5
Binary files /dev/null and b/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-Regular.otf differ
diff --git a/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-RegularItalic.otf b/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-RegularItalic.otf
new file mode 100644
index 0000000000000000000000000000000000000000..99e34f09b3b00fe43bb0c761a316b75cd2092a2b
Binary files /dev/null and b/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-RegularItalic.otf differ
diff --git a/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-Semibold.otf b/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-Semibold.otf
new file mode 100644
index 0000000000000000000000000000000000000000..b1e38ade257ad2e6824d7e5abcdf0f34c1bf7d2f
Binary files /dev/null and b/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-Semibold.otf differ
diff --git a/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-SemiboldItalic.otf b/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-SemiboldItalic.otf
new file mode 100644
index 0000000000000000000000000000000000000000..7b65b53971dc74880b05e8e07a0ecef334e61396
Binary files /dev/null and b/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-SemiboldItalic.otf differ
diff --git a/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-Thin.otf b/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-Thin.otf
new file mode 100644
index 0000000000000000000000000000000000000000..e4ddd7f92ecbc54691c732b42b6327a6e8e02dba
Binary files /dev/null and b/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-Thin.otf differ
diff --git a/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-ThinItalic.otf b/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-ThinItalic.otf
new file mode 100644
index 0000000000000000000000000000000000000000..0fb2d447e6479a777003cc2d704e99721f513f06
Binary files /dev/null and b/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-ThinItalic.otf differ
diff --git a/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-Ultralight.otf b/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-Ultralight.otf
new file mode 100644
index 0000000000000000000000000000000000000000..528c9fdc7510d389840e4da6bb1442ec54a2cd9a
Binary files /dev/null and b/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-Ultralight.otf differ
diff --git a/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-UltralightItalic.otf b/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-UltralightItalic.otf
new file mode 100644
index 0000000000000000000000000000000000000000..37d146cc5a714a73e50219d4b4dc443ae807a9d8
Binary files /dev/null and b/Challenge7/lib/fonts/SF Pro/SF-Pro-Display-UltralightItalic.otf differ
diff --git a/Challenge7/lib/fonts/SF Pro/SF-Pro-Text-Bold.otf b/Challenge7/lib/fonts/SF Pro/SF-Pro-Text-Bold.otf
new file mode 100644
index 0000000000000000000000000000000000000000..840d8109fb4dd1768f86521500212ff6a179be24
Binary files /dev/null and b/Challenge7/lib/fonts/SF Pro/SF-Pro-Text-Bold.otf differ
diff --git a/Challenge7/lib/fonts/SF Pro/SF-Pro-Text-BoldItalic.otf b/Challenge7/lib/fonts/SF Pro/SF-Pro-Text-BoldItalic.otf
new file mode 100644
index 0000000000000000000000000000000000000000..3cddfc4bb8562ac5e3aca92f8e97ec39b5537025
Binary files /dev/null and b/Challenge7/lib/fonts/SF Pro/SF-Pro-Text-BoldItalic.otf differ
diff --git a/Challenge7/lib/fonts/SF Pro/SF-Pro-Text-Heavy.otf b/Challenge7/lib/fonts/SF Pro/SF-Pro-Text-Heavy.otf
new file mode 100644
index 0000000000000000000000000000000000000000..7d3b413970bc7a89d827b9bab5d4b7566ae8d615
Binary files /dev/null and b/Challenge7/lib/fonts/SF Pro/SF-Pro-Text-Heavy.otf differ
diff --git a/Challenge7/lib/fonts/SF Pro/SF-Pro-Text-HeavyItalic.otf b/Challenge7/lib/fonts/SF Pro/SF-Pro-Text-HeavyItalic.otf
new file mode 100644
index 0000000000000000000000000000000000000000..a03d0033b1716a289823988d214961f88922eb8b
Binary files /dev/null and b/Challenge7/lib/fonts/SF Pro/SF-Pro-Text-HeavyItalic.otf differ
diff --git a/Challenge7/lib/fonts/SF Pro/SF-Pro-Text-Light.otf b/Challenge7/lib/fonts/SF Pro/SF-Pro-Text-Light.otf
new file mode 100644
index 0000000000000000000000000000000000000000..1e1696825b77c571988b6096d08f5db1a2c8b0e2
Binary files /dev/null and b/Challenge7/lib/fonts/SF Pro/SF-Pro-Text-Light.otf differ
diff --git a/Challenge7/lib/fonts/SF Pro/SF-Pro-Text-LightItalic.otf b/Challenge7/lib/fonts/SF Pro/SF-Pro-Text-LightItalic.otf
new file mode 100644
index 0000000000000000000000000000000000000000..5bee181510fde059fc5f7d7c28bb3a7a716ee8ec
Binary files /dev/null and b/Challenge7/lib/fonts/SF Pro/SF-Pro-Text-LightItalic.otf differ
diff --git a/Challenge7/lib/fonts/SF Pro/SF-Pro-Text-Medium.otf b/Challenge7/lib/fonts/SF Pro/SF-Pro-Text-Medium.otf
new file mode 100644
index 0000000000000000000000000000000000000000..4982cb588701e1dd073debcabf31ad703b09d26c
Binary files /dev/null and b/Challenge7/lib/fonts/SF Pro/SF-Pro-Text-Medium.otf differ
diff --git a/Challenge7/lib/fonts/SF Pro/SF-Pro-Text-MediumItalic.otf b/Challenge7/lib/fonts/SF Pro/SF-Pro-Text-MediumItalic.otf
new file mode 100644
index 0000000000000000000000000000000000000000..c876a0e7b96ed2041a4554132cf950876463d515
Binary files /dev/null and b/Challenge7/lib/fonts/SF Pro/SF-Pro-Text-MediumItalic.otf differ
diff --git a/Challenge7/lib/fonts/SF Pro/SF-Pro-Text-Regular.otf b/Challenge7/lib/fonts/SF Pro/SF-Pro-Text-Regular.otf
new file mode 100644
index 0000000000000000000000000000000000000000..65f9ea5eaee37921461fcc29f7dd84c8250f8763
Binary files /dev/null and b/Challenge7/lib/fonts/SF Pro/SF-Pro-Text-Regular.otf differ
diff --git a/Challenge7/lib/fonts/SF Pro/SF-Pro-Text-RegularItalic.otf b/Challenge7/lib/fonts/SF Pro/SF-Pro-Text-RegularItalic.otf
new file mode 100644
index 0000000000000000000000000000000000000000..af984d54607326052be463d7c4f8c331ebf71398
Binary files /dev/null and b/Challenge7/lib/fonts/SF Pro/SF-Pro-Text-RegularItalic.otf differ
diff --git a/Challenge7/lib/fonts/SF Pro/SF-Pro-Text-Semibold.otf b/Challenge7/lib/fonts/SF Pro/SF-Pro-Text-Semibold.otf
new file mode 100644
index 0000000000000000000000000000000000000000..a20e7a0a7dce0eedeceeb6499bd2e37998b2ed54
Binary files /dev/null and b/Challenge7/lib/fonts/SF Pro/SF-Pro-Text-Semibold.otf differ
diff --git a/Challenge7/lib/fonts/SF Pro/SF-Pro-Text-SemiboldItalic.otf b/Challenge7/lib/fonts/SF Pro/SF-Pro-Text-SemiboldItalic.otf
new file mode 100644
index 0000000000000000000000000000000000000000..08ee24db11ad29f401dd0952ac356a5a31049926
Binary files /dev/null and b/Challenge7/lib/fonts/SF Pro/SF-Pro-Text-SemiboldItalic.otf differ
diff --git a/Challenge7/lib/fonts/SF Pro/San Francisco Pro.pkg b/Challenge7/lib/fonts/SF Pro/San Francisco Pro.pkg
new file mode 100644
index 0000000000000000000000000000000000000000..9cbfa80664b7325cef8604bee29e0ed61e64a78c
Binary files /dev/null and b/Challenge7/lib/fonts/SF Pro/San Francisco Pro.pkg differ
diff --git a/Challenge7/lib/icons/edit_icon.png b/Challenge7/lib/icons/edit_icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..442a3487ef5dbb50a43fa45ba3e1e68b9531a750
Binary files /dev/null and b/Challenge7/lib/icons/edit_icon.png differ
diff --git a/Challenge7/lib/icons/pause_icon.png b/Challenge7/lib/icons/pause_icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..dea099de2b3f5f87d2d9a3bb5a514fa934c9cbf3
Binary files /dev/null and b/Challenge7/lib/icons/pause_icon.png differ
diff --git a/Challenge7/lib/icons/play_icon.png b/Challenge7/lib/icons/play_icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..37e99e789372b73b0c4172e2c0910cedefe8e126
Binary files /dev/null and b/Challenge7/lib/icons/play_icon.png differ
diff --git a/Challenge7/lib/icons/reset_icon.png b/Challenge7/lib/icons/reset_icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..f073dda817b56d5c14ccae569a2817985e638763
Binary files /dev/null and b/Challenge7/lib/icons/reset_icon.png differ
diff --git a/Challenge7/lib/icons/tomato_icon.png b/Challenge7/lib/icons/tomato_icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..b4906a05e15f301bfd5cb570254dfcc0a8db8938
Binary files /dev/null and b/Challenge7/lib/icons/tomato_icon.png differ
diff --git a/Challenge7/lib/main.dart b/Challenge7/lib/main.dart
new file mode 100644
index 0000000000000000000000000000000000000000..ac8bb7f2811b54a8e87069ab91820579021decd9
--- /dev/null
+++ b/Challenge7/lib/main.dart
@@ -0,0 +1,1685 @@
+
+// ignore_for_file: sized_box_for_whitespace, prefer_const_constructors, use_key_in_widget_constructors
+
+// Imports
+import 'package:flutter/material.dart';
+import 'package:flutter/services.dart';
+import 'package:iosstyleswitch/iosstyleswitch.dart';
+
+void main() {
+  WidgetsFlutterBinding.ensureInitialized();
+  SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual,
+      overlays: [SystemUiOverlay.top]); // Displays System UI
+  runApp(const MyApp());
+}
+
+class MyApp extends StatelessWidget {
+  // ignore: use_key_in_widget_constructors
+  const MyApp({Key? key}) : super(key: key);
+
+  @override
+  Widget build(BuildContext context) {
+    return MaterialApp(
+      debugShowCheckedModeBanner: false, // Removes Debug Banner
+      title: 'Pomodoro App',
+      theme: ThemeData(
+        primarySwatch: Colors.blue,
+      ),
+      home: const MyHomePage(title: ''),
+    );
+  }
+}
+
+class MyHomePage extends StatefulWidget {
+  const MyHomePage({required this.title});
+  final String title;
+
+  @override
+  State<MyHomePage> createState() => _MyHomePageState();
+}
+
+class _MyHomePageState extends State<MyHomePage> with TickerProviderStateMixin {
+  late final _tabController =
+      TabController(length: 3, vsync: this, initialIndex: 0);
+
+  // Animation Controllers for each timer
+  late AnimationController controllerPomodoro;
+  late AnimationController controllerShortBreak;
+  late AnimationController controllerLongBreak;
+
+  // Booleans for each timer
+  bool isPlayingPomodoro = false;
+  bool isPlayingShortBreak = false;
+  bool isPlayingLongBreak = false;
+
+  // Boolean for auto transition to next timer
+  bool autoTransition = true;
+  
+  // HashMaps for timer slider values
+  Map incrementsPomodoro = {
+    0.5: "0:30", 1.0: "1:00", 1.5: "1:30", 2.0: "2:00", 2.5: "2:30", 3.0: "3:00", 3.5: "3:30", 4.0: "4:00", 4.5: "4:30", 5.0: "5:00",
+    5.5: "5:30", 6.0: "6:00", 6.5: "6:30", 7.0: "7:00", 7.5: "7:30", 8.0: "8:00", 8.5: "8:30", 9.0: "9:00", 9.5: "9:30", 10.0: "10:00",
+    10.5: "10:30", 11.0: "11:00", 11.5: "11:30", 12.0: "12:00", 12.5: "12:30", 13.0: "13:00", 13.5: "13:30", 14.0: "14:00", 14.5: "14:30", 15.0: "15:00",
+    15.5: "15:30", 16.0: "16:00", 16.5: "16:30", 17.0: "17:00", 17.5: "17:30", 18.0: "18:00", 18.5: "18:30", 19.0: "19:00", 19.5: "19:30", 20.0: "20:00",
+    20.5: "20:30", 21.0: "21:00", 21.5: "21:30", 22.0: "22:00", 22.5: "22:30", 23.0: "23:00", 23.5: "23:30", 24.0: "24:00", 24.5: "24:30", 25.0: "25:00",
+    25.5: "25:30", 26.0: "26:00", 26.5: "26:30", 27.0: "27:00", 27.5: "27:30", 28.0: "28:00", 28.5: "28:30", 29.0: "29:00", 29.5: "29:30", 30.0: "30:00",
+    30.5: "30:30", 31.0: "31:00", 31.5: "31:30", 32.0: "32:00", 32.5: "32:30", 33.0: "33:00", 33.5: "33:30", 34.0: "34:00", 34.5: "34:30", 35.0: "35:00",
+    35.5: "35:30", 36.0: "36:00", 36.5: "36:30", 37.0: "37:00", 37.5: "37:30", 38.0: "38:00", 38.5: "38:30", 39.0: "39:00", 39.5: "39:30", 40.0: "40:00",
+    40.5: "40:30", 41.0: "41:00", 41.5: "41:30", 42.0: "42:00", 42.5: "42:30", 43.0: "43:00", 43.5: "43:30", 44.0: "44:00", 44.5: "44:30", 45.0: "45:00",
+    45.5: "45:30", 46.0: "46:00", 46.5: "46:30", 47.0: "47:00", 47.5: "47:30", 48.0: "48:00", 48.5: "48:30", 49.0: "49:00", 49.5: "49:30", 50.0: "50:00",
+    50.5: "50:30", 51.0: "51:00", 51.5: "51:30", 52.0: "52:00", 52.5: "52:30", 53.0: "53:00", 53.5: "53:30", 54.0: "54:00", 54.5: "54:30", 55.0: "55:00",
+    55.5: "55:30", 56.0: "56:00", 56.5: "56:30", 57.0: "57:00", 57.5: "57:30", 58.0: "58:00", 58.5: "58:30", 59.0: "59:00", 59.5: "59:30", 60.0: "60:00",
+  };
+
+  Map incrementsShortBreak = {
+    0.5: "0:30", 1.0: "1:00", 1.5: "1:30", 2.0: "2:00", 2.5: "2:30", 3.0: "3:00", 3.5: "3:30", 4.0: "4:00", 4.5: "4:30", 5.0: "5:00",
+    5.5: "5:30", 6.0: "6:00", 6.5: "6:30", 7.0: "7:00", 7.5: "7:30", 8.0: "8:00", 8.5: "8:30", 9.0: "9:00", 9.5: "9:30", 10.0: "10:00",
+    10.5: "10:30", 11.0: "11:00", 11.5: "11:30", 12.0: "12:00", 12.5: "12:30", 13.0: "13:00", 13.5: "13:30", 14.0: "14:00", 14.5: "14:30", 15.0: "15:00",
+    15.5: "15:30", 16.0: "16:00", 16.5: "16:30", 17.0: "17:00", 17.5: "17:30", 18.0: "18:00", 18.5: "18:30", 19.0: "19:00", 19.5: "19:30", 20.0: "20:00",
+    20.5: "20:30", 21.0: "21:00", 21.5: "21:30", 22.0: "22:00", 22.5: "22:30", 23.0: "23:00", 23.5: "23:30", 24.0: "24:00", 24.5: "24:30", 25.0: "25:00",
+    25.5: "25:30", 26.0: "26:00", 26.5: "26:30", 27.0: "27:00", 27.5: "27:30", 28.0: "28:00", 28.5: "28:30", 29.0: "29:00", 29.5: "29:30", 30.0: "30:00",
+    30.5: "30:30", 31.0: "31:00", 31.5: "31:30", 32.0: "32:00", 32.5: "32:30", 33.0: "33:00", 33.5: "33:30", 34.0: "34:00", 34.5: "34:30", 35.0: "35:00",
+    35.5: "35:30", 36.0: "36:00", 36.5: "36:30", 37.0: "37:00", 37.5: "37:30", 38.0: "38:00", 38.5: "38:30", 39.0: "39:00", 39.5: "39:30", 40.0: "40:00",
+    40.5: "40:30", 41.0: "41:00", 41.5: "41:30", 42.0: "42:00", 42.5: "42:30", 43.0: "43:00", 43.5: "43:30", 44.0: "44:00", 44.5: "44:30", 45.0: "45:00",
+    45.5: "45:30", 46.0: "46:00", 46.5: "46:30", 47.0: "47:00", 47.5: "47:30", 48.0: "48:00", 48.5: "48:30", 49.0: "49:00", 49.5: "49:30", 50.0: "50:00",
+    50.5: "50:30", 51.0: "51:00", 51.5: "51:30", 52.0: "52:00", 52.5: "52:30", 53.0: "53:00", 53.5: "53:30", 54.0: "54:00", 54.5: "54:30", 55.0: "55:00",
+    55.5: "55:30", 56.0: "56:00", 56.5: "56:30", 57.0: "57:00", 57.5: "57:30", 58.0: "58:00", 58.5: "58:30", 59.0: "59:00", 59.5: "59:30", 60.0: "60:00",
+  };
+  
+  Map incrementsLongBreak = {
+    0.5: "0:30", 1.0: "1:00", 1.5: "1:30", 2.0: "2:00", 2.5: "2:30", 3.0: "3:00", 3.5: "3:30", 4.0: "4:00", 4.5: "4:30", 5.0: "5:00",
+    5.5: "5:30", 6.0: "6:00", 6.5: "6:30", 7.0: "7:00", 7.5: "7:30", 8.0: "8:00", 8.5: "8:30", 9.0: "9:00", 9.5: "9:30", 10.0: "10:00",
+    10.5: "10:30", 11.0: "11:00", 11.5: "11:30", 12.0: "12:00", 12.5: "12:30", 13.0: "13:00", 13.5: "13:30", 14.0: "14:00", 14.5: "14:30", 15.0: "15:00",
+    15.5: "15:30", 16.0: "16:00", 16.5: "16:30", 17.0: "17:00", 17.5: "17:30", 18.0: "18:00", 18.5: "18:30", 19.0: "19:00", 19.5: "19:30", 20.0: "20:00",
+    20.5: "20:30", 21.0: "21:00", 21.5: "21:30", 22.0: "22:00", 22.5: "22:30", 23.0: "23:00", 23.5: "23:30", 24.0: "24:00", 24.5: "24:30", 25.0: "25:00",
+    25.5: "25:30", 26.0: "26:00", 26.5: "26:30", 27.0: "27:00", 27.5: "27:30", 28.0: "28:00", 28.5: "28:30", 29.0: "29:00", 29.5: "29:30", 30.0: "30:00",
+    30.5: "30:30", 31.0: "31:00", 31.5: "31:30", 32.0: "32:00", 32.5: "32:30", 33.0: "33:00", 33.5: "33:30", 34.0: "34:00", 34.5: "34:30", 35.0: "35:00",
+    35.5: "35:30", 36.0: "36:00", 36.5: "36:30", 37.0: "37:00", 37.5: "37:30", 38.0: "38:00", 38.5: "38:30", 39.0: "39:00", 39.5: "39:30", 40.0: "40:00",
+    40.5: "40:30", 41.0: "41:00", 41.5: "41:30", 42.0: "42:00", 42.5: "42:30", 43.0: "43:00", 43.5: "43:30", 44.0: "44:00", 44.5: "44:30", 45.0: "45:00",
+    45.5: "45:30", 46.0: "46:00", 46.5: "46:30", 47.0: "47:00", 47.5: "47:30", 48.0: "48:00", 48.5: "48:30", 49.0: "49:00", 49.5: "49:30", 50.0: "50:00",
+    50.5: "50:30", 51.0: "51:00", 51.5: "51:30", 52.0: "52:00", 52.5: "52:30", 53.0: "53:00", 53.5: "53:30", 54.0: "54:00", 54.5: "54:30", 55.0: "55:00",
+    55.5: "55:30", 56.0: "56:00", 56.5: "56:30", 57.0: "57:00", 57.5: "57:30", 58.0: "58:00", 58.5: "58:30", 59.0: "59:00", 59.5: "59:30", 60.0: "60:00",
+  };
+
+  // Lists for timer sliders
+  final List<double> valuesPomodoro = [
+    0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 5.5, 6.0, 6.5, 7, 7.5, 8, 8.5, 10.0,
+    10.5, 11.0, 11.5, 12.0, 12.5, 13.0, 13.5, 15.0, 15.5, 16.0, 16.5, 17.0, 17.5, 18.0, 18.5, 20.0,
+    20.5, 21.0, 21.5, 22.0, 22.5, 23.0, 23.5, 25.0, 25.5, 26.0, 26.5, 27.0, 27.5, 28.0, 28.5, 30.0,
+    30.5, 31.0, 31.5, 32.0, 32.5, 33.0, 33.5, 35.0, 35.5, 36.0, 36.5, 37.0, 37.5, 38.0, 38.5, 40.0,
+    40.5, 41.0, 41.5, 42.0, 42.5, 43.0, 43.5, 45.0, 45.5, 46.0, 46.5, 47.0, 47.5, 48.0, 48.5, 50.0,
+    50.5, 51.0, 51.5, 52.0, 52.5, 53.0, 53.5, 55.0, 55.5, 56.0, 56.5, 57.0, 57.5, 58.0, 58.5, 60.0,
+    ];
+  
+  final List<double> valuesShortBreak = [
+    0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 5.5, 6.0, 6.5, 7, 7.5, 8, 8.5, 10.0,
+    10.5, 11.0, 11.5, 12.0, 12.5, 13.0, 13.5, 15.0, 15.5, 16.0, 16.5, 17.0, 17.5, 18.0, 18.5, 20.0,
+    20.5, 21.0, 21.5, 22.0, 22.5, 23.0, 23.5, 25.0, 25.5, 26.0, 26.5, 27.0, 27.5, 28.0, 28.5, 30.0,
+    30.5, 31.0, 31.5, 32.0, 32.5, 33.0, 33.5, 35.0, 35.5, 36.0, 36.5, 37.0, 37.5, 38.0, 38.5, 40.0,
+    40.5, 41.0, 41.5, 42.0, 42.5, 43.0, 43.5, 45.0, 45.5, 46.0, 46.5, 47.0, 47.5, 48.0, 48.5, 50.0,
+    50.5, 51.0, 51.5, 52.0, 52.5, 53.0, 53.5, 55.0, 55.5, 56.0, 56.5, 57.0, 57.5, 58.0, 58.5, 60.0,
+    ];
+
+  final List<double> valuesLongBreak = [
+    0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 5.5, 6.0, 6.5, 7, 7.5, 8, 8.5, 10.0,
+    10.5, 11.0, 11.5, 12.0, 12.5, 13.0, 13.5, 15.0, 15.5, 16.0, 16.5, 17.0, 17.5, 18.0, 18.5, 20.0,
+    20.5, 21.0, 21.5, 22.0, 22.5, 23.0, 23.5, 25.0, 25.5, 26.0, 26.5, 27.0, 27.5, 28.0, 28.5, 30.0,
+    30.5, 31.0, 31.5, 32.0, 32.5, 33.0, 33.5, 35.0, 35.5, 36.0, 36.5, 37.0, 37.5, 38.0, 38.5, 40.0,
+    40.5, 41.0, 41.5, 42.0, 42.5, 43.0, 43.5, 45.0, 45.5, 46.0, 46.5, 47.0, 47.5, 48.0, 48.5, 50.0,
+    50.5, 51.0, 51.5, 52.0, 52.5, 53.0, 53.5, 55.0, 55.5, 56.0, 56.5, 57.0, 57.5, 58.0, 58.5, 60.0,
+    ];
+
+  // Lists for timer labels
+  int selectedIndexPomodoro = 25;
+  int selectedIndexShortBreak = 5;
+  int selectedIndexLongBreak = 15;
+  
+  // Displays for timer labels
+  String displayValuePomodoro = "25:00";
+  String displayValueShortBreak = "5:00";
+  String displayValueLongBreak = "15:00";
+
+
+  // Displays the time remaining for Pomodoro Timer
+  String get countTextPomodoro {
+    Duration count = controllerPomodoro.duration! * controllerPomodoro.value;
+    if (count.inMinutes == 0) {
+      return controllerPomodoro.isDismissed
+        ? '${(controllerPomodoro.duration!.inMinutes % 60).toString().padLeft(2, '0')}:${(controllerPomodoro.duration!.inSeconds % 60).toString().padLeft(2, '0')}'
+        : '${((controllerPomodoro.duration!.inMinutes) % 60).toString().padLeft(2, '0')}:${(count.inSeconds % 60).toString().padLeft(2, '0')}';
+    } else {
+      return controllerPomodoro.isDismissed
+        ? '${(controllerPomodoro.duration!.inMinutes % 60).toString().padLeft(2, '0')}:${(controllerPomodoro.duration!.inSeconds % 60).toString().padLeft(2, '0')}'
+        : '${((controllerPomodoro.duration!.inMinutes - 1) % 60).toString().padLeft(2, '0')}:${(count.inSeconds % 60).toString().padLeft(2, '0')}';
+    }
+    
+  }
+
+  // Displays the time remaining for Short Break Timer
+  String get countTextShortBreak {
+    Duration count =
+        controllerShortBreak.duration! * controllerShortBreak.value;
+    if (count.inMinutes == 0) {
+      return controllerShortBreak.isDismissed
+        ? '${(controllerShortBreak.duration!.inMinutes % 60).toString().padLeft(2, '0')}:${(controllerShortBreak.duration!.inSeconds % 60).toString().padLeft(2, '0')}'
+        : '${((controllerShortBreak.duration!.inMinutes) % 60).toString().padLeft(2, '0')}:${(count.inSeconds % 60).toString().padLeft(2, '0')}';
+    } else {
+      return controllerShortBreak.isDismissed
+        ? '${(controllerShortBreak.duration!.inMinutes % 60).toString().padLeft(2, '0')}:${(controllerShortBreak.duration!.inSeconds % 60).toString().padLeft(2, '0')}'
+        : '${((controllerShortBreak.duration!.inMinutes - 1) % 60).toString().padLeft(2, '0')}:${(count.inSeconds % 60).toString().padLeft(2, '0')}';
+    }
+  }
+
+  // Displays the time remaining for Long Break Timer
+  String get countTextLongBreak {
+    Duration count = controllerLongBreak.duration! * controllerLongBreak.value;
+    if (count.inMinutes == 0) {
+      return controllerLongBreak.isDismissed
+        ? '${(controllerLongBreak.duration!.inMinutes % 60).toString().padLeft(2, '0')}:${(controllerLongBreak.duration!.inSeconds % 60).toString().padLeft(2, '0')}'
+        : '${((controllerLongBreak.duration!.inMinutes) % 60).toString().padLeft(2, '0')}:${(count.inSeconds % 60).toString().padLeft(2, '0')}';
+    } else {
+      return controllerLongBreak.isDismissed
+        ? '${(controllerLongBreak.duration!.inMinutes % 60).toString().padLeft(2, '0')}:${(controllerLongBreak.duration!.inSeconds % 60).toString().padLeft(2, '0')}'
+        : '${((controllerLongBreak.duration!.inMinutes - 1) % 60).toString().padLeft(2, '0')}:${(count.inSeconds % 60).toString().padLeft(2, '0')}';
+    }
+  }
+
+  // Progress Indicators for each timer
+  double progressPomodoro = 1.0;
+  double progressShortBreak = 1.0;
+  double progressLongBreak = 1.0;
+
+  // Timer frequency counter
+  int pomodoroCount = 0;
+
+  @override
+  void initState() {
+    super.initState();
+
+    controllerPomodoro = AnimationController(
+      vsync: this,
+      duration: Duration(minutes: 25), // Default Pomodoro Timer Duration
+    );
+
+    controllerPomodoro.addListener(() {
+      if (controllerPomodoro.isAnimating) {
+        // If the timer is running
+        setState(() {
+          progressPomodoro =
+              controllerPomodoro.value; // Updates Progress Indicator
+        });
+      } else {
+        // If the timer is not running
+        setState(() {
+          progressPomodoro = 1.0; // Resets Progress Indicator
+          isPlayingPomodoro = false;
+        });
+      }
+    });
+
+    controllerShortBreak = AnimationController(
+      vsync: this,
+      duration: Duration(minutes: 5), // Default Short Break Timer Duration
+    );
+
+    controllerShortBreak.addListener(() {
+      if (controllerShortBreak.isAnimating) {
+        // If the timer is running
+        setState(() {
+          progressShortBreak =
+              controllerShortBreak.value; // Updates Progress Indicator
+        });
+      } else {
+        setState(() {
+          progressShortBreak = 1.0; // Resets Progress Indicator
+          isPlayingShortBreak = false;
+        });
+      }
+    });
+
+    controllerLongBreak = AnimationController(
+      vsync: this,
+      duration: Duration(minutes: 15), // Default Long Break Timer Duration
+    );
+
+    controllerLongBreak.addListener(() {
+      if (controllerLongBreak.isAnimating) {
+        // If the timer is running
+        setState(() {
+          progressLongBreak =
+              controllerLongBreak.value; // Updates Progress Indicator
+        });
+      } else {
+        // If the timer is not running
+        setState(() {
+          progressLongBreak = 1.0; // Resets Progress Indicator
+          isPlayingLongBreak = false;
+        });
+      }
+    });
+  }
+
+  @override
+  void dispose() {
+    controllerPomodoro.dispose();
+    controllerShortBreak.dispose();
+    controllerLongBreak.dispose();
+    super.dispose();
+  }
+
+  // Functions to Switch to the next tab when the timer is finished
+  void toShortBreak() {
+    controllerPomodoro.addListener(() {
+      if (controllerPomodoro.isDismissed) {
+        pomodoroCount++; // Increments the Pomodoro Counter
+        // If the timer is finished
+        setState(() {
+          _tabController.animateTo(1); // Switches to Short Break Tab
+        });
+      }
+    });
+  }
+
+  void toLongBreak() {
+    controllerPomodoro.addListener(() {
+      if (controllerPomodoro.isDismissed) {
+        pomodoroCount++; // Increments the Pomodoro Counter
+        // If the timer is finished
+        if (pomodoroCount==4) {
+          setState(() {
+          _tabController.animateTo(2); // Switches to Long Break Tab
+        });
+        }
+      }
+    });
+  }
+
+  void toPomodoro() {
+    controllerShortBreak.addListener(() {
+      if ((controllerShortBreak.isDismissed && pomodoroCount < 4) || (controllerLongBreak.isDismissed && pomodoroCount == 4)) {
+        // If either short break timer is finished and the pomodoro count is less than 4 or if the long break timer is finished and the pomodoro count is 4
+        setState(() {
+          _tabController.animateTo(0); // Switches to Pomodoro Tab
+        });
+      }
+    });
+  }
+
+  @override
+  Widget build(BuildContext context) {
+    return Scaffold(
+      backgroundColor: const Color.fromARGB(255, 35, 37, 84),
+      body: Stack(
+        children: <Widget>[
+          Container(
+            height: 200,
+            child: AppBar(
+              title: Text(widget.title),
+              shape: const RoundedRectangleBorder(
+                  borderRadius:
+                      BorderRadius.vertical(bottom: Radius.circular(20))),
+              backgroundColor: const Color.fromARGB(255, 255, 0, 153),
+              flexibleSpace: Column(
+                children: <Widget>[
+                  Container(
+                    margin: const EdgeInsets.only(top: 50),
+                    child: const Text(''),
+                  ),
+                  Align(
+                    alignment: Alignment.topCenter,
+                    child: Image.asset(
+                      'lib/icons/tomato_icon.png',
+                      color: Colors.white,
+                      scale: 3,
+                    ),
+                  ),
+                ],
+              ),
+            ),
+          ),
+          Padding(
+            padding: const EdgeInsets.only(top: 130, left: 15, right: 15),
+            child: Column(
+              children: <Widget>[
+                Card(
+                  margin: EdgeInsets.zero,
+                  color: const Color.fromARGB(255, 44, 47, 93),
+                  shape: const RoundedRectangleBorder(
+                      borderRadius: BorderRadius.only(
+                          topLeft: Radius.circular(20),
+                          topRight: Radius.circular(20))),
+                  child: TabBar(
+                    controller: _tabController,
+                    indicatorColor: const Color.fromARGB(0, 255, 0, 153),
+                    tabs: [
+                      Tab(
+                        child: AnimatedContainer(
+                          duration: Duration(milliseconds: 500),
+                          curve: Curves.fastOutSlowIn,
+                          child: Text(
+                            "POMODORO",
+                            style: TextStyle(
+                                fontFamily: "SF Pro Text",
+                                fontSize: 10,
+                                fontWeight: FontWeight.bold),
+                          ),
+                        ),
+                      ),
+                      Tab(
+                        child: Text(
+                          "SHORT BREAK",
+                          style: TextStyle(
+                              fontFamily: "SF Pro Text",
+                              fontSize: 10,
+                              fontWeight: FontWeight.bold),
+                        ),
+                      ),
+                      Tab(
+                        child: Text(
+                          "LONG BREAK",
+                          style: TextStyle(
+                              fontFamily: "SF Pro Text",
+                              fontSize: 10,
+                              fontWeight: FontWeight.bold),
+                        ),
+                      ),
+                    ],
+                  ),
+                ),
+                Expanded(
+                  child: Card(
+                    margin: const EdgeInsets.only(
+                        top: 0, bottom: 300, left: 0, right: 0),
+                    color: const Color.fromARGB(255, 44, 47, 93),
+                    shape: const RoundedRectangleBorder(
+                        borderRadius: BorderRadius.only(
+                            bottomLeft: Radius.circular(20),
+                            bottomRight: Radius.circular(20))),
+                    child: TabBarView(
+                      controller: _tabController,
+                      //physics: NeverScrollableScrollPhysics(),
+                      children: [
+                        Column(
+                          children: [
+                            Padding(
+                              padding: const EdgeInsets.only(top: 20),
+                              child: Stack(
+                                alignment: Alignment.center,
+                                children: [
+                                  SizedBox(
+                                    width: 120,
+                                    height: 120,
+                                    child: CircularProgressIndicator(
+                                      value: progressPomodoro,
+                                      color: const Color.fromARGB(
+                                          255, 241, 87, 255),
+                                      backgroundColor: const Color.fromARGB(
+                                          69, 158, 158, 158),
+                                      strokeWidth: 5,
+                                    ),
+                                  ),
+                                  GestureDetector(
+                                    child: AnimatedBuilder(
+                                      animation: controllerPomodoro,
+                                      builder: (context, child) => Text(
+                                        countTextPomodoro,
+                                        style: const TextStyle(
+                                            fontFamily: 'Google Sans',
+                                            fontSize: 33,
+                                            color: Colors.white,
+                                            fontWeight: FontWeight.bold),
+                                      ),
+                                    ),
+                                  ),
+                                ],
+                              ),
+                            ),
+                            Container(
+                              padding: const EdgeInsets.only(top: 30),
+                              width: 200,
+                              child: Row(
+                                children: [
+                                  Expanded(
+                                    child: GestureDetector(
+                                      onTap: () {
+                                        controllerPomodoro.reset();
+                                        setState(() {
+                                          isPlayingPomodoro = false;
+                                        });
+                                      },
+                                      child: CircleAvatar(
+                                        backgroundColor: const Color.fromARGB(
+                                            255, 73, 75, 122),
+                                        child: Image.asset(
+                                          'lib/icons/reset_icon.png',
+                                          color: Colors.white,
+                                          scale: 5,
+                                        ),
+                                      ),
+                                    ),
+                                  ),
+                                  Expanded(
+                                    child: GestureDetector(
+                                      onTap: () {
+                                        if (controllerPomodoro.isAnimating) {
+                                          controllerPomodoro.stop();
+                                          setState(() {
+                                            isPlayingPomodoro = false;
+                                          });
+                                        } else {
+                                          controllerPomodoro.reverse(
+                                              from: controllerPomodoro.value ==
+                                                      0.0
+                                                  ? 1.0
+                                                  : controllerPomodoro.value);
+                                          setState(() {
+                                            isPlayingPomodoro = true;
+                                          });
+                                        }
+                                      },
+                                      child: CircleAvatar(
+                                        radius: 25,
+                                        child: Container(
+                                          decoration: BoxDecoration(
+                                            shape: BoxShape.circle,
+                                            gradient: LinearGradient(
+                                              colors: List<Color>.from([
+                                                const Color.fromARGB(
+                                                    255, 255, 0, 255),
+                                                const Color.fromARGB(
+                                                    255, 255, 43, 121),
+                                              ]),
+                                              begin: Alignment.topLeft,
+                                              end: Alignment.bottomRight,
+                                              transform:
+                                                  const GradientRotation(0.402),
+                                            ),
+                                          ),
+                                          child: isPlayingPomodoro == true
+                                              ? Image.asset(
+                                                  "lib/icons/pause_icon.png")
+                                              : Image.asset(
+                                                  "lib/icons/play_icon.png",
+                                                  scale: 1,
+                                                ),
+                                        ),
+                                      ),
+                                    ),
+                                  ),
+                                  Expanded(
+                                    child: RawMaterialButton(
+                                      onPressed: () {
+                                        if (controllerPomodoro.isDismissed) {
+                                          showModalBottomSheet(
+                                            backgroundColor: Color.fromARGB(255, 35, 37, 84),
+                                            context: context,
+                                            builder: (context) => Container(
+                                              height: 400,
+                                              child: Column(
+                                                children: [
+                                                  Text(''),
+                                                  Row(children: [
+                                                    Padding(
+                                                      padding: const EdgeInsets.only(left: 70),
+                                                      child: Align(
+                                                        alignment: Alignment.topCenter,
+                                                        child: Text("Auto-transition timer",
+                                                            style: TextStyle(
+                                                                fontFamily: "Google Sans",
+                                                                fontSize: 15,
+                                                                fontWeight: FontWeight.bold,
+                                                                color: Colors.white)),
+                                                      ),
+                                                    ),
+                                                    SizedBox(width: 5),
+                                                    IosSwitch(
+                                                      isActive: autoTransition,
+                                                      disableBackgroundColor: Color.fromARGB(255, 99, 120, 255),
+                                                      activeBackgroundColor: Color.fromARGB(255, 48, 96, 255),
+                                                      size: 25,
+                                                      onChanged: (autoTransition) {
+                                                        setState(() => this.autoTransition = autoTransition);
+                                                      },
+                                                    ),
+                                                  ],),
+                                                  Padding(
+                                                    padding: const EdgeInsets.only(left: 22.5),
+                                                    child: Align(
+                                                      alignment: Alignment.topLeft,
+                                                      child: Text("Pomodoro",
+                                                          style: TextStyle(
+                                                              fontFamily: "Google Sans",
+                                                              fontSize: 15,
+                                                              fontWeight: FontWeight.bold,
+                                                              color: Colors.white)),
+                                                    ),
+                                                  ),
+                                                  Row(
+                                                    children: [
+                                                      StatefulBuilder(
+                                                        builder: (context, state) {
+                                                          return Row(
+                                                            children: [
+                                                              SizedBox(
+                                                                width: 280,
+                                                                child: SliderTheme(
+                                                                  data: SliderThemeData(
+                                                                    activeTrackColor: Color.fromARGB(255, 49, 49, 91),
+                                                                    inactiveTrackColor: Colors.transparent,
+                                                                    activeTickMarkColor: Color.fromARGB(255, 49, 49, 91),
+                                                                    inactiveTickMarkColor: Color.fromARGB(255, 49, 49, 91),
+                                                                    overlayColor: Color.fromARGB(255, 49, 49, 91),
+                                                                    thumbShape: RoundSliderThumbShape(enabledThumbRadius: 7),
+                                                                  ),
+                                                                  child: Slider(
+                                                                    activeColor: Color.fromARGB(255, 109, 138, 255),
+                                                                    inactiveColor: Color.fromARGB(255, 49, 49, 91),
+                                                                    value: selectedIndexPomodoro.toDouble(),
+                                                                    label: incrementsPomodoro[double.parse(valuesPomodoro[selectedIndexPomodoro].toStringAsFixed(2))],
+                                                                    min: 0,
+                                                                    max: valuesPomodoro.length - 1,
+                                                                    divisions: valuesPomodoro.length - 1,
+                                                                    onChanged: (double value) {
+                                                                      state((){
+                                                                        selectedIndexPomodoro = value.toInt();
+                                                                        displayValuePomodoro = incrementsPomodoro[double.parse(valuesPomodoro[selectedIndexPomodoro].toStringAsFixed(2))];
+                                                                      });
+                                                                    },
+                                                                      ),
+                                                                ),
+                                                              ),
+                                                              // ignore: unnecessary_string_interpolations
+                                                          Text("${displayValuePomodoro.split(":")[0]}:${displayValuePomodoro.split(":")[1]}", style: const TextStyle(fontFamily: 'Google Sans', fontSize: 25, fontWeight: FontWeight.bold, color: Color.fromARGB(232, 109, 138, 255))),
+                                                            ],
+                                                          );
+                                                        }
+                                                      ),
+                                                    ],
+                                                  ),
+                                                  Padding(
+                                                    padding: const EdgeInsets.only(left: 22.5),
+                                                    child: Align(
+                                                      alignment: Alignment.topLeft,
+                                                      child: Text("Short Break",
+                                                          style: TextStyle(
+                                                              fontFamily: "Google Sans",
+                                                              fontSize: 15,
+                                                              fontWeight: FontWeight.bold,
+                                                              color: Colors.white)),
+                                                    ),
+                                                  ),
+                                                  Row(
+                                                    children: [
+                                                      SizedBox(
+                                                        child: StatefulBuilder(
+                                                          builder: (context, state) {
+                                                            return Row(
+                                                            children: [
+                                                              SizedBox(
+                                                                width: 280,
+                                                                child: SliderTheme(
+                                                                  data: SliderThemeData(
+                                                                    activeTrackColor: Color.fromARGB(255, 49, 49, 91),
+                                                                    inactiveTrackColor: Colors.transparent,
+                                                                    activeTickMarkColor: Color.fromARGB(255, 49, 49, 91),
+                                                                    inactiveTickMarkColor: Color.fromARGB(255, 49, 49, 91),
+                                                                    overlayColor: Color.fromARGB(255, 49, 49, 91),
+                                                                    thumbShape: RoundSliderThumbShape(enabledThumbRadius: 7),
+                                                                  ),
+                                                                  child: Slider(
+                                                                    activeColor: Color.fromARGB(255, 109, 138, 255),
+                                                                    inactiveColor: Color.fromARGB(255, 49, 49, 91),
+                                                                    value: selectedIndexShortBreak.toDouble(),
+                                                                    label: incrementsShortBreak[double.parse(valuesShortBreak[selectedIndexShortBreak].toStringAsFixed(2))],
+                                                                    min: 0,
+                                                                    max: valuesShortBreak.length - 1,
+                                                                    divisions: valuesShortBreak.length - 1,
+                                                                    onChanged: (double value) {
+                                                                      
+                                                                      state((){
+                                                                        selectedIndexShortBreak = value.toInt();
+                                                                        displayValueShortBreak = incrementsShortBreak[double.parse(valuesShortBreak[selectedIndexShortBreak].toStringAsFixed(2))];
+                                                                      });
+                                                                    },
+                                                                      ),
+                                                                ),
+                                                              ),
+                                                              // ignore: unnecessary_string_interpolations
+                                                              Text("${displayValueShortBreak.split(":")[0]}:${displayValueShortBreak.split(":")[1]}", style: const TextStyle(fontFamily: 'Google Sans', fontSize: 25, fontWeight: FontWeight.bold, color: Color.fromARGB(232, 109, 138, 255))),                                                            ],
+                                                          );
+                                                        }
+                                                        ),
+                                                      ),
+                                                          //Text("${_currentSliderValue.toStringAsFixed(2)}", style: const TextStyle(fontFamily: 'Google Sans', fontSize: 25, fontWeight: FontWeight.bold, color: Color.fromARGB(232, 109, 138, 255))),
+                                                    ],
+                                                  ),
+                                                  Padding(
+                                                    padding: const EdgeInsets.only(left: 22.5),
+                                                    child: Align(
+                                                      alignment: Alignment.topLeft,
+                                                      child: Text("Long Break",
+                                                          style: TextStyle(
+                                                              fontFamily: "Google Sans",
+                                                              fontSize: 15,
+                                                              fontWeight: FontWeight.bold,
+                                                              color: Colors.white)),
+                                                    ),
+                                                  ),
+                                                  Row(
+                                                    children: [
+                                                      SizedBox(
+                                                        child: SliderTheme(
+                                                          data: SliderThemeData(
+                                                            overlayColor: Colors.transparent,
+                                                            thumbShape: RoundSliderThumbShape(enabledThumbRadius: 7),
+                                                              ),
+                                                          child: StatefulBuilder(
+                                                            builder: (context, state) {
+                                                              return Row(
+                                                            children: [
+                                                              SizedBox(
+                                                                width: 280,
+                                                                child: SliderTheme(
+                                                                  data: SliderThemeData(
+                                                                    activeTrackColor: Color.fromARGB(255, 49, 49, 91),
+                                                                    inactiveTrackColor: Colors.transparent,
+                                                                    activeTickMarkColor: Color.fromARGB(255, 49, 49, 91),
+                                                                    inactiveTickMarkColor: Color.fromARGB(255, 49, 49, 91),
+                                                                    overlayColor: Color.fromARGB(255, 49, 49, 91),
+                                                                    thumbShape: RoundSliderThumbShape(enabledThumbRadius: 7),
+                                                                  ),
+                                                                  child: Slider(
+                                                                    activeColor: Color.fromARGB(255, 109, 138, 255),
+                                                                    inactiveColor: Color.fromARGB(255, 49, 49, 91),
+                                                                    value: selectedIndexLongBreak.toDouble(),
+                                                                    label: incrementsLongBreak[double.parse(valuesLongBreak[selectedIndexLongBreak].toStringAsFixed(2))],
+                                                                    min: 0,
+                                                                    max: valuesLongBreak.length - 1,
+                                                                    divisions: valuesLongBreak.length - 1,
+                                                                    onChanged: (double value) {
+                                                                      
+                                                                      state((){
+                                                                        selectedIndexLongBreak = value.toInt();
+                                                                        displayValueLongBreak = incrementsLongBreak[double.parse(valuesLongBreak[selectedIndexLongBreak].toStringAsFixed(2))];
+                                                                      });
+                                                                    },
+                                                                      ),
+                                                                ),
+                                                              ),
+                                                          Text("${displayValueLongBreak.split(":")[0]}:${displayValueLongBreak.split(":")[1]}", style: const TextStyle(fontFamily: 'Google Sans', fontSize: 25, fontWeight: FontWeight.bold, color: Color.fromARGB(232, 109, 138, 255))),
+                                                            ],
+                                                          );
+                                                        }
+                                                          ),
+                                                        ),
+                                                      ),
+                                                    ],
+                                                  ),
+                                                  Align(
+                                                    alignment: Alignment.bottomCenter,
+                                                    child: Padding(
+                                                      padding: const EdgeInsets.only(left: 100),
+                                                      child: Align(
+                                                        alignment: Alignment.center,
+                                                        child: Row(
+                                                          children: [
+                                                            SizedBox(
+                                                              width: 70,
+                                                              child: OutlinedButton(  
+                                                                style: OutlinedButton.styleFrom(side: BorderSide(width: 1.0, color: Color.fromARGB(255, 99, 120, 255), style: BorderStyle.solid,),shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20.0)),),
+                                                                child: Text("Cancel", style: TextStyle(fontFamily: "Google Sans", fontSize: 11, fontWeight: FontWeight.bold, color: Color.fromARGB(250, 109, 138, 255)),),
+                                                                onPressed: () {
+                                                                  Navigator.of(context).pop();
+                                                                }
+                                                                ),
+                                                            ),
+                                                            SizedBox(width: 10),
+                                                            SizedBox(
+                                                              width: 70,
+                                                              child: RawMaterialButton(
+                                                                shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20.0)),
+                                                                fillColor: Color.fromARGB(255, 109, 138, 255),
+                                                                child: Text("Save", style: TextStyle(fontFamily: "Google Sans", fontSize: 11, fontWeight: FontWeight.bold, color: Colors.white)),
+                                                                onPressed: () {
+                                                                  Navigator.of(context).pop();
+                                                                  setState(() {
+                                                                    controllerPomodoro.duration = Duration(minutes: int.parse(incrementsPomodoro[valuesPomodoro[selectedIndexPomodoro]].split(':')[0]), seconds: int.parse(incrementsPomodoro[valuesPomodoro[selectedIndexPomodoro]].split(':')[1]));
+                                                                    controllerShortBreak.duration = Duration(minutes: int.parse(incrementsShortBreak[valuesShortBreak[selectedIndexShortBreak]].split(':')[0]), seconds: int.parse(incrementsShortBreak[valuesShortBreak[selectedIndexShortBreak]].split(':')[1]));
+                                                                    controllerLongBreak.duration = Duration(minutes: int.parse(incrementsLongBreak[valuesLongBreak[selectedIndexLongBreak]].split(':')[0]), seconds: int.parse(incrementsLongBreak[valuesLongBreak[selectedIndexLongBreak]].split(':')[1]));
+                                                                    if (autoTransition) {
+                                                                      controllerPomodoro.addListener(() {
+                                                                        if (controllerPomodoro.isDismissed) {
+                                                                          pomodoroCount++;
+                                                                          if (pomodoroCount == 4) {
+                                                                            toLongBreak();
+                                                                          }
+                                                                          else {
+                                                                            toShortBreak();
+                                                                          }
+                                                                        }
+                                                                      controllerShortBreak.addListener(() {
+                                                                        if (controllerShortBreak.isDismissed) {
+                                                                          toPomodoro();
+                                                                        }
+                                                                      });
+                                                                      controllerLongBreak.addListener(() {
+                                                                        if (controllerLongBreak.isDismissed) {
+                                                                          toPomodoro();
+                                                                        }
+                                                                      });
+                                                                      });
+                                                                    }
+                                                                  },);
+                                                                }
+                                                                ),
+                                                            ),
+                                                          ],
+                                                        ),
+                                                      ),
+                                                    ),
+                                                  ),
+                                                ],
+                                              ),
+                                            ),
+                                          );
+                                        }
+                                      },
+                                      // onPressed: () {},
+                                      shape: const CircleBorder(),
+                                      fillColor: const Color.fromARGB(
+                                          255, 73, 75, 122),
+                                      child: Image.asset(
+                                        'lib/icons/edit_icon.png',
+                                        color: Colors.white,
+                                        scale: 4,
+                                      ),
+                                    ),
+                                  ),
+                                  // Expanded(
+                                  //   child: Text(progressPomodoro.toString()),
+                                  // ),
+                                ],
+                              ),
+                            ),
+                          ],
+                        ),
+                        Column(
+                          children: [
+                            Padding(
+                              padding: const EdgeInsets.only(top: 20),
+                              child: Stack(
+                                alignment: Alignment.center,
+                                children: [
+                                  SizedBox(
+                                    width: 120,
+                                    height: 120,
+                                    child: CircularProgressIndicator(
+                                      value: progressShortBreak,
+                                      color: const Color.fromARGB(
+                                          255, 241, 87, 255),
+                                      backgroundColor: const Color.fromARGB(
+                                          69, 158, 158, 158),
+                                      strokeWidth: 5,
+                                    ),
+                                  ),
+                                  GestureDetector(
+                                    child: AnimatedBuilder(
+                                      animation: controllerShortBreak,
+                                      builder: (context, child) => Text(
+                                        countTextShortBreak,
+                                        style: const TextStyle(
+                                            fontFamily: 'Google Sans',
+                                            fontSize: 33,
+                                            color: Colors.white,
+                                            fontWeight: FontWeight.bold),
+                                      ),
+                                    ),
+                                  ),
+                                ],
+                              ),
+                            ),
+                            Container(
+                              padding: const EdgeInsets.only(top: 30),
+                              width: 200,
+                              child: Row(
+                                children: [
+                                  Expanded(
+                                    child: GestureDetector(
+                                      onTap: () {
+                                        controllerShortBreak.reset();
+                                        setState(() {
+                                          isPlayingShortBreak = false;
+                                        });
+                                      },
+                                      child: CircleAvatar(
+                                        backgroundColor: const Color.fromARGB(
+                                            255, 73, 75, 122),
+                                        child: Image.asset(
+                                          'lib/icons/reset_icon.png',
+                                          color: Colors.white,
+                                          scale: 5,
+                                        ),
+                                      ),
+                                    ),
+                                  ),
+                                  Expanded(
+                                    child: GestureDetector(
+                                      onTap: () {
+                                        if (controllerShortBreak.isAnimating) {
+                                          controllerShortBreak.stop();
+                                          setState(() {
+                                            isPlayingShortBreak = false;
+                                          });
+                                        } else {
+                                          controllerShortBreak.reverse(
+                                              from: controllerShortBreak
+                                                          .value ==
+                                                      0.0
+                                                  ? 1.0
+                                                  : controllerShortBreak.value);
+                                          setState(() {
+                                            isPlayingShortBreak = true;
+                                          });
+                                        }
+                                      },
+                                      child: CircleAvatar(
+                                        radius: 25,
+                                        child: Container(
+                                          decoration: BoxDecoration(
+                                            shape: BoxShape.circle,
+                                            gradient: LinearGradient(
+                                              colors: List<Color>.from([
+                                                const Color.fromARGB(
+                                                    255, 255, 0, 255),
+                                                const Color.fromARGB(
+                                                    255, 255, 43, 121),
+                                              ]),
+                                              begin: Alignment.topLeft,
+                                              end: Alignment.bottomRight,
+                                              transform:
+                                                  const GradientRotation(0.402),
+                                            ),
+                                          ),
+                                          child: isPlayingShortBreak == true
+                                              ? Image.asset(
+                                                  "lib/icons/pause_icon.png")
+                                              : Image.asset(
+                                                  "lib/icons/play_icon.png",
+                                                  scale: 1,
+                                                ),
+                                        ),
+                                      ),
+                                    ),
+                                  ),
+                                  Expanded(
+                                    child: RawMaterialButton(
+                                      onPressed: () {
+                                        if (controllerShortBreak.isDismissed) {
+                                          showModalBottomSheet(
+                                            backgroundColor: Color.fromARGB(255, 35, 37, 84),
+                                            context: context,
+                                            builder: (context) => Container(
+                                              height: 400,
+                                              child: Column(
+                                                children: [
+                                                  Text(''),
+                                                  Row(children: [
+                                                    Padding(
+                                                      padding: const EdgeInsets.only(left: 70),
+                                                      child: Align(
+                                                        alignment: Alignment.topCenter,
+                                                        child: Text("Auto-transition timer",
+                                                            style: TextStyle(
+                                                                fontFamily: "Google Sans",
+                                                                fontSize: 15,
+                                                                fontWeight: FontWeight.bold,
+                                                                color: Colors.white)),
+                                                      ),
+                                                    ),
+                                                    SizedBox(width: 5),
+                                                    IosSwitch(
+                                                      isActive: autoTransition,
+                                                      disableBackgroundColor: Color.fromARGB(255, 99, 120, 255),
+                                                      activeBackgroundColor: Color.fromARGB(255, 48, 96, 255),
+                                                      size: 25,
+                                                      onChanged: (autoTransition) {
+                                                        setState(() => this.autoTransition = autoTransition);
+                                                      },
+                                                    ),
+                                                  ],),
+                                                  Padding(
+                                                    padding: const EdgeInsets.only(left: 22.5),
+                                                    child: Align(
+                                                      alignment: Alignment.topLeft,
+                                                      child: Text("Pomodoro",
+                                                          style: TextStyle(
+                                                              fontFamily: "Google Sans",
+                                                              fontSize: 15,
+                                                              fontWeight: FontWeight.bold,
+                                                              color: Colors.white)),
+                                                    ),
+                                                  ),
+                                                  Row(
+                                                    children: [
+                                                      StatefulBuilder(
+                                                        builder: (context, state) {
+                                                          return Row(
+                                                            children: [
+                                                              SizedBox(
+                                                                width: 280,
+                                                                child: SliderTheme(
+                                                                  data: SliderThemeData(
+                                                                    activeTrackColor: Color.fromARGB(255, 49, 49, 91),
+                                                                    inactiveTrackColor: Colors.transparent,
+                                                                    activeTickMarkColor: Color.fromARGB(255, 49, 49, 91),
+                                                                    inactiveTickMarkColor: Color.fromARGB(255, 49, 49, 91),
+                                                                    overlayColor: Color.fromARGB(255, 49, 49, 91),
+                                                                    thumbShape: RoundSliderThumbShape(enabledThumbRadius: 7),
+                                                                  ),
+                                                                  child: Slider(
+                                                                    activeColor: Color.fromARGB(255, 109, 138, 255),
+                                                                    inactiveColor: Color.fromARGB(255, 49, 49, 91),
+                                                                    value: selectedIndexPomodoro.toDouble(),
+                                                                    label: incrementsPomodoro[double.parse(valuesPomodoro[selectedIndexPomodoro].toStringAsFixed(2))],
+                                                                    min: 0,
+                                                                    max: valuesPomodoro.length - 1,
+                                                                    divisions: valuesPomodoro.length - 1,
+                                                                    onChanged: (double value) {
+                                                                      state((){
+                                                                        selectedIndexPomodoro = value.toInt();
+                                                                        displayValuePomodoro = incrementsPomodoro[double.parse(valuesPomodoro[selectedIndexPomodoro].toStringAsFixed(2))];
+                                                                      });
+                                                                    },
+                                                                      ),
+                                                                ),
+                                                              ),
+                                                              // ignore: unnecessary_string_interpolations
+                                                          Text("${displayValuePomodoro.split(":")[0]}:${displayValuePomodoro.split(":")[1]}", style: const TextStyle(fontFamily: 'Google Sans', fontSize: 25, fontWeight: FontWeight.bold, color: Color.fromARGB(232, 109, 138, 255))),
+                                                            ],
+                                                          );
+                                                        }
+                                                      ),
+                                                    ],
+                                                  ),
+                                                  Padding(
+                                                    padding: const EdgeInsets.only(left: 22.5),
+                                                    child: Align(
+                                                      alignment: Alignment.topLeft,
+                                                      child: Text("Short Break",
+                                                          style: TextStyle(
+                                                              fontFamily: "Google Sans",
+                                                              fontSize: 15,
+                                                              fontWeight: FontWeight.bold,
+                                                              color: Colors.white)),
+                                                    ),
+                                                  ),
+                                                  Row(
+                                                    children: [
+                                                      SizedBox(
+                                                        child: StatefulBuilder(
+                                                          builder: (context, state) {
+                                                            return Row(
+                                                            children: [
+                                                              SizedBox(
+                                                                width: 280,
+                                                                child: SliderTheme(                                                                  data: SliderThemeData(
+                                                                    activeTrackColor: Color.fromARGB(255, 49, 49, 91),
+                                                                    inactiveTrackColor: Colors.transparent,
+                                                                    activeTickMarkColor: Color.fromARGB(255, 49, 49, 91),
+                                                                    inactiveTickMarkColor: Color.fromARGB(255, 49, 49, 91),
+                                                                    overlayColor: Color.fromARGB(255, 49, 49, 91),
+                                                                    thumbShape: RoundSliderThumbShape(enabledThumbRadius: 7),
+                                                                  ),
+                                                                  child: Slider(
+                                                                    activeColor: Color.fromARGB(255, 109, 138, 255),
+                                                                    inactiveColor: Color.fromARGB(255, 49, 49, 91),
+                                                                    value: selectedIndexShortBreak.toDouble(),
+                                                                    label: incrementsShortBreak[double.parse(valuesShortBreak[selectedIndexShortBreak].toStringAsFixed(2))],
+                                                                    min: 0,
+                                                                    max: valuesShortBreak.length - 1,
+                                                                    divisions: valuesShortBreak.length - 1,
+                                                                    onChanged: (double value) {
+                                                                      
+                                                                      state((){
+                                                                        selectedIndexShortBreak = value.toInt();
+                                                                        displayValueShortBreak = incrementsShortBreak[double.parse(valuesShortBreak[selectedIndexShortBreak].toStringAsFixed(2))];
+                                                                      });
+                                                                    },
+                                                                      ),
+                                                                ),
+                                                              ),
+                                                              // ignore: unnecessary_string_interpolations
+                                                              Text("${displayValueShortBreak.split(":")[0]}:${displayValueShortBreak.split(":")[1]}", style: const TextStyle(fontFamily: 'Google Sans', fontSize: 25, fontWeight: FontWeight.bold, color: Color.fromARGB(232, 109, 138, 255))),                                                            ],
+                                                          );
+                                                        }
+                                                        ),
+                                                      ),
+                                                          //Text("${_currentSliderValue.toStringAsFixed(2)}", style: const TextStyle(fontFamily: 'Google Sans', fontSize: 25, fontWeight: FontWeight.bold, color: Color.fromARGB(232, 109, 138, 255))),
+                                                    ],
+                                                  ),
+                                                  Padding(
+                                                    padding: const EdgeInsets.only(left: 22.5),
+                                                    child: Align(
+                                                      alignment: Alignment.topLeft,
+                                                      child: Text("Long Break",
+                                                          style: TextStyle(
+                                                              fontFamily: "Google Sans",
+                                                              fontSize: 15,
+                                                              fontWeight: FontWeight.bold,
+                                                              color: Colors.white)),
+                                                    ),
+                                                  ),
+                                                  Row(
+                                                    children: [
+                                                      SizedBox(
+                                                        child: SliderTheme(
+                                                          data: SliderThemeData(
+                                                            overlayColor: Colors.transparent,
+                                                            thumbShape: RoundSliderThumbShape(enabledThumbRadius: 7),
+                                                              ),
+                                                          child: StatefulBuilder(
+                                                            builder: (context, state) {
+                                                              return Row(
+                                                            children: [
+                                                              SizedBox(
+                                                                width: 280,
+                                                                child: SliderTheme(                                                                  data: SliderThemeData(
+                                                                    activeTrackColor: Color.fromARGB(255, 49, 49, 91),
+                                                                    inactiveTrackColor: Colors.transparent,
+                                                                    activeTickMarkColor: Color.fromARGB(255, 49, 49, 91),
+                                                                    inactiveTickMarkColor: Color.fromARGB(255, 49, 49, 91),
+                                                                    overlayColor: Color.fromARGB(255, 49, 49, 91),
+                                                                    thumbShape: RoundSliderThumbShape(enabledThumbRadius: 7),
+                                                                  ),
+                                                                  child: Slider(
+                                                                    activeColor: Color.fromARGB(255, 109, 138, 255),
+                                                                    inactiveColor: Color.fromARGB(255, 49, 49, 91),
+                                                                    value: selectedIndexLongBreak.toDouble(),
+                                                                    label: incrementsLongBreak[double.parse(valuesLongBreak[selectedIndexLongBreak].toStringAsFixed(2))],
+                                                                    min: 0,
+                                                                    max: valuesLongBreak.length - 1,
+                                                                    divisions: valuesLongBreak.length - 1,
+                                                                    onChanged: (double value) {
+                                                                      
+                                                                      state((){
+                                                                        selectedIndexLongBreak = value.toInt();
+                                                                        displayValueLongBreak = incrementsLongBreak[double.parse(valuesLongBreak[selectedIndexLongBreak].toStringAsFixed(2))];
+                                                                      });
+                                                                    },
+                                                                      ),
+                                                                ),
+                                                              ),
+                                                              // ignore: unnecessary_string_interpolations
+                                                          Text("${displayValueLongBreak.split(":")[0]}:${displayValueLongBreak.split(":")[1]}", style: const TextStyle(fontFamily: 'Google Sans', fontSize: 25, fontWeight: FontWeight.bold, color: Color.fromARGB(232, 109, 138, 255))),
+                                                            ],
+                                                          );
+                                                        }
+                                                          ),
+                                                        ),
+                                                      ),
+                                                    ],
+                                                  ),
+                                                  Align(
+                                                    alignment: Alignment.bottomCenter,
+                                                    child: Padding(
+                                                      padding: const EdgeInsets.only(left: 100),
+                                                      child: Align(
+                                                        alignment: Alignment.center,
+                                                        child: Row(
+                                                          children: [
+                                                            SizedBox(
+                                                              width: 70,
+                                                              child: OutlinedButton(  
+                                                                style: OutlinedButton.styleFrom(side: BorderSide(width: 1.0, color: Color.fromARGB(255, 99, 120, 255), style: BorderStyle.solid,),shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20.0)),),
+                                                                child: Text("Cancel", style: TextStyle(fontFamily: "Google Sans", fontSize: 11, fontWeight: FontWeight.bold, color: Color.fromARGB(250, 109, 138, 255)),),
+                                                                onPressed: () {
+                                                                  Navigator.of(context).pop();
+                                                                }
+                                                                ),
+                                                            ),
+                                                            SizedBox(width: 10),
+                                                            SizedBox(
+                                                              width: 70,
+                                                              child: RawMaterialButton(
+                                                                shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20.0)),
+                                                                fillColor: Color.fromARGB(255, 109, 138, 255),
+                                                                child: Text("Save", style: TextStyle(fontFamily: "Google Sans", fontSize: 11, fontWeight: FontWeight.bold, color: Colors.white)),
+                                                                onPressed: () {
+                                                                  Navigator.of(context).pop();
+                                                                  setState(() {
+                                                                    controllerPomodoro.duration = Duration(minutes: int.parse(incrementsPomodoro[valuesPomodoro[selectedIndexPomodoro]].split(':')[0]), seconds: int.parse(incrementsPomodoro[valuesPomodoro[selectedIndexPomodoro]].split(':')[1]));
+                                                                    controllerShortBreak.duration = Duration(minutes: int.parse(incrementsShortBreak[valuesShortBreak[selectedIndexShortBreak]].split(':')[0]), seconds: int.parse(incrementsShortBreak[valuesShortBreak[selectedIndexShortBreak]].split(':')[1]));
+                                                                    controllerLongBreak.duration = Duration(minutes: int.parse(incrementsLongBreak[valuesLongBreak[selectedIndexLongBreak]].split(':')[0]), seconds: int.parse(incrementsLongBreak[valuesLongBreak[selectedIndexLongBreak]].split(':')[1]));
+                                                                    if (autoTransition) {
+                                                                      controllerPomodoro.addListener(() {
+                                                                        if (controllerPomodoro.isDismissed) {
+                                                                          pomodoroCount++;
+                                                                          if (pomodoroCount == 4) {
+                                                                            toLongBreak();
+                                                                          }
+                                                                          else {
+                                                                            toShortBreak();
+                                                                          }
+                                                                        }
+                                                                      controllerShortBreak.addListener(() {
+                                                                        if (controllerShortBreak.isDismissed) {
+                                                                          toPomodoro();
+                                                                        }
+                                                                      });
+                                                                      controllerLongBreak.addListener(() {
+                                                                        if (controllerLongBreak.isDismissed) {
+                                                                          toPomodoro();
+                                                                        }
+                                                                      });
+                                                                      });
+                                                                    }
+                                                                  },);
+                                                                }
+                                                                ),
+                                                            ),
+                                                          ],
+                                                        ),
+                                                      ),
+                                                    ),
+                                                  ),
+                                                ],
+                                              ),
+                                            ),
+                                          );
+                                        }
+                                      },
+                                      shape: const CircleBorder(),
+                                      fillColor: const Color.fromARGB(
+                                          255, 73, 75, 122),
+                                      child: Image.asset(
+                                        'lib/icons/edit_icon.png',
+                                        color: Colors.white,
+                                        scale: 4,
+                                      ),
+                                    ),
+                                  ),
+                                ],
+                              ),
+                            ),
+                          ],
+                        ),
+                        Column(
+                          children: [
+                            Padding(
+                              padding: const EdgeInsets.only(top: 20),
+                              child: Stack(
+                                alignment: Alignment.center,
+                                children: [
+                                  SizedBox(
+                                    width: 120,
+                                    height: 120,
+                                    child: CircularProgressIndicator(
+                                      value: progressLongBreak,
+                                      color: const Color.fromARGB(
+                                          255, 241, 87, 255),
+                                      backgroundColor: const Color.fromARGB(
+                                          69, 158, 158, 158),
+                                      strokeWidth: 5,
+                                    ),
+                                  ),
+                                  GestureDetector(
+                                    child: AnimatedBuilder(
+                                      animation: controllerLongBreak,
+                                      builder: (context, child) => Text(
+                                        countTextLongBreak,
+                                        style: const TextStyle(
+                                            fontFamily: 'Google Sans',
+                                            fontSize: 33,
+                                            color: Colors.white,
+                                            fontWeight: FontWeight.bold),
+                                      ),
+                                    ),
+                                  ),
+                                ],
+                              ),
+                            ),
+                            Container(
+                              padding: const EdgeInsets.only(top: 30),
+                              width: 200,
+                              child: Row(
+                                children: [
+                                  Expanded(
+                                    child: GestureDetector(
+                                      onTap: () {
+                                        controllerLongBreak.reset();
+                                        setState(() {
+                                          isPlayingLongBreak = false;
+                                        });
+                                      },
+                                      child: CircleAvatar(
+                                        backgroundColor: const Color.fromARGB(
+                                            255, 73, 75, 122),
+                                        child: Image.asset(
+                                          'lib/icons/reset_icon.png',
+                                          color: Colors.white,
+                                          scale: 5,
+                                        ),
+                                      ),
+                                    ),
+                                  ),
+                                  Expanded(
+                                    child: GestureDetector(
+                                      onTap: () {
+                                        if (controllerLongBreak.isAnimating) {
+                                          controllerLongBreak.stop();
+                                          setState(() {
+                                            isPlayingLongBreak = false;
+                                          });
+                                        } else {
+                                          controllerLongBreak.reverse(
+                                              from: controllerLongBreak.value ==
+                                                      0.0
+                                                  ? 1.0
+                                                  : controllerLongBreak.value);
+                                          setState(() {
+                                            isPlayingLongBreak = true;
+                                          });
+                                        }
+                                      },
+                                      child: CircleAvatar(
+                                        radius: 25,
+                                        child: Container(
+                                          decoration: BoxDecoration(
+                                            shape: BoxShape.circle,
+                                            gradient: LinearGradient(
+                                              colors: List<Color>.from([
+                                                const Color.fromARGB(
+                                                    255, 255, 0, 255),
+                                                const Color.fromARGB(
+                                                    255, 255, 43, 121),
+                                              ]),
+                                              begin: Alignment.topLeft,
+                                              end: Alignment.bottomRight,
+                                              transform:
+                                                  const GradientRotation(0.402),
+                                            ),
+                                          ),
+                                          child: isPlayingLongBreak == true
+                                              ? Image.asset(
+                                                  "lib/icons/pause_icon.png")
+                                              : Image.asset(
+                                                  "lib/icons/play_icon.png",
+                                                  scale: 1,
+                                                ),
+                                        ),
+                                      ),
+                                    ),
+                                  ),
+                                  Expanded(
+                                    child: RawMaterialButton(
+                                      onPressed: () {
+                                        if (controllerLongBreak.isDismissed) {
+                                          showModalBottomSheet(
+                                            backgroundColor: Color.fromARGB(255, 35, 37, 84),
+                                            context: context,
+                                            builder: (context) => Container(
+                                              height: 400,
+                                              child: Column(
+                                                children: [
+                                                  Text(''),
+                                                  Row(children: [
+                                                    Padding(
+                                                      padding: const EdgeInsets.only(left: 70),
+                                                      child: Align(
+                                                        alignment: Alignment.topCenter,
+                                                        child: Text("Auto-transition timer",
+                                                            style: TextStyle(
+                                                                fontFamily: "Google Sans",
+                                                                fontSize: 15,
+                                                                fontWeight: FontWeight.bold,
+                                                                color: Colors.white)),
+                                                      ),
+                                                    ),
+                                                    SizedBox(width: 5),
+                                                    IosSwitch(
+                                                      isActive: autoTransition,
+                                                      disableBackgroundColor: Color.fromARGB(255, 99, 120, 255),
+                                                      activeBackgroundColor: Color.fromARGB(255, 48, 96, 255),
+                                                      size: 25,
+                                                      onChanged: (autoTransition) {
+                                                        setState(() => this.autoTransition = autoTransition);
+                                                      },
+                                                    ),
+                                                  ],),
+                                                  Padding(
+                                                    padding: const EdgeInsets.only(left: 22.5),
+                                                    child: Align(
+                                                      alignment: Alignment.topLeft,
+                                                      child: Text("Pomodoro",
+                                                          style: TextStyle(
+                                                              fontFamily: "Google Sans",
+                                                              fontSize: 15,
+                                                              fontWeight: FontWeight.bold,
+                                                              color: Colors.white)),
+                                                    ),
+                                                  ),
+                                                  Row(
+                                                    children: [
+                                                      StatefulBuilder(
+                                                        builder: (context, state) {
+                                                          return Row(
+                                                            children: [
+                                                              SizedBox(
+                                                                width: 280,
+                                                                child: SliderTheme(
+                                                                  data: SliderThemeData(
+                                                                    activeTrackColor: Color.fromARGB(255, 49, 49, 91),
+                                                                    inactiveTrackColor: Colors.transparent,
+                                                                    activeTickMarkColor: Color.fromARGB(255, 49, 49, 91),
+                                                                    inactiveTickMarkColor: Color.fromARGB(255, 49, 49, 91),
+                                                                    overlayColor: Color.fromARGB(255, 49, 49, 91),
+                                                                    thumbShape: RoundSliderThumbShape(enabledThumbRadius: 7),
+                                                                  ),
+                                                                  child: Slider(
+                                                                    activeColor: Color.fromARGB(255, 109, 138, 255),
+                                                                    inactiveColor: Color.fromARGB(255, 49, 49, 91),
+                                                                    value: selectedIndexPomodoro.toDouble(),
+                                                                    label: incrementsPomodoro[double.parse(valuesPomodoro[selectedIndexPomodoro].toStringAsFixed(2))],
+                                                                    min: 0,
+                                                                    max: valuesPomodoro.length - 1,
+                                                                    divisions: valuesPomodoro.length - 1,
+                                                                    onChanged: (double value) {
+                                                                      state((){
+                                                                        selectedIndexPomodoro = value.toInt();
+                                                                        displayValuePomodoro = incrementsPomodoro[double.parse(valuesPomodoro[selectedIndexPomodoro].toStringAsFixed(2))];
+                                                                      });
+                                                                    },
+                                                                      ),
+                                                                ),
+                                                              ),
+                                                              // ignore: unnecessary_string_interpolations
+                                                          Text("${displayValuePomodoro.split(":")[0]}:${displayValuePomodoro.split(":")[1]}", style: const TextStyle(fontFamily: 'Google Sans', fontSize: 25, fontWeight: FontWeight.bold, color: Color.fromARGB(232, 109, 138, 255))),
+                                                            ],
+                                                          );
+                                                        }
+                                                      ),
+                                                    ],
+                                                  ),
+                                                  Padding(
+                                                    padding: const EdgeInsets.only(left: 22.5),
+                                                    child: Align(
+                                                      alignment: Alignment.topLeft,
+                                                      child: Text("Short Break",
+                                                          style: TextStyle(
+                                                              fontFamily: "Google Sans",
+                                                              fontSize: 15,
+                                                              fontWeight: FontWeight.bold,
+                                                              color: Colors.white)),
+                                                    ),
+                                                  ),
+                                                  Row(
+                                                    children: [
+                                                      SizedBox(
+                                                        child: StatefulBuilder(
+                                                          builder: (context, state) {
+                                                            return Row(
+                                                            children: [
+                                                              SizedBox(
+                                                                width: 280,
+                                                                child: SliderTheme(
+                                                                  data: SliderThemeData(
+                                                                    activeTrackColor: Color.fromARGB(255, 49, 49, 91),
+                                                                    inactiveTrackColor: Colors.transparent,
+                                                                    activeTickMarkColor: Color.fromARGB(255, 49, 49, 91),
+                                                                    inactiveTickMarkColor: Color.fromARGB(255, 49, 49, 91),
+                                                                    overlayColor: Color.fromARGB(255, 49, 49, 91),
+                                                                    thumbShape: RoundSliderThumbShape(enabledThumbRadius: 7),
+                                                                  ),
+                                                                  child: Slider(
+                                                                    activeColor: Color.fromARGB(255, 109, 138, 255),
+                                                                    inactiveColor: Color.fromARGB(255, 49, 49, 91),
+                                                                    value: selectedIndexShortBreak.toDouble(),
+                                                                    label: incrementsShortBreak[double.parse(valuesShortBreak[selectedIndexShortBreak].toStringAsFixed(2))],
+                                                                    min: 0,
+                                                                    max: valuesShortBreak.length - 1,
+                                                                    divisions: valuesShortBreak.length - 1,
+                                                                    onChanged: (double value) {
+                                                                      
+                                                                      state((){
+                                                                        selectedIndexShortBreak = value.toInt();
+                                                                        displayValueShortBreak = incrementsShortBreak[double.parse(valuesShortBreak[selectedIndexShortBreak].toStringAsFixed(2))];
+                                                                      });
+                                                                    },
+                                                                      ),
+                                                                ),
+                                                              ),
+                                                              // ignore: unnecessary_string_interpolations
+                                                              Text("${displayValueShortBreak.split(":")[0]}:${displayValueShortBreak.split(":")[1]}", style: const TextStyle(fontFamily: 'Google Sans', fontSize: 25, fontWeight: FontWeight.bold, color: Color.fromARGB(232, 109, 138, 255))),                                                            ],
+                                                          );
+                                                        }
+                                                        ),
+                                                      ),                                                    ],
+                                                  ),
+                                                  Padding(
+                                                    padding: const EdgeInsets.only(left: 22.5),
+                                                    child: Align(
+                                                      alignment: Alignment.topLeft,
+                                                      child: Text("Long Break",
+                                                          style: TextStyle(
+                                                              fontFamily: "Google Sans",
+                                                              fontSize: 15,
+                                                              fontWeight: FontWeight.bold,
+                                                              color: Colors.white)),
+                                                    ),
+                                                  ),
+                                                  Row(
+                                                    children: [
+                                                      SizedBox(
+                                                        child: SliderTheme(
+                                                          data: SliderThemeData(
+                                                            overlayColor: Colors.transparent,
+                                                            thumbShape: RoundSliderThumbShape(enabledThumbRadius: 7),
+                                                              ),
+                                                          child: StatefulBuilder(
+                                                            builder: (context, state) {
+                                                              return Row(
+                                                            children: [
+                                                              SizedBox(
+                                                                width: 280,
+                                                                child: SliderTheme(
+                                                                  data: SliderThemeData(
+                                                                    activeTrackColor: Color.fromARGB(255, 49, 49, 91),
+                                                                    inactiveTrackColor: Colors.transparent,
+                                                                    activeTickMarkColor: Color.fromARGB(255, 49, 49, 91),
+                                                                    inactiveTickMarkColor: Color.fromARGB(255, 49, 49, 91),
+                                                                    overlayColor: Color.fromARGB(255, 49, 49, 91),
+                                                                    thumbShape: RoundSliderThumbShape(enabledThumbRadius: 7),
+                                                                  ),
+                                                                  child: Slider(
+                                                                    activeColor: Color.fromARGB(255, 109, 138, 255),
+                                                                    inactiveColor: Color.fromARGB(255, 49, 49, 91),
+                                                                    value: selectedIndexLongBreak.toDouble(),
+                                                                    label: incrementsLongBreak[double.parse(valuesLongBreak[selectedIndexLongBreak].toStringAsFixed(2))],
+                                                                    min: 0,
+                                                                    max: valuesLongBreak.length - 1,
+                                                                    divisions: valuesLongBreak.length - 1,
+                                                                    onChanged: (double value) {
+                                                                      state((){
+                                                                        selectedIndexLongBreak = value.toInt();
+                                                                        displayValueLongBreak = incrementsLongBreak[double.parse(valuesLongBreak[selectedIndexLongBreak].toStringAsFixed(2))];
+                                                                      });
+                                                                    },
+                                                                      ),
+                                                                ),
+                                                              ),
+                                                              // ignore: unnecessary_string_interpolations
+                                                          Text("${displayValueLongBreak.split(":")[0]}:${displayValueLongBreak.split(":")[1]}", style: const TextStyle(fontFamily: 'Google Sans', fontSize: 25, fontWeight: FontWeight.bold, color: Color.fromARGB(232, 109, 138, 255))),
+                                                            ],
+                                                          );
+                                                        }
+                                                          ),
+                                                        ),
+                                                      ),
+                                                    ],
+                                                  ),
+                                                  Align(
+                                                    alignment: Alignment.bottomCenter,
+                                                    child: Padding(
+                                                      padding: const EdgeInsets.only(left: 100),
+                                                      child: Align(
+                                                        alignment: Alignment.center,
+                                                        child: Row(
+                                                          children: [
+                                                            SizedBox(
+                                                              width: 70,
+                                                              child: OutlinedButton(  
+                                                                style: OutlinedButton.styleFrom(side: BorderSide(width: 1.0, color: Color.fromARGB(255, 99, 120, 255), style: BorderStyle.solid,),shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20.0)),),
+                                                                child: Text("Cancel", style: TextStyle(fontFamily: "Google Sans", fontSize: 11, fontWeight: FontWeight.bold, color: Color.fromARGB(250, 109, 138, 255)),),
+                                                                onPressed: () {
+                                                                  Navigator.of(context).pop();
+                                                                }
+                                                                ),
+                                                            ),
+                                                            SizedBox(width: 10),
+                                                            SizedBox(
+                                                              width: 70,
+                                                              child: RawMaterialButton(
+                                                                shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20.0)),
+                                                                fillColor: Color.fromARGB(255, 109, 138, 255),
+                                                                child: Text("Save", style: TextStyle(fontFamily: "Google Sans", fontSize: 11, fontWeight: FontWeight.bold, color: Colors.white)),
+                                                                onPressed: () {
+                                                                  Navigator.of(context).pop();
+                                                                  setState(() {
+                                                                    controllerPomodoro.duration = Duration(minutes: int.parse(incrementsPomodoro[valuesPomodoro[selectedIndexPomodoro]].split(':')[0]), seconds: int.parse(incrementsPomodoro[valuesPomodoro[selectedIndexPomodoro]].split(':')[1]));
+                                                                    controllerShortBreak.duration = Duration(minutes: int.parse(incrementsShortBreak[valuesShortBreak[selectedIndexShortBreak]].split(':')[0]), seconds: int.parse(incrementsShortBreak[valuesShortBreak[selectedIndexShortBreak]].split(':')[1]));
+                                                                    controllerLongBreak.duration = Duration(minutes: int.parse(incrementsLongBreak[valuesLongBreak[selectedIndexLongBreak]].split(':')[0]), seconds: int.parse(incrementsLongBreak[valuesLongBreak[selectedIndexLongBreak]].split(':')[1]));
+                                                                    if (autoTransition) {
+                                                                      controllerPomodoro.addListener(() {
+                                                                        if (controllerPomodoro.isDismissed) {
+                                                                          pomodoroCount++;
+                                                                          if (pomodoroCount == 4) {
+                                                                            toLongBreak();
+                                                                          }
+                                                                          else {
+                                                                            toShortBreak();
+                                                                          }
+                                                                        }
+                                                                      controllerShortBreak.addListener(() {
+                                                                        if (controllerShortBreak.isDismissed) {
+                                                                          toPomodoro();
+                                                                        }
+                                                                      });
+                                                                      controllerLongBreak.addListener(() {
+                                                                        if (controllerLongBreak.isDismissed) {
+                                                                          toPomodoro();
+                                                                        }
+                                                                      });
+                                                                      });
+                                                                    }
+                                                                  },);
+                                                                }
+                                                                ),
+                                                            ),
+                                                          ],
+                                                        ),
+                                                      ),
+                                                    ),
+                                                  ),
+                                                ],
+                                              ),
+                                            ),
+                                          );
+                                        }
+                                      },
+                                      // onPressed: () {},
+                                      shape: const CircleBorder(),
+                                      fillColor: const Color.fromARGB(
+                                          255, 73, 75, 122),
+                                      child: Image.asset(
+                                        'lib/icons/edit_icon.png',
+                                        color: Colors.white,
+                                        scale: 4,
+                                      ),
+                                    ),
+                                  ),
+                                ],
+                              ),
+                            ),
+                          ],
+                        ),
+                      ],
+                    ),
+                  ),
+                )
+              ],
+            ),
+          ),
+        ],
+      ),
+      floatingActionButton: FloatingActionButton(
+        onPressed: () {},
+        child: GestureDetector(
+          onTap: () {
+            if (controllerPomodoro.isAnimating) {
+              controllerPomodoro.stop();
+              setState(() {
+                isPlayingPomodoro = false;
+              });
+            }
+            if (controllerShortBreak.isAnimating) {
+              controllerShortBreak.stop();
+              setState(() {
+                isPlayingShortBreak = false;
+              });
+            }
+            if (controllerLongBreak.isAnimating) {
+              controllerLongBreak.stop();
+              setState(() {
+                isPlayingLongBreak = false;
+              });
+            } else {
+              controllerPomodoro.reverse(
+                  from: controllerPomodoro.value == 0.0
+                      ? 1.0
+                      : controllerPomodoro.value);
+              controllerShortBreak.reverse(
+                  from: controllerShortBreak.value == 0.0
+                      ? 1.0
+                      : controllerShortBreak.value);
+              controllerLongBreak.reverse(
+                  from: controllerLongBreak.value == 0.0
+                      ? 1.0
+                      : controllerLongBreak.value);
+              setState(() {
+                isPlayingPomodoro = true;
+                isPlayingShortBreak = true;
+                isPlayingLongBreak = true;
+              });
+            }
+          },
+          child: CircleAvatar(
+            radius: 30,
+            child: Container(
+              decoration: BoxDecoration(
+                shape: BoxShape.circle,
+                gradient: LinearGradient(
+                  colors: List<Color>.from([
+                    const Color.fromARGB(255, 255, 0, 255),
+                    const Color.fromARGB(255, 255, 43, 121),
+                  ]),
+                  begin: Alignment.topLeft,
+                  end: Alignment.bottomRight,
+                  transform: const GradientRotation(0.402),
+                ),
+              ),
+              child: isPlayingPomodoro == true
+                  ? Image.asset(
+                      "lib/icons/pause_icon.png",
+                      scale: 1,
+                    )
+                  : Image.asset(
+                      "lib/icons/play_icon.png",
+                      scale: 1,
+                    ),
+            ),
+          ),
+        ),
+      ), // This trailing comma makes auto-formatting nicer for build methods.
+    );
+  }
+}
diff --git a/Challenge7/pomodoro_self_trial.iml b/Challenge7/pomodoro_self_trial.iml
new file mode 100644
index 0000000000000000000000000000000000000000..3ae446d16bd7f1a461113c062b10ba187b4f3649
--- /dev/null
+++ b/Challenge7/pomodoro_self_trial.iml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="JAVA_MODULE" version="4">
+  <component name="NewModuleRootManager" inherit-compiler-output="true">
+    <exclude-output />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/lib" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
+      <excludeFolder url="file://$MODULE_DIR$/.dart_tool" />
+      <excludeFolder url="file://$MODULE_DIR$/.idea" />
+      <excludeFolder url="file://$MODULE_DIR$/.pub" />
+      <excludeFolder url="file://$MODULE_DIR$/build" />
+    </content>
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" name="Dart SDK" level="project" />
+    <orderEntry type="library" name="Flutter Plugins" level="project" />
+    <orderEntry type="library" name="Dart Packages" level="project" />
+  </component>
+</module>
\ No newline at end of file
diff --git a/Challenge7/pubspec.lock b/Challenge7/pubspec.lock
new file mode 100644
index 0000000000000000000000000000000000000000..609dbbc71acba592e2c81ded1eced01640e6c85f
--- /dev/null
+++ b/Challenge7/pubspec.lock
@@ -0,0 +1,315 @@
+# Generated by pub
+# See https://dart.dev/tools/pub/glossary#lockfile
+packages:
+  async:
+    dependency: transitive
+    description:
+      name: async
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "2.9.0"
+  boolean_selector:
+    dependency: transitive
+    description:
+      name: boolean_selector
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "2.1.0"
+  characters:
+    dependency: transitive
+    description:
+      name: characters
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "1.2.1"
+  clock:
+    dependency: transitive
+    description:
+      name: clock
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "1.1.1"
+  collection:
+    dependency: transitive
+    description:
+      name: collection
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "1.16.0"
+  crypto:
+    dependency: transitive
+    description:
+      name: crypto
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "3.0.2"
+  cupertino_icons:
+    dependency: "direct main"
+    description:
+      name: cupertino_icons
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "1.0.5"
+  dynamic_slider:
+    dependency: "direct main"
+    description:
+      name: dynamic_slider
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "0.1.0-dev.3"
+  fake_async:
+    dependency: transitive
+    description:
+      name: fake_async
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "1.3.1"
+  ffi:
+    dependency: transitive
+    description:
+      name: ffi
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "2.0.1"
+  file:
+    dependency: transitive
+    description:
+      name: file
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "6.1.4"
+  flutter:
+    dependency: "direct main"
+    description: flutter
+    source: sdk
+    version: "0.0.0"
+  flutter_lints:
+    dependency: "direct dev"
+    description:
+      name: flutter_lints
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "2.0.1"
+  flutter_test:
+    dependency: "direct dev"
+    description: flutter
+    source: sdk
+    version: "0.0.0"
+  google_fonts:
+    dependency: "direct main"
+    description:
+      name: google_fonts
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "2.3.3"
+  http:
+    dependency: transitive
+    description:
+      name: http
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "0.13.5"
+  http_parser:
+    dependency: transitive
+    description:
+      name: http_parser
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "4.0.2"
+  iosstyleswitch:
+    dependency: "direct main"
+    description:
+      name: iosstyleswitch
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "0.0.4"
+  lints:
+    dependency: transitive
+    description:
+      name: lints
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "2.0.1"
+  matcher:
+    dependency: transitive
+    description:
+      name: matcher
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "0.12.12"
+  material_color_utilities:
+    dependency: transitive
+    description:
+      name: material_color_utilities
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "0.1.5"
+  meta:
+    dependency: transitive
+    description:
+      name: meta
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "1.8.0"
+  path:
+    dependency: transitive
+    description:
+      name: path
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "1.8.2"
+  path_provider:
+    dependency: transitive
+    description:
+      name: path_provider
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "2.0.11"
+  path_provider_android:
+    dependency: transitive
+    description:
+      name: path_provider_android
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "2.0.21"
+  path_provider_ios:
+    dependency: transitive
+    description:
+      name: path_provider_ios
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "2.0.11"
+  path_provider_linux:
+    dependency: transitive
+    description:
+      name: path_provider_linux
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "2.1.7"
+  path_provider_macos:
+    dependency: transitive
+    description:
+      name: path_provider_macos
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "2.0.6"
+  path_provider_platform_interface:
+    dependency: transitive
+    description:
+      name: path_provider_platform_interface
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "2.0.5"
+  path_provider_windows:
+    dependency: transitive
+    description:
+      name: path_provider_windows
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "2.1.3"
+  percent_indicator:
+    dependency: "direct main"
+    description:
+      name: percent_indicator
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "4.2.2"
+  platform:
+    dependency: transitive
+    description:
+      name: platform
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "3.1.0"
+  plugin_platform_interface:
+    dependency: transitive
+    description:
+      name: plugin_platform_interface
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "2.1.3"
+  process:
+    dependency: transitive
+    description:
+      name: process
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "4.2.4"
+  sky_engine:
+    dependency: transitive
+    description: flutter
+    source: sdk
+    version: "0.0.99"
+  source_span:
+    dependency: transitive
+    description:
+      name: source_span
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "1.9.0"
+  stack_trace:
+    dependency: transitive
+    description:
+      name: stack_trace
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "1.10.0"
+  stream_channel:
+    dependency: transitive
+    description:
+      name: stream_channel
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "2.1.0"
+  string_scanner:
+    dependency: transitive
+    description:
+      name: string_scanner
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "1.1.1"
+  term_glyph:
+    dependency: transitive
+    description:
+      name: term_glyph
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "1.2.1"
+  test_api:
+    dependency: transitive
+    description:
+      name: test_api
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "0.4.12"
+  typed_data:
+    dependency: transitive
+    description:
+      name: typed_data
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "1.3.1"
+  vector_math:
+    dependency: transitive
+    description:
+      name: vector_math
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "2.1.2"
+  win32:
+    dependency: transitive
+    description:
+      name: win32
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "3.0.1"
+  xdg_directories:
+    dependency: transitive
+    description:
+      name: xdg_directories
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "0.2.0+2"
+sdks:
+  dart: ">=2.18.2 <3.0.0"
+  flutter: ">=3.0.0"
diff --git a/Challenge7/pubspec.yaml b/Challenge7/pubspec.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..675860bd9cb9a3e383be4f1864c65f00a6ef37d4
--- /dev/null
+++ b/Challenge7/pubspec.yaml
@@ -0,0 +1,107 @@
+name: pomodoro_self_trial
+description: A new Flutter project.
+
+# The following line prevents the package from being accidentally published to
+# pub.dev using `flutter pub publish`. This is preferred for private packages.
+publish_to: 'none' # Remove this line if you wish to publish to pub.dev
+
+# The following defines the version and build number for your application.
+# A version number is three numbers separated by dots, like 1.2.43
+# followed by an optional build number separated by a +.
+# Both the version and the builder number may be overridden in flutter
+# build by specifying --build-name and --build-number, respectively.
+# In Android, build-name is used as versionName while build-number used as versionCode.
+# Read more about Android versioning at https://developer.android.com/studio/publish/versioning
+# In iOS, build-name is used as CFBundleShortVersionString while build-number is used as CFBundleVersion.
+# Read more about iOS versioning at
+# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
+# In Windows, build-name is used as the major, minor, and patch parts
+# of the product and file versions while build-number is used as the build suffix.
+version: 1.0.0+1
+
+environment:
+  sdk: '>=2.18.2 <3.0.0'
+
+# Dependencies specify other packages that your package needs in order to work.
+# To automatically upgrade your package dependencies to the latest versions
+# consider running `flutter pub upgrade --major-versions`. Alternatively,
+# dependencies can be manually updated by changing the version numbers below to
+# the latest version available on pub.dev. To see which dependencies have newer
+# versions available, run `flutter pub outdated`.
+dependencies:
+  flutter:
+    sdk: flutter
+
+
+  # The following adds the Cupertino Icons font to your application.
+  # Use with the CupertinoIcons class for iOS style icons.
+  cupertino_icons: ^1.0.2
+  percent_indicator: ^4.2.2
+  google_fonts: ^2.1.0
+  iosstyleswitch: ^0.0.4
+  dynamic_slider: ^0.1.0-dev.3
+
+dev_dependencies:
+  flutter_test:
+    sdk: flutter
+
+  # The "flutter_lints" package below contains a set of recommended lints to
+  # encourage good coding practices. The lint set provided by the package is
+  # activated in the `analysis_options.yaml` file located at the root of your
+  # package. See that file for information about deactivating specific lint
+  # rules and activating additional ones.
+  flutter_lints: ^2.0.0
+  
+
+# For information on the generic Dart part of this file, see the
+# following page: https://dart.dev/tools/pub/pubspec
+
+# The following section is specific to Flutter packages.
+flutter:
+
+  # The following line ensures that the Material Icons font is
+  # included with your application, so that you can use the icons in
+  # the material Icons class.
+  uses-material-design: true
+
+  # To add assets to your application, add an assets section, like this:
+  # assets:
+  #   - images/a_dot_burr.jpeg
+  #   - images/a_dot_ham.jpeg
+  assets:
+    - lib/icons/
+
+  # An image asset can refer to one or more resolution-specific "variants", see
+  # https://flutter.dev/assets-and-images/#resolution-aware
+
+  # For details regarding adding assets from package dependencies, see
+  # https://flutter.dev/assets-and-images/#from-packages
+
+  # To add custom fonts to your application, add a fonts section here,
+  # in this "flutter" section. Each entry in this list should have a
+  # "family" key with the font family name, and a "fonts" key with a
+  # list giving the asset and other descriptors for the font. For
+  # example:
+  # fonts:
+  #   - family: Schyler
+  #     fonts:
+  #       - asset: fonts/Schyler-Regular.ttf
+  #       - asset: fonts/Schyler-Italic.ttf
+  #         style: italic
+  #   - family: Trajan Pro
+  #     fonts:
+  #       - asset: fonts/TrajanPro.ttf
+  #       - asset: fonts/TrajanPro_Bold.ttf
+  #         weight: 700
+  #
+  # For details regarding fonts from package dependencies,
+  # see https://flutter.dev/custom-fonts/#from-packages
+
+  fonts:
+    - family: SF Pro
+      fonts:
+        - asset: lib/fonts/SF Pro/SF-Pro-Text-Bold.otf
+
+    - family: Google Sans
+      fonts:
+        - asset: lib/fonts/Google Sans/GoogleSans-Bold.ttf