From 6b60ab008801d067a9e3e022a2dbaaafd66fb74a Mon Sep 17 00:00:00 2001
From: Florian Schindler <florianschndlr@gmail.com>
Date: Tue, 27 Jun 2023 17:19:12 +0200
Subject: [PATCH] added rive and rive animation to the project and onboarding

---
 trackeroo/android/app/build.gradle            |   1 +
 trackeroo/assets/rive/piggy.riv               | Bin 0 -> 1451 bytes
 trackeroo/lib/app_scaffold.dart               |   4 +-
 .../utils/onboarding/ob_categories.dart       |  21 ++++---
 .../frontend/utils/onboarding/ob_details.dart |  21 ++++---
 .../frontend/utils/onboarding/ob_home.dart    |  21 ++++---
 .../utils/onboarding/ob_trackeroo.dart        |  54 ++++++++++++++++--
 .../Flutter/GeneratedPluginRegistrant.swift   |   2 +
 trackeroo/pubspec.lock                        |  29 ++++++++++
 trackeroo/pubspec.yaml                        |   6 +-
 .../flutter/generated_plugin_registrant.cc    |   3 +
 .../windows/flutter/generated_plugins.cmake   |   1 +
 12 files changed, 132 insertions(+), 31 deletions(-)
 create mode 100644 trackeroo/assets/rive/piggy.riv

diff --git a/trackeroo/android/app/build.gradle b/trackeroo/android/app/build.gradle
index d044c0f..896cb48 100644
--- a/trackeroo/android/app/build.gradle
+++ b/trackeroo/android/app/build.gradle
@@ -28,6 +28,7 @@ apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 android {
     compileSdkVersion flutter.compileSdkVersion
     ndkVersion flutter.ndkVersion
+    ndkVersion "25.1.8937393"
 
     compileOptions {
         sourceCompatibility JavaVersion.VERSION_1_8
diff --git a/trackeroo/assets/rive/piggy.riv b/trackeroo/assets/rive/piggy.riv
new file mode 100644
index 0000000000000000000000000000000000000000..fb164d47a191d21d69bea50ade5ca43d43a17993
GIT binary patch
literal 1451
zcma)4+e;K-6hAZW;I2C3PRz1sx^CfQ<)xNIL`%n+>1LUUrBM{L>F&BEYTJfs57|9U
zD!R}edI%~ph){Z1sZ}9-sOS&qL4$5!Qg(TW!p=7{?xx#A1LxzM@B5we`<-*9rlM|j
zBE0O(yiH9|Kt4NAi2y%UGdb|ilv3qwbIQTc?iNq50cew@I^cJ%4YnL;Wq_riL*?l6
z&s0b-CEx=?rLLEA-PW69CnSEfEF`fv7B&uZ4QD5Z!Nkx)`LTZ4Mh=+Ah+^f2`e{gD
zXlr=nmc-xfxhApZ%C|BinOVq1Q6#^2eul(eeScr(?)4v5AdxW(a^oi1Ho7mQWYyIk
zR<UqS6mGrp)i3eeuYD_HBP+XxW^$6_a~4N)*j+YC=FA_DD5!%IUT>ICY!!`R1q&|`
zpA5c3#U@LQw?5=)_BVM^{I9JS%J^-HMPlj80}2-@{t!W3yl}|UrrJ*Z$WyZb4wCex
zVo&#g-ted7YKiUtvQy!zgBhd^As(J9KDaln!($X<;i(AM+1pDf?D08yQ3}2K@u}aW
zjdWp4?H<+kuy=|KK3~K=7vL(B)RsWA({Jn&$S%WGkH{`f<b}yhE#Grpw7%)fmw0lp
z0G&nLrR=UDtmzOgWLp#)Ik0Ad82+q@by$!04N5#Y*gU%QG1uvB9YFYkS@31znHS^J
zn73SXxm*AOL!&WhX0&894vj|>(CldGXb!XmXaE_IRb;AYX!5S0Ak9rddZ85@tLW9P
zH7HR6hpGoY-$@dzjJ>26^8W(5-TUVN)7+U@l|?XxH9J%cI3siN$bgFcW-=pRQ=qj3
z$0_|=Mv}%n^8GZao~i`~m7oPX&K)H$_LxA2y5#R5UkhG5?;$X^7Q}0Hs1m9)YAKpv
zZ3tE98r<zOZrlKLiAGUfqA@mI;=1vU|B>kP`C<~|=dMdMYR!>oa1)7|tB)QRs#;^c
zr0MQcywz8tb(j;oT{<&10$Dy2NX8QNUt`u9wO`$#S~O^H>7Z&5_PuH+u1+|rL<u#Q
z5E=l3@ZueU)(N#Lg+-~GL!OY=xzSVK7-;r7T~N|ZS+)cNe!n+}QE@kwSm|lk{4ywq
e(#sSD@)gQ-l}foyHQ>KQ0&)$+qhZwz^!@-gh*=&0

literal 0
HcmV?d00001

diff --git a/trackeroo/lib/app_scaffold.dart b/trackeroo/lib/app_scaffold.dart
index c5f3f88..c701096 100644
--- a/trackeroo/lib/app_scaffold.dart
+++ b/trackeroo/lib/app_scaffold.dart
@@ -64,8 +64,8 @@ class _AppScaffoldState extends State<AppScaffold> {
               label: 'Home'
             ),
             NavigationDestination(
-              icon: Icon(Icons.bar_chart_rounded),
-              selectedIcon: Icon(Icons.bar_chart_rounded),
+              icon: Icon(Icons.bar_chart),
+              selectedIcon: Icon(Icons.bar_chart),
               label: 'Details'
             ),
             NavigationDestination(
diff --git a/trackeroo/lib/frontend/utils/onboarding/ob_categories.dart b/trackeroo/lib/frontend/utils/onboarding/ob_categories.dart
index ef8c659..037f644 100644
--- a/trackeroo/lib/frontend/utils/onboarding/ob_categories.dart
+++ b/trackeroo/lib/frontend/utils/onboarding/ob_categories.dart
@@ -11,15 +11,22 @@ class OnboardingCategories extends StatelessWidget {
         child: Column(
           crossAxisAlignment: CrossAxisAlignment.start,
           children: [
-            Text(
-              'Categories',
-              style: TextStyle(
-                fontSize: 40.0,
-                fontWeight: FontWeight.w300
-              ),
+            Row(
+              children: [
+                Icon(Icons.category_rounded, size: 40.0),
+                SizedBox(width: 20.0),
+                Text(
+                  'Categories',
+                  style: TextStyle(
+                    fontSize: 40.0,
+                    fontWeight: FontWeight.w300
+                  ),
+                ),
+              ],
             ),
+            SizedBox(height: 20.0),
             Text(
-              'shows budget and lets you create and manage categories',
+              'Edit existing categories or create new ones. What ever you need in order to categorize and sort your expenditures. ',
               style: TextStyle(
                 fontSize: 16.0
               ),
diff --git a/trackeroo/lib/frontend/utils/onboarding/ob_details.dart b/trackeroo/lib/frontend/utils/onboarding/ob_details.dart
index 695e030..070d4de 100644
--- a/trackeroo/lib/frontend/utils/onboarding/ob_details.dart
+++ b/trackeroo/lib/frontend/utils/onboarding/ob_details.dart
@@ -11,15 +11,22 @@ class OnboardingDetails extends StatelessWidget {
         child: Column(
           crossAxisAlignment: CrossAxisAlignment.start,
           children: [
-            Text(
-              'Details',
-              style: TextStyle(
-                fontSize: 40.0,
-                fontWeight: FontWeight.w300
-              ),
+            Row(
+              children: [
+                Icon(Icons.bar_chart, size: 40.0),
+                SizedBox(width: 20.0),
+                Text(
+                  'Details',
+                  style: TextStyle(
+                    fontSize: 40.0,
+                    fontWeight: FontWeight.w300
+                  ),
+                ),
+              ],
             ),
+            SizedBox(height: 20.0),
             Text(
-              'gives in depth information',
+              'Deep dive into all of your transactions and analyze your spending. ',
               style: TextStyle(
                 fontSize: 16.0
               ),
diff --git a/trackeroo/lib/frontend/utils/onboarding/ob_home.dart b/trackeroo/lib/frontend/utils/onboarding/ob_home.dart
index b80dc57..913d501 100644
--- a/trackeroo/lib/frontend/utils/onboarding/ob_home.dart
+++ b/trackeroo/lib/frontend/utils/onboarding/ob_home.dart
@@ -11,15 +11,22 @@ class OnboardingHome extends StatelessWidget {
         child: Column(
           crossAxisAlignment: CrossAxisAlignment.start,
           children: [
-            Text(
-              'Home',
-              style: TextStyle(
-                fontSize: 40.0,
-                fontWeight: FontWeight.w300
-              ),
+            Row(
+              children: [
+                Icon(Icons.home_rounded, size: 40.0),
+                SizedBox(width: 20.0),
+                Text(
+                  'Home',
+                  style: TextStyle(
+                    fontSize: 40.0,
+                    fontWeight: FontWeight.w300
+                  ),
+                ),
+              ],
             ),
+            SizedBox(height: 20.0),
             Text(
-              'gives an overview',
+              'Get an overview of your balance and average spending, aswell as your latest transactions.',
               style: TextStyle(
                 fontSize: 16.0
               ),
diff --git a/trackeroo/lib/frontend/utils/onboarding/ob_trackeroo.dart b/trackeroo/lib/frontend/utils/onboarding/ob_trackeroo.dart
index 58e4d5f..a82f035 100644
--- a/trackeroo/lib/frontend/utils/onboarding/ob_trackeroo.dart
+++ b/trackeroo/lib/frontend/utils/onboarding/ob_trackeroo.dart
@@ -1,29 +1,73 @@
+// ignore_for_file: must_be_immutable
+
 import 'package:flutter/material.dart';
+import 'package:rive/rive.dart';
 
-class OnboardingTrackeroo extends StatelessWidget {
+class OnboardingTrackeroo extends StatefulWidget {
   const OnboardingTrackeroo({super.key});
 
+  @override
+  State<OnboardingTrackeroo> createState() => _OnboardingTrackerooState();
+}
+
+class _OnboardingTrackerooState extends State<OnboardingTrackeroo> {
+  SMITrigger? _trigger;
+
+  void _onRiveInit(Artboard artboard) {
+    final controller = StateMachineController.fromArtboard(artboard, 'State Machine 1')!;
+    artboard.addController(controller);
+    _trigger = controller.findInput<bool>('Trigger 1') as SMITrigger;
+    Future.delayed(const Duration(milliseconds: 1000), () {
+      _hitTrigger();
+    });
+  }
+
+  void _hitTrigger() => _trigger?.fire();
+
   @override
   Widget build(BuildContext context) {
-    return const SafeArea(
+    return SafeArea(
       child: Padding(
-        padding: EdgeInsets.all(20.0),
+        padding: const EdgeInsets.all(20.0),
         child: Column(
           crossAxisAlignment: CrossAxisAlignment.start,
           children: [
-            Text(
+            const Text(
               'Trackeroo',
               style: TextStyle(
                 fontSize: 40.0,
                 fontWeight: FontWeight.w300
               ),
             ),
-            Text(
+            const Text(
               'enables you to tackle your finances and keep an eye on your spending.',
               style: TextStyle(
                 fontSize: 16.0
               ),
             ),
+            GestureDetector(
+              onTap: _hitTrigger,
+              child: Center(
+                child: SizedBox(
+                  width: 300.0,
+                  height: 500.0,
+                  child: RiveAnimation.asset(
+                    'assets/rive/piggy.riv',
+                    onInit: _onRiveInit,
+                    animations: const ['Coinflip'],
+                    fit: BoxFit.contain
+                  ),
+                ),
+              ),
+            ),
+            const Center(
+              child: Text(
+                '(you are allowed to pet the pig)',
+                style: TextStyle(
+                  fontSize: 10.0
+                ),
+              ),
+            )
           ]
         ),
       ),
diff --git a/trackeroo/macos/Flutter/GeneratedPluginRegistrant.swift b/trackeroo/macos/Flutter/GeneratedPluginRegistrant.swift
index e777c67..7f14ccd 100644
--- a/trackeroo/macos/Flutter/GeneratedPluginRegistrant.swift
+++ b/trackeroo/macos/Flutter/GeneratedPluginRegistrant.swift
@@ -6,7 +6,9 @@ import FlutterMacOS
 import Foundation
 
 import path_provider_foundation
+import rive_common
 
 func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
   PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
+  RivePlugin.register(with: registry.registrar(forPlugin: "RivePlugin"))
 }
diff --git a/trackeroo/pubspec.lock b/trackeroo/pubspec.lock
index 1091aee..4a35c63 100644
--- a/trackeroo/pubspec.lock
+++ b/trackeroo/pubspec.lock
@@ -251,6 +251,11 @@ packages:
     description: flutter
     source: sdk
     version: "0.0.0"
+  flutter_web_plugins:
+    dependency: transitive
+    description: flutter
+    source: sdk
+    version: "0.0.0"
   frontend_server_client:
     dependency: transitive
     description:
@@ -307,6 +312,14 @@ packages:
       url: "https://pub.dev"
     source: hosted
     version: "2.0.0"
+  http:
+    dependency: transitive
+    description:
+      name: http
+      sha256: "5895291c13fa8a3bd82e76d5627f69e0d85ca6a30dcac95c4ea19a5d555879c2"
+      url: "https://pub.dev"
+    source: hosted
+    version: "0.13.6"
   http_multi_server:
     dependency: transitive
     description:
@@ -507,6 +520,22 @@ packages:
       url: "https://pub.dev"
     source: hosted
     version: "1.2.3"
+  rive:
+    dependency: "direct main"
+    description:
+      name: rive
+      sha256: "55e1f8bf249444545a7c832830d2bbb9adae759193fb879294bc6018b9f0eedd"
+      url: "https://pub.dev"
+    source: hosted
+    version: "0.11.3"
+  rive_common:
+    dependency: transitive
+    description:
+      name: rive_common
+      sha256: "7e17937b790bb2f631767b3d505da8c298309c0a6ab08cd317fa6fe081ed5b63"
+      url: "https://pub.dev"
+    source: hosted
+    version: "0.0.10"
   shelf:
     dependency: transitive
     description:
diff --git a/trackeroo/pubspec.yaml b/trackeroo/pubspec.yaml
index 5694bfd..f5c5761 100644
--- a/trackeroo/pubspec.yaml
+++ b/trackeroo/pubspec.yaml
@@ -41,6 +41,7 @@ dependencies:
   hive_generator: ^2.0.0
   get_it: ^7.6.0
   flutter_colorpicker: ^1.0.3
+  rive: ^0.11.3
 
 dev_dependencies:
   flutter_test:
@@ -66,9 +67,8 @@ flutter:
   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:
+    - assets/rive/
 
   # An image asset can refer to one or more resolution-specific "variants", see
   # https://flutter.dev/assets-and-images/#resolution-aware
diff --git a/trackeroo/windows/flutter/generated_plugin_registrant.cc b/trackeroo/windows/flutter/generated_plugin_registrant.cc
index 8b6d468..829b2da 100644
--- a/trackeroo/windows/flutter/generated_plugin_registrant.cc
+++ b/trackeroo/windows/flutter/generated_plugin_registrant.cc
@@ -6,6 +6,9 @@
 
 #include "generated_plugin_registrant.h"
 
+#include <rive_common/rive_plugin.h>
 
 void RegisterPlugins(flutter::PluginRegistry* registry) {
+  RivePluginRegisterWithRegistrar(
+      registry->GetRegistrarForPlugin("RivePlugin"));
 }
diff --git a/trackeroo/windows/flutter/generated_plugins.cmake b/trackeroo/windows/flutter/generated_plugins.cmake
index b93c4c3..ea49fcc 100644
--- a/trackeroo/windows/flutter/generated_plugins.cmake
+++ b/trackeroo/windows/flutter/generated_plugins.cmake
@@ -3,6 +3,7 @@
 #
 
 list(APPEND FLUTTER_PLUGIN_LIST
+  rive_common
 )
 
 list(APPEND FLUTTER_FFI_PLUGIN_LIST
-- 
GitLab