bug fix
parent
c9d65c04f7
commit
8a3d6808a3
|
@ -7,6 +7,12 @@
|
||||||
"packageUri": "lib/",
|
"packageUri": "lib/",
|
||||||
"languageVersion": "2.17"
|
"languageVersion": "2.17"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "adaptive_dialog",
|
||||||
|
"rootUri": "file:///Users/bogdan/.pub-cache/hosted/pub.dev/adaptive_dialog-1.8.3+1",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "2.17"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "analyzer",
|
"name": "analyzer",
|
||||||
"rootUri": "file:///Users/bogdan/.pub-cache/hosted/pub.dev/analyzer-5.11.1",
|
"rootUri": "file:///Users/bogdan/.pub-cache/hosted/pub.dev/analyzer-5.11.1",
|
||||||
|
@ -19,6 +25,12 @@
|
||||||
"packageUri": "lib/",
|
"packageUri": "lib/",
|
||||||
"languageVersion": "2.16"
|
"languageVersion": "2.16"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "animations",
|
||||||
|
"rootUri": "file:///Users/bogdan/.pub-cache/hosted/pub.dev/animations-2.0.7",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "2.12"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "args",
|
"name": "args",
|
||||||
"rootUri": "file:///Users/bogdan/.pub-cache/hosted/pub.dev/args-2.4.1",
|
"rootUri": "file:///Users/bogdan/.pub-cache/hosted/pub.dev/args-2.4.1",
|
||||||
|
@ -49,6 +61,18 @@
|
||||||
"packageUri": "lib/",
|
"packageUri": "lib/",
|
||||||
"languageVersion": "2.17"
|
"languageVersion": "2.17"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "bs_flutter_modal",
|
||||||
|
"rootUri": "file:///Users/bogdan/.pub-cache/hosted/pub.dev/bs_flutter_modal-1.0.6",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "2.12"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "bs_flutter_utils",
|
||||||
|
"rootUri": "file:///Users/bogdan/.pub-cache/hosted/pub.dev/bs_flutter_utils-1.0.2",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "2.12"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "build",
|
"name": "build",
|
||||||
"rootUri": "file:///Users/bogdan/.pub-cache/hosted/pub.dev/build-2.3.1",
|
"rootUri": "file:///Users/bogdan/.pub-cache/hosted/pub.dev/build-2.3.1",
|
||||||
|
@ -157,6 +181,12 @@
|
||||||
"packageUri": "lib/",
|
"packageUri": "lib/",
|
||||||
"languageVersion": "2.19"
|
"languageVersion": "2.19"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "dynamic_color",
|
||||||
|
"rootUri": "file:///Users/bogdan/.pub-cache/hosted/pub.dev/dynamic_color-1.6.5",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "2.16"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "empty_widget",
|
"name": "empty_widget",
|
||||||
"rootUri": "file:///Users/bogdan/.pub-cache/hosted/pub.dev/empty_widget-0.0.5",
|
"rootUri": "file:///Users/bogdan/.pub-cache/hosted/pub.dev/empty_widget-0.0.5",
|
||||||
|
@ -313,6 +343,12 @@
|
||||||
"packageUri": "lib/",
|
"packageUri": "lib/",
|
||||||
"languageVersion": "2.12"
|
"languageVersion": "2.12"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "intersperse",
|
||||||
|
"rootUri": "file:///Users/bogdan/.pub-cache/hosted/pub.dev/intersperse-2.0.0",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "2.12"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "intl",
|
"name": "intl",
|
||||||
"rootUri": "file:///Users/bogdan/.pub-cache/hosted/pub.dev/intl-0.17.0",
|
"rootUri": "file:///Users/bogdan/.pub-cache/hosted/pub.dev/intl-0.17.0",
|
||||||
|
@ -349,6 +385,12 @@
|
||||||
"packageUri": "lib/",
|
"packageUri": "lib/",
|
||||||
"languageVersion": "2.18"
|
"languageVersion": "2.18"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "macos_ui",
|
||||||
|
"rootUri": "file:///Users/bogdan/.pub-cache/hosted/pub.dev/macos_ui-1.12.2",
|
||||||
|
"packageUri": "lib/",
|
||||||
|
"languageVersion": "2.17"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "matcher",
|
"name": "matcher",
|
||||||
"rootUri": "file:///Users/bogdan/.pub-cache/hosted/pub.dev/matcher-0.12.13",
|
"rootUri": "file:///Users/bogdan/.pub-cache/hosted/pub.dev/matcher-0.12.13",
|
||||||
|
@ -626,7 +668,7 @@
|
||||||
"languageVersion": "2.19"
|
"languageVersion": "2.19"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"generated": "2023-06-02T22:48:24.172799Z",
|
"generated": "2023-06-08T14:59:35.567465Z",
|
||||||
"generator": "pub",
|
"generator": "pub",
|
||||||
"generatorVersion": "2.19.6"
|
"generatorVersion": "2.19.6"
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,10 @@ _fe_analyzer_shared
|
||||||
2.17
|
2.17
|
||||||
file:///Users/bogdan/.pub-cache/hosted/pub.dev/_fe_analyzer_shared-59.0.0/
|
file:///Users/bogdan/.pub-cache/hosted/pub.dev/_fe_analyzer_shared-59.0.0/
|
||||||
file:///Users/bogdan/.pub-cache/hosted/pub.dev/_fe_analyzer_shared-59.0.0/lib/
|
file:///Users/bogdan/.pub-cache/hosted/pub.dev/_fe_analyzer_shared-59.0.0/lib/
|
||||||
|
adaptive_dialog
|
||||||
|
2.17
|
||||||
|
file:///Users/bogdan/.pub-cache/hosted/pub.dev/adaptive_dialog-1.8.3+1/
|
||||||
|
file:///Users/bogdan/.pub-cache/hosted/pub.dev/adaptive_dialog-1.8.3+1/lib/
|
||||||
analyzer
|
analyzer
|
||||||
2.19
|
2.19
|
||||||
file:///Users/bogdan/.pub-cache/hosted/pub.dev/analyzer-5.11.1/
|
file:///Users/bogdan/.pub-cache/hosted/pub.dev/analyzer-5.11.1/
|
||||||
|
@ -10,6 +14,10 @@ animate_gradient
|
||||||
2.16
|
2.16
|
||||||
file:///Users/bogdan/.pub-cache/hosted/pub.dev/animate_gradient-0.0.2/
|
file:///Users/bogdan/.pub-cache/hosted/pub.dev/animate_gradient-0.0.2/
|
||||||
file:///Users/bogdan/.pub-cache/hosted/pub.dev/animate_gradient-0.0.2/lib/
|
file:///Users/bogdan/.pub-cache/hosted/pub.dev/animate_gradient-0.0.2/lib/
|
||||||
|
animations
|
||||||
|
2.12
|
||||||
|
file:///Users/bogdan/.pub-cache/hosted/pub.dev/animations-2.0.7/
|
||||||
|
file:///Users/bogdan/.pub-cache/hosted/pub.dev/animations-2.0.7/lib/
|
||||||
args
|
args
|
||||||
2.18
|
2.18
|
||||||
file:///Users/bogdan/.pub-cache/hosted/pub.dev/args-2.4.1/
|
file:///Users/bogdan/.pub-cache/hosted/pub.dev/args-2.4.1/
|
||||||
|
@ -30,6 +38,14 @@ boolean_selector
|
||||||
2.17
|
2.17
|
||||||
file:///Users/bogdan/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/
|
file:///Users/bogdan/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/
|
||||||
file:///Users/bogdan/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/
|
file:///Users/bogdan/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1/lib/
|
||||||
|
bs_flutter_modal
|
||||||
|
2.12
|
||||||
|
file:///Users/bogdan/.pub-cache/hosted/pub.dev/bs_flutter_modal-1.0.6/
|
||||||
|
file:///Users/bogdan/.pub-cache/hosted/pub.dev/bs_flutter_modal-1.0.6/lib/
|
||||||
|
bs_flutter_utils
|
||||||
|
2.12
|
||||||
|
file:///Users/bogdan/.pub-cache/hosted/pub.dev/bs_flutter_utils-1.0.2/
|
||||||
|
file:///Users/bogdan/.pub-cache/hosted/pub.dev/bs_flutter_utils-1.0.2/lib/
|
||||||
build
|
build
|
||||||
2.17
|
2.17
|
||||||
file:///Users/bogdan/.pub-cache/hosted/pub.dev/build-2.3.1/
|
file:///Users/bogdan/.pub-cache/hosted/pub.dev/build-2.3.1/
|
||||||
|
@ -102,6 +118,10 @@ dart_style
|
||||||
2.19
|
2.19
|
||||||
file:///Users/bogdan/.pub-cache/hosted/pub.dev/dart_style-2.3.1/
|
file:///Users/bogdan/.pub-cache/hosted/pub.dev/dart_style-2.3.1/
|
||||||
file:///Users/bogdan/.pub-cache/hosted/pub.dev/dart_style-2.3.1/lib/
|
file:///Users/bogdan/.pub-cache/hosted/pub.dev/dart_style-2.3.1/lib/
|
||||||
|
dynamic_color
|
||||||
|
2.16
|
||||||
|
file:///Users/bogdan/.pub-cache/hosted/pub.dev/dynamic_color-1.6.5/
|
||||||
|
file:///Users/bogdan/.pub-cache/hosted/pub.dev/dynamic_color-1.6.5/lib/
|
||||||
empty_widget
|
empty_widget
|
||||||
2.12
|
2.12
|
||||||
file:///Users/bogdan/.pub-cache/hosted/pub.dev/empty_widget-0.0.5/
|
file:///Users/bogdan/.pub-cache/hosted/pub.dev/empty_widget-0.0.5/
|
||||||
|
@ -190,6 +210,10 @@ http_parser
|
||||||
2.12
|
2.12
|
||||||
file:///Users/bogdan/.pub-cache/hosted/pub.dev/http_parser-4.0.2/
|
file:///Users/bogdan/.pub-cache/hosted/pub.dev/http_parser-4.0.2/
|
||||||
file:///Users/bogdan/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/
|
file:///Users/bogdan/.pub-cache/hosted/pub.dev/http_parser-4.0.2/lib/
|
||||||
|
intersperse
|
||||||
|
2.12
|
||||||
|
file:///Users/bogdan/.pub-cache/hosted/pub.dev/intersperse-2.0.0/
|
||||||
|
file:///Users/bogdan/.pub-cache/hosted/pub.dev/intersperse-2.0.0/lib/
|
||||||
intl
|
intl
|
||||||
2.12
|
2.12
|
||||||
file:///Users/bogdan/.pub-cache/hosted/pub.dev/intl-0.17.0/
|
file:///Users/bogdan/.pub-cache/hosted/pub.dev/intl-0.17.0/
|
||||||
|
@ -214,6 +238,10 @@ logging
|
||||||
2.18
|
2.18
|
||||||
file:///Users/bogdan/.pub-cache/hosted/pub.dev/logging-1.1.1/
|
file:///Users/bogdan/.pub-cache/hosted/pub.dev/logging-1.1.1/
|
||||||
file:///Users/bogdan/.pub-cache/hosted/pub.dev/logging-1.1.1/lib/
|
file:///Users/bogdan/.pub-cache/hosted/pub.dev/logging-1.1.1/lib/
|
||||||
|
macos_ui
|
||||||
|
2.17
|
||||||
|
file:///Users/bogdan/.pub-cache/hosted/pub.dev/macos_ui-1.12.2/
|
||||||
|
file:///Users/bogdan/.pub-cache/hosted/pub.dev/macos_ui-1.12.2/lib/
|
||||||
matcher
|
matcher
|
||||||
2.18
|
2.18
|
||||||
file:///Users/bogdan/.pub-cache/hosted/pub.dev/matcher-0.12.13/
|
file:///Users/bogdan/.pub-cache/hosted/pub.dev/matcher-0.12.13/
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"fluttertoast","path":"/Users/bogdan/.pub-cache/hosted/pub.dev/fluttertoast-8.2.2/","native_build":true,"dependencies":[]},{"name":"path_provider_foundation","path":"/Users/bogdan/.pub-cache/hosted/pub.dev/path_provider_foundation-2.2.2/","native_build":true,"dependencies":[]}],"android":[{"name":"fluttertoast","path":"/Users/bogdan/.pub-cache/hosted/pub.dev/fluttertoast-8.2.2/","native_build":true,"dependencies":[]},{"name":"path_provider_android","path":"/Users/bogdan/.pub-cache/hosted/pub.dev/path_provider_android-2.0.27/","native_build":true,"dependencies":[]}],"macos":[{"name":"path_provider_foundation","path":"/Users/bogdan/.pub-cache/hosted/pub.dev/path_provider_foundation-2.2.2/","native_build":true,"dependencies":[]}],"linux":[{"name":"path_provider_linux","path":"/Users/bogdan/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.10/","native_build":false,"dependencies":[]}],"windows":[{"name":"path_provider_windows","path":"/Users/bogdan/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.6/","native_build":false,"dependencies":[]}],"web":[{"name":"fluttertoast","path":"/Users/bogdan/.pub-cache/hosted/pub.dev/fluttertoast-8.2.2/","dependencies":[]}]},"dependencyGraph":[{"name":"fluttertoast","dependencies":[]},{"name":"path_provider","dependencies":["path_provider_android","path_provider_foundation","path_provider_linux","path_provider_windows"]},{"name":"path_provider_android","dependencies":[]},{"name":"path_provider_foundation","dependencies":[]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_windows","dependencies":[]}],"date_created":"2023-06-06 22:44:47.468267","version":"3.7.9"}
|
{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"bs_flutter_modal","path":"/Users/bogdan/.pub-cache/hosted/pub.dev/bs_flutter_modal-1.0.6/","native_build":true,"dependencies":["bs_flutter_utils"]},{"name":"bs_flutter_utils","path":"/Users/bogdan/.pub-cache/hosted/pub.dev/bs_flutter_utils-1.0.2/","native_build":true,"dependencies":[]},{"name":"fluttertoast","path":"/Users/bogdan/.pub-cache/hosted/pub.dev/fluttertoast-8.2.2/","native_build":true,"dependencies":[]},{"name":"path_provider_foundation","path":"/Users/bogdan/.pub-cache/hosted/pub.dev/path_provider_foundation-2.2.2/","native_build":true,"dependencies":[]}],"android":[{"name":"bs_flutter_modal","path":"/Users/bogdan/.pub-cache/hosted/pub.dev/bs_flutter_modal-1.0.6/","native_build":true,"dependencies":["bs_flutter_utils"]},{"name":"bs_flutter_utils","path":"/Users/bogdan/.pub-cache/hosted/pub.dev/bs_flutter_utils-1.0.2/","native_build":true,"dependencies":[]},{"name":"dynamic_color","path":"/Users/bogdan/.pub-cache/hosted/pub.dev/dynamic_color-1.6.5/","native_build":true,"dependencies":[]},{"name":"fluttertoast","path":"/Users/bogdan/.pub-cache/hosted/pub.dev/fluttertoast-8.2.2/","native_build":true,"dependencies":[]},{"name":"path_provider_android","path":"/Users/bogdan/.pub-cache/hosted/pub.dev/path_provider_android-2.0.27/","native_build":true,"dependencies":[]}],"macos":[{"name":"dynamic_color","path":"/Users/bogdan/.pub-cache/hosted/pub.dev/dynamic_color-1.6.5/","native_build":true,"dependencies":[]},{"name":"macos_ui","path":"/Users/bogdan/.pub-cache/hosted/pub.dev/macos_ui-1.12.2/","native_build":true,"dependencies":[]},{"name":"path_provider_foundation","path":"/Users/bogdan/.pub-cache/hosted/pub.dev/path_provider_foundation-2.2.2/","native_build":true,"dependencies":[]}],"linux":[{"name":"dynamic_color","path":"/Users/bogdan/.pub-cache/hosted/pub.dev/dynamic_color-1.6.5/","native_build":true,"dependencies":[]},{"name":"path_provider_linux","path":"/Users/bogdan/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.10/","native_build":false,"dependencies":[]}],"windows":[{"name":"dynamic_color","path":"/Users/bogdan/.pub-cache/hosted/pub.dev/dynamic_color-1.6.5/","native_build":true,"dependencies":[]},{"name":"path_provider_windows","path":"/Users/bogdan/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.6/","native_build":false,"dependencies":[]}],"web":[{"name":"bs_flutter_modal","path":"/Users/bogdan/.pub-cache/hosted/pub.dev/bs_flutter_modal-1.0.6/","dependencies":["bs_flutter_utils"]},{"name":"bs_flutter_utils","path":"/Users/bogdan/.pub-cache/hosted/pub.dev/bs_flutter_utils-1.0.2/","dependencies":[]},{"name":"fluttertoast","path":"/Users/bogdan/.pub-cache/hosted/pub.dev/fluttertoast-8.2.2/","dependencies":[]}]},"dependencyGraph":[{"name":"bs_flutter_modal","dependencies":["bs_flutter_utils"]},{"name":"bs_flutter_utils","dependencies":[]},{"name":"dynamic_color","dependencies":[]},{"name":"fluttertoast","dependencies":[]},{"name":"macos_ui","dependencies":[]},{"name":"path_provider","dependencies":["path_provider_android","path_provider_foundation","path_provider_linux","path_provider_windows"]},{"name":"path_provider_android","dependencies":[]},{"name":"path_provider_foundation","dependencies":[]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_windows","dependencies":[]}],"date_created":"2023-06-13 16:03:42.984433","version":"3.7.9"}
|
|
@ -0,0 +1,301 @@
|
||||||
|
import 'package:fl_chart/fl_chart.dart';
|
||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
import '../../config/statistics.dart';
|
||||||
|
import '../meal_page_text/secondary_big_text_component.dart';
|
||||||
|
import '../meal_page_text/secondary_text_component.dart';
|
||||||
|
import '../meal_page_text/title_component.dart';
|
||||||
|
|
||||||
|
class ChartComponent extends StatelessWidget {
|
||||||
|
const ChartComponent({Key? key}) : super(key: key);
|
||||||
|
|
||||||
|
BarTouchData get barTouchData => BarTouchData(
|
||||||
|
enabled: false,
|
||||||
|
touchTooltipData: BarTouchTooltipData(
|
||||||
|
tooltipBgColor: Colors.transparent,
|
||||||
|
tooltipPadding: EdgeInsets.zero,
|
||||||
|
tooltipMargin: 4,
|
||||||
|
getTooltipItem: (
|
||||||
|
BarChartGroupData group,
|
||||||
|
int groupIndex,
|
||||||
|
BarChartRodData rod,
|
||||||
|
int rodIndex,
|
||||||
|
) {
|
||||||
|
return BarTooltipItem(
|
||||||
|
rod.toY.round().toString(),
|
||||||
|
const TextStyle(
|
||||||
|
color: Colors.transparent,
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
Widget getTitles(double value, TitleMeta meta) {
|
||||||
|
const style = TextStyle(
|
||||||
|
color: Colors.orange,
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
fontSize: 14,
|
||||||
|
);
|
||||||
|
String text;
|
||||||
|
switch (value.toInt()) {
|
||||||
|
case 0:
|
||||||
|
text = 'M';
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
text = 'T';
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
text = 'W';
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
text = 'T';
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
text = 'F';
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
text = 'S';
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
text = 'S';
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
text = '';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return SideTitleWidget(
|
||||||
|
axisSide: meta.axisSide,
|
||||||
|
space: 4,
|
||||||
|
child: Text(text, style: style),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
FlTitlesData get titlesData => FlTitlesData(
|
||||||
|
show: true,
|
||||||
|
bottomTitles: AxisTitles(
|
||||||
|
sideTitles: SideTitles(
|
||||||
|
showTitles: true,
|
||||||
|
reservedSize: 30,
|
||||||
|
getTitlesWidget: getTitles,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
topTitles: AxisTitles(
|
||||||
|
sideTitles: SideTitles(showTitles: false),
|
||||||
|
),
|
||||||
|
rightTitles: AxisTitles(
|
||||||
|
sideTitles: SideTitles(
|
||||||
|
showTitles: false,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
leftTitles: AxisTitles(
|
||||||
|
sideTitles: SideTitles(
|
||||||
|
showTitles: true,
|
||||||
|
getTitlesWidget: (value, _) {
|
||||||
|
// Return a custom widget for each axis value
|
||||||
|
return Container(
|
||||||
|
constraints:
|
||||||
|
const BoxConstraints.tightFor(width: double.infinity),
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.only(right: 3.0),
|
||||||
|
// Adjust the margin value as needed
|
||||||
|
child: FittedBox(
|
||||||
|
fit: BoxFit.scaleDown,
|
||||||
|
alignment: Alignment.centerLeft,
|
||||||
|
child: Text(
|
||||||
|
value.toInt().toString(),
|
||||||
|
style: const TextStyle(
|
||||||
|
color: Colors.orange,
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
));
|
||||||
|
|
||||||
|
FlBorderData get borderData => FlBorderData(
|
||||||
|
show: true, // Set to true to display the chart border
|
||||||
|
border: const Border(
|
||||||
|
bottom: BorderSide(color: Colors.black, width: 1),
|
||||||
|
left:
|
||||||
|
BorderSide(color: Colors.black, width: 1), // Hide the left border
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Container(
|
||||||
|
decoration: const BoxDecoration(
|
||||||
|
color: Colors.white,
|
||||||
|
borderRadius: BorderRadius.all(Radius.circular(8))),
|
||||||
|
child: Padding(
|
||||||
|
padding:
|
||||||
|
const EdgeInsets.symmetric(vertical: 8, horizontal: 16),
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
ValueListenableBuilder(
|
||||||
|
valueListenable: StatisticsService
|
||||||
|
.instance.dailyAverageForCurrentWeek,
|
||||||
|
builder: (context, value, child) {
|
||||||
|
return SizedBox(
|
||||||
|
height: 100,
|
||||||
|
width: 400,
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
const TitleComponent("Kalorien"),
|
||||||
|
const SizedBox(
|
||||||
|
height: 10,
|
||||||
|
),
|
||||||
|
const SecondaryTextComponent(
|
||||||
|
"Durchschnittlich"),
|
||||||
|
SecondaryBigTextComponent(
|
||||||
|
"${value.toString()} kcal/Tag"),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ValueListenableBuilder(
|
||||||
|
valueListenable:
|
||||||
|
StatisticsService.instance.barChartData,
|
||||||
|
builder: (context, value, child) {
|
||||||
|
return SizedBox(
|
||||||
|
height: 300,
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
SizedBox(
|
||||||
|
height: 15,
|
||||||
|
// Adjust the height of the legend as needed
|
||||||
|
child: Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
Container(
|
||||||
|
margin: const EdgeInsets.symmetric(
|
||||||
|
horizontal: 8.0),
|
||||||
|
// Adjust the spacing between legend items
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
Container(
|
||||||
|
width: 12,
|
||||||
|
height: 12,
|
||||||
|
decoration: const BoxDecoration(
|
||||||
|
color: Colors.red,
|
||||||
|
// Use the color of the first bar rod for the legend item
|
||||||
|
shape: BoxShape.circle,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const SizedBox(width: 4.0),
|
||||||
|
// Adjust the spacing between the color indicator and the legend label
|
||||||
|
const Text(
|
||||||
|
'Frühstück',
|
||||||
|
// Replace with your desired legend label
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize:
|
||||||
|
12), // Adjust the font size of the legend labels
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
margin: const EdgeInsets.symmetric(
|
||||||
|
horizontal: 8.0),
|
||||||
|
// Adjust the spacing between legend items
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
Container(
|
||||||
|
width: 12,
|
||||||
|
height: 12,
|
||||||
|
decoration: const BoxDecoration(
|
||||||
|
color: Colors.green,
|
||||||
|
// Use the color of the first bar rod for the legend item
|
||||||
|
shape: BoxShape.circle,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const SizedBox(width: 4.0),
|
||||||
|
// Adjust the spacing between the color indicator and the legend label
|
||||||
|
const Text(
|
||||||
|
'Mittagessen',
|
||||||
|
// Replace with your desired legend label
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize:
|
||||||
|
12), // Adjust the font size of the legend labels
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
margin: const EdgeInsets.symmetric(
|
||||||
|
horizontal: 8.0),
|
||||||
|
// Adjust the spacing between legend items
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
Container(
|
||||||
|
width: 12,
|
||||||
|
height: 12,
|
||||||
|
decoration: const BoxDecoration(
|
||||||
|
color: Colors.yellow,
|
||||||
|
// Use the color of the first bar rod for the legend item
|
||||||
|
shape: BoxShape.circle,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const SizedBox(width: 4.0),
|
||||||
|
// Adjust the spacing between the color indicator and the legend label
|
||||||
|
const Text(
|
||||||
|
'Abendessen',
|
||||||
|
// Replace with your desired legend label
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize:
|
||||||
|
12), // Adjust the font size of the legend labels
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
margin:
|
||||||
|
const EdgeInsets.fromLTRB(0, 24, 0, 0),
|
||||||
|
height: 250,
|
||||||
|
child: BarChart(
|
||||||
|
BarChartData(
|
||||||
|
barTouchData: barTouchData,
|
||||||
|
titlesData: titlesData,
|
||||||
|
borderData: borderData,
|
||||||
|
barGroups: value,
|
||||||
|
gridData: FlGridData(show: false),
|
||||||
|
alignment: BarChartAlignment.spaceAround,
|
||||||
|
extraLinesData: ExtraLinesData(
|
||||||
|
horizontalLines: [
|
||||||
|
HorizontalLine(
|
||||||
|
y: StatisticsService.instance.getCaloryTargetForOneDay(), // Specify the y-value where you want the line to be positioned
|
||||||
|
color: Colors.black, // Change the color as per your requirement
|
||||||
|
strokeWidth: 2, // Adjust the width as needed
|
||||||
|
dashArray: [3, 2],
|
||||||
|
label: HorizontalLineLabel(
|
||||||
|
show: true,
|
||||||
|
labelResolver: (x) => "Zielwert"
|
||||||
|
)
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
import '../meal_page_text/days_component.dart';
|
||||||
|
import '../meal_page_text/statistics_today_component.dart';
|
||||||
|
|
||||||
|
class RoundChartComponent extends StatelessWidget {
|
||||||
|
const RoundChartComponent({Key? key}) : super(key: key);
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Container(
|
||||||
|
decoration: const BoxDecoration(
|
||||||
|
color: Colors.white,
|
||||||
|
borderRadius: BorderRadius.all(Radius.circular(8))),
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.symmetric(
|
||||||
|
vertical: 8, horizontal: 16),
|
||||||
|
child: Column(
|
||||||
|
children: const [
|
||||||
|
DaysMealPageComponent(),
|
||||||
|
StatisticsPercentage(),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,7 +1,10 @@
|
||||||
import 'package:ernaehrung/android/components/form/form_builder_text_field_component.dart';
|
import 'package:ernaehrung/android/components/form/form_builder_text_field_component.dart';
|
||||||
|
import 'package:ernaehrung/web/component/today.dart';
|
||||||
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_form_builder/flutter_form_builder.dart';
|
import 'package:flutter_form_builder/flutter_form_builder.dart';
|
||||||
import 'package:hive/hive.dart';
|
import 'package:hive/hive.dart';
|
||||||
|
import '../../../web/web_app.dart';
|
||||||
import '../../models/form_builder.dart';
|
import '../../models/form_builder.dart';
|
||||||
import '../../models/user.dart';
|
import '../../models/user.dart';
|
||||||
|
|
||||||
|
@ -102,7 +105,7 @@ class _FormBuilderComponentState extends State<FormBuilderComponent> {
|
||||||
shrinkWrap: true,
|
shrinkWrap: true,
|
||||||
itemBuilder: (context, index) {
|
itemBuilder: (context, index) {
|
||||||
return FormBuilderTextFieldComponent(
|
return FormBuilderTextFieldComponent(
|
||||||
true, listOfTextField[index]);
|
widget.lockTextFields, listOfTextField[index]);
|
||||||
}),
|
}),
|
||||||
Container(
|
Container(
|
||||||
margin:
|
margin:
|
||||||
|
@ -151,16 +154,25 @@ class _FormBuilderComponentState extends State<FormBuilderComponent> {
|
||||||
User(
|
User(
|
||||||
formKey.currentState?.fields['vorname']?.value,
|
formKey.currentState?.fields['vorname']?.value,
|
||||||
formKey.currentState?.fields['nachname']?.value,
|
formKey.currentState?.fields['nachname']?.value,
|
||||||
formKey.currentState?.fields['gewicht']?.value,
|
int.parse(formKey.currentState?.fields['gewicht']?.value),
|
||||||
formKey.currentState?.fields['groesse']?.value,
|
int.parse(formKey.currentState?.fields['groesse']?.value),
|
||||||
formKey.currentState?.fields['alter']?.value,
|
int.parse(formKey.currentState?.fields['alter']?.value),
|
||||||
formKey
|
int.parse(formKey.currentState?.fields['kalorien']?.value)
|
||||||
.currentState?.fields['kalorien']?.value));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
Future.delayed(
|
|
||||||
const Duration(seconds: 2),
|
if (kIsWeb) {
|
||||||
() => Navigator.of(context).pushNamedAndRemoveUntil('/navigation', (Route<dynamic> route) => false));
|
Navigator.of(context).push(MaterialPageRoute(builder: (BuildContext context) => const HomeScreen()));
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
Future.delayed(
|
||||||
|
const Duration(seconds: 2),
|
||||||
|
() => Navigator.of(context)
|
||||||
|
.pushNamedAndRemoveUntil('/navigation', (Route<dynamic> route)
|
||||||
|
=> false)
|
||||||
|
);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
child: const Text("Eingaben bestätigen"),
|
child: const Text("Eingaben bestätigen"),
|
||||||
)),
|
)),
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_dotenv/flutter_dotenv.dart';
|
||||||
|
import 'package:hive/hive.dart';
|
||||||
|
import 'package:hive_flutter/adapters.dart';
|
||||||
|
|
||||||
|
import '../config/statistics.dart';
|
||||||
|
import 'card/card_component.dart';
|
||||||
|
|
||||||
|
class MealsComponent extends StatelessWidget {
|
||||||
|
MealsComponent({Key? key}) : super(key: key);
|
||||||
|
final List<Color> colors = [Colors.teal,Colors.red,Colors.green];
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return ValueListenableBuilder(
|
||||||
|
valueListenable: Hive.box(dotenv.env['MEALPLAN_BOX'] ?? 'MEALPLAN').listenable(),
|
||||||
|
builder: (context, box, widget) {
|
||||||
|
return ListView.builder(
|
||||||
|
primary: false,
|
||||||
|
shrinkWrap: true,
|
||||||
|
itemCount: box.keys.length,
|
||||||
|
itemBuilder: (context, i) {
|
||||||
|
String mealTypeAsString = box.keyAt(i).toString();
|
||||||
|
return CardComponent(
|
||||||
|
mealTypeAsString,
|
||||||
|
StatisticsService.instance.getMealsOfTodayByMealtype(mealTypeAsString),
|
||||||
|
color: colors[i],
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,3 +1,4 @@
|
||||||
|
import 'package:ernaehrung/android/components/chart/round_chart.dart';
|
||||||
import 'package:ernaehrung/android/components/meal_page_food_component.dart';
|
import 'package:ernaehrung/android/components/meal_page_food_component.dart';
|
||||||
import 'package:ernaehrung/android/components/meal_page_text/days_component.dart';
|
import 'package:ernaehrung/android/components/meal_page_text/days_component.dart';
|
||||||
import 'package:ernaehrung/android/components/meal_page_text/statistics_today_component.dart';
|
import 'package:ernaehrung/android/components/meal_page_text/statistics_today_component.dart';
|
||||||
|
@ -29,23 +30,9 @@ class _MealPlanState extends State<MealPlanPage> {
|
||||||
height: double.infinity,
|
height: double.infinity,
|
||||||
child: SingleChildScrollView(
|
child: SingleChildScrollView(
|
||||||
child: Column(
|
child: Column(
|
||||||
children: [
|
children: const [
|
||||||
Container(
|
RoundChartComponent(),
|
||||||
decoration: const BoxDecoration(
|
MealPageStatisticsFoodComponent(),
|
||||||
color: Colors.white,
|
|
||||||
borderRadius: BorderRadius.all(Radius.circular(8))),
|
|
||||||
child: Padding(
|
|
||||||
padding: const EdgeInsets.symmetric(
|
|
||||||
vertical: 8, horizontal: 16),
|
|
||||||
child: Column(
|
|
||||||
children: const [
|
|
||||||
DaysMealPageComponent(),
|
|
||||||
StatisticsPercentage(),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
const MealPageStatisticsFoodComponent(),
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
)));
|
)));
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
import 'package:ernaehrung/android/components/chart/chart.dart';
|
||||||
import 'package:ernaehrung/android/components/meal_page_text/secondary_big_text_component.dart';
|
import 'package:ernaehrung/android/components/meal_page_text/secondary_big_text_component.dart';
|
||||||
import 'package:ernaehrung/android/components/meal_page_text/secondary_text_component.dart';
|
import 'package:ernaehrung/android/components/meal_page_text/secondary_text_component.dart';
|
||||||
import 'package:ernaehrung/android/components/meal_page_text/title_component.dart';
|
import 'package:ernaehrung/android/components/meal_page_text/title_component.dart';
|
||||||
|
@ -26,174 +27,7 @@ class ProgressPage extends StatelessWidget {
|
||||||
body: SingleChildScrollView(
|
body: SingleChildScrollView(
|
||||||
child: Column(
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
Container(
|
const ChartComponent(),
|
||||||
decoration: const BoxDecoration(
|
|
||||||
color: Colors.white,
|
|
||||||
borderRadius: BorderRadius.all(Radius.circular(8))),
|
|
||||||
child: Padding(
|
|
||||||
padding:
|
|
||||||
const EdgeInsets.symmetric(vertical: 8, horizontal: 16),
|
|
||||||
child: Column(
|
|
||||||
children: [
|
|
||||||
ValueListenableBuilder(
|
|
||||||
valueListenable: StatisticsService
|
|
||||||
.instance.dailyAverageForCurrentWeek,
|
|
||||||
builder: (context, value, child) {
|
|
||||||
return SizedBox(
|
|
||||||
height: 100,
|
|
||||||
width: 400,
|
|
||||||
child: Column(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
const TitleComponent("Kalorien"),
|
|
||||||
const SizedBox(
|
|
||||||
height: 10,
|
|
||||||
),
|
|
||||||
const SecondaryTextComponent(
|
|
||||||
"Durchschnittlich"),
|
|
||||||
SecondaryBigTextComponent(
|
|
||||||
"${value.toString()} kcal/Tag"),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
ValueListenableBuilder(
|
|
||||||
valueListenable:
|
|
||||||
StatisticsService.instance.barChartData,
|
|
||||||
builder: (context, value, child) {
|
|
||||||
return SizedBox(
|
|
||||||
height: 300,
|
|
||||||
child: Column(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
SizedBox(
|
|
||||||
height: 15,
|
|
||||||
// Adjust the height of the legend as needed
|
|
||||||
child: Row(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
|
||||||
children: [
|
|
||||||
Container(
|
|
||||||
margin: const EdgeInsets.symmetric(
|
|
||||||
horizontal: 8.0),
|
|
||||||
// Adjust the spacing between legend items
|
|
||||||
child: Row(
|
|
||||||
children: [
|
|
||||||
Container(
|
|
||||||
width: 12,
|
|
||||||
height: 12,
|
|
||||||
decoration: const BoxDecoration(
|
|
||||||
color: Colors.red,
|
|
||||||
// Use the color of the first bar rod for the legend item
|
|
||||||
shape: BoxShape.circle,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
const SizedBox(width: 4.0),
|
|
||||||
// Adjust the spacing between the color indicator and the legend label
|
|
||||||
const Text(
|
|
||||||
'Frühstück',
|
|
||||||
// Replace with your desired legend label
|
|
||||||
style: TextStyle(
|
|
||||||
fontSize:
|
|
||||||
12), // Adjust the font size of the legend labels
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Container(
|
|
||||||
margin: const EdgeInsets.symmetric(
|
|
||||||
horizontal: 8.0),
|
|
||||||
// Adjust the spacing between legend items
|
|
||||||
child: Row(
|
|
||||||
children: [
|
|
||||||
Container(
|
|
||||||
width: 12,
|
|
||||||
height: 12,
|
|
||||||
decoration: const BoxDecoration(
|
|
||||||
color: Colors.green,
|
|
||||||
// Use the color of the first bar rod for the legend item
|
|
||||||
shape: BoxShape.circle,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
const SizedBox(width: 4.0),
|
|
||||||
// Adjust the spacing between the color indicator and the legend label
|
|
||||||
const Text(
|
|
||||||
'Mittagessen',
|
|
||||||
// Replace with your desired legend label
|
|
||||||
style: TextStyle(
|
|
||||||
fontSize:
|
|
||||||
12), // Adjust the font size of the legend labels
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Container(
|
|
||||||
margin: const EdgeInsets.symmetric(
|
|
||||||
horizontal: 8.0),
|
|
||||||
// Adjust the spacing between legend items
|
|
||||||
child: Row(
|
|
||||||
children: [
|
|
||||||
Container(
|
|
||||||
width: 12,
|
|
||||||
height: 12,
|
|
||||||
decoration: const BoxDecoration(
|
|
||||||
color: Colors.yellow,
|
|
||||||
// Use the color of the first bar rod for the legend item
|
|
||||||
shape: BoxShape.circle,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
const SizedBox(width: 4.0),
|
|
||||||
// Adjust the spacing between the color indicator and the legend label
|
|
||||||
const Text(
|
|
||||||
'Abendessen',
|
|
||||||
// Replace with your desired legend label
|
|
||||||
style: TextStyle(
|
|
||||||
fontSize:
|
|
||||||
12), // Adjust the font size of the legend labels
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Container(
|
|
||||||
margin:
|
|
||||||
const EdgeInsets.fromLTRB(0, 24, 0, 0),
|
|
||||||
height: 250,
|
|
||||||
child: BarChart(
|
|
||||||
BarChartData(
|
|
||||||
barTouchData: barTouchData,
|
|
||||||
titlesData: titlesData,
|
|
||||||
borderData: borderData,
|
|
||||||
barGroups: value,
|
|
||||||
gridData: FlGridData(show: false),
|
|
||||||
alignment: BarChartAlignment.spaceAround,
|
|
||||||
extraLinesData: ExtraLinesData(
|
|
||||||
horizontalLines: [
|
|
||||||
HorizontalLine(
|
|
||||||
y: StatisticsService.instance.getCaloryTargetForOneDay(), // Specify the y-value where you want the line to be positioned
|
|
||||||
color: Colors.black, // Change the color as per your requirement
|
|
||||||
strokeWidth: 2, // Adjust the width as needed
|
|
||||||
dashArray: [3, 2],
|
|
||||||
label: HorizontalLineLabel(
|
|
||||||
show: true,
|
|
||||||
labelResolver: (x) => "Zielwert"
|
|
||||||
)
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
)),
|
|
||||||
Container(
|
Container(
|
||||||
margin: const EdgeInsets.fromLTRB(0, 16, 0, 0),
|
margin: const EdgeInsets.fromLTRB(0, 16, 0, 0),
|
||||||
decoration: const BoxDecoration(
|
decoration: const BoxDecoration(
|
||||||
|
@ -233,121 +67,4 @@ class ProgressPage extends StatelessWidget {
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
BarTouchData get barTouchData => BarTouchData(
|
|
||||||
enabled: false,
|
|
||||||
touchTooltipData: BarTouchTooltipData(
|
|
||||||
tooltipBgColor: Colors.transparent,
|
|
||||||
tooltipPadding: EdgeInsets.zero,
|
|
||||||
tooltipMargin: 4,
|
|
||||||
getTooltipItem: (
|
|
||||||
BarChartGroupData group,
|
|
||||||
int groupIndex,
|
|
||||||
BarChartRodData rod,
|
|
||||||
int rodIndex,
|
|
||||||
) {
|
|
||||||
return BarTooltipItem(
|
|
||||||
rod.toY.round().toString(),
|
|
||||||
const TextStyle(
|
|
||||||
color: Colors.transparent,
|
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
);
|
|
||||||
|
|
||||||
Widget getTitles(double value, TitleMeta meta) {
|
|
||||||
const style = TextStyle(
|
|
||||||
color: Colors.orange,
|
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
fontSize: 14,
|
|
||||||
);
|
|
||||||
String text;
|
|
||||||
switch (value.toInt()) {
|
|
||||||
case 0:
|
|
||||||
text = 'M';
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
text = 'T';
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
text = 'W';
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
text = 'T';
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
text = 'F';
|
|
||||||
break;
|
|
||||||
case 5:
|
|
||||||
text = 'S';
|
|
||||||
break;
|
|
||||||
case 6:
|
|
||||||
text = 'S';
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
text = '';
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return SideTitleWidget(
|
|
||||||
axisSide: meta.axisSide,
|
|
||||||
space: 4,
|
|
||||||
child: Text(text, style: style),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
FlTitlesData get titlesData => FlTitlesData(
|
|
||||||
show: true,
|
|
||||||
bottomTitles: AxisTitles(
|
|
||||||
sideTitles: SideTitles(
|
|
||||||
showTitles: true,
|
|
||||||
reservedSize: 30,
|
|
||||||
getTitlesWidget: getTitles,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
topTitles: AxisTitles(
|
|
||||||
sideTitles: SideTitles(showTitles: false),
|
|
||||||
),
|
|
||||||
rightTitles: AxisTitles(
|
|
||||||
sideTitles: SideTitles(
|
|
||||||
showTitles: false,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
leftTitles: AxisTitles(
|
|
||||||
sideTitles: SideTitles(
|
|
||||||
showTitles: true,
|
|
||||||
getTitlesWidget: (value, _) {
|
|
||||||
// Return a custom widget for each axis value
|
|
||||||
return Container(
|
|
||||||
constraints:
|
|
||||||
const BoxConstraints.tightFor(width: double.infinity),
|
|
||||||
child: Padding(
|
|
||||||
padding: const EdgeInsets.only(right: 3.0),
|
|
||||||
// Adjust the margin value as needed
|
|
||||||
child: FittedBox(
|
|
||||||
fit: BoxFit.scaleDown,
|
|
||||||
alignment: Alignment.centerLeft,
|
|
||||||
child: Text(
|
|
||||||
value.toInt().toString(),
|
|
||||||
style: const TextStyle(
|
|
||||||
color: Colors.orange,
|
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
));
|
|
||||||
|
|
||||||
FlBorderData get borderData => FlBorderData(
|
|
||||||
show: true, // Set to true to display the chart border
|
|
||||||
border: const Border(
|
|
||||||
bottom: BorderSide(color: Colors.black, width: 1),
|
|
||||||
left:
|
|
||||||
BorderSide(color: Colors.black, width: 1), // Hide the left border
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import 'package:ernaehrung/android/components/card/card_component.dart';
|
import 'package:ernaehrung/android/components/card/card_component.dart';
|
||||||
|
import 'package:ernaehrung/android/components/meals.dart';
|
||||||
import 'package:ernaehrung/android/config/statistics.dart';
|
import 'package:ernaehrung/android/config/statistics.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_dotenv/flutter_dotenv.dart';
|
import 'package:flutter_dotenv/flutter_dotenv.dart';
|
||||||
|
@ -7,6 +8,7 @@ import 'package:hive_flutter/adapters.dart';
|
||||||
class TodayPage extends StatefulWidget {
|
class TodayPage extends StatefulWidget {
|
||||||
final String title;
|
final String title;
|
||||||
final Color backgroundColor = const Color(0xff47a44b);
|
final Color backgroundColor = const Color(0xff47a44b);
|
||||||
|
|
||||||
const TodayPage({Key? key, required this.title}) : super(key: key);
|
const TodayPage({Key? key, required this.title}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
@ -14,27 +16,8 @@ class TodayPage extends StatefulWidget {
|
||||||
}
|
}
|
||||||
|
|
||||||
class _TodayPageState extends State<TodayPage> {
|
class _TodayPageState extends State<TodayPage> {
|
||||||
final List<Color> colors = [Colors.teal,Colors.red,Colors.green];
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Scaffold(
|
return Scaffold(body: SingleChildScrollView(child: MealsComponent()));
|
||||||
body: SingleChildScrollView(
|
|
||||||
child: ValueListenableBuilder(
|
|
||||||
valueListenable: Hive.box(dotenv.env['MEALPLAN_BOX'] ?? 'MEALPLAN').listenable(),
|
|
||||||
builder: (context, box, widget) {
|
|
||||||
return ListView.builder(
|
|
||||||
primary: false,
|
|
||||||
shrinkWrap: true,
|
|
||||||
itemCount: box.keys.length,
|
|
||||||
itemBuilder: (context, i) {
|
|
||||||
String mealTypeAsString = box.keyAt(i).toString();
|
|
||||||
return CardComponent(
|
|
||||||
mealTypeAsString,
|
|
||||||
StatisticsService.instance.getMealsOfTodayByMealtype(mealTypeAsString),
|
|
||||||
color: colors[i],
|
|
||||||
);
|
|
||||||
});
|
|
||||||
})));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +0,0 @@
|
||||||
import 'package:flutter_dotenv/flutter_dotenv.dart';
|
|
||||||
import 'package:hive/hive.dart';
|
|
||||||
|
|
||||||
void storeUserData(String sname, String fname, int weight, int height, int calories) async {
|
|
||||||
final userBox = Hive.box(dotenv.env['USER_BOX']!);
|
|
||||||
userBox.put(dotenv.env['FIRST_NAME_FIELD']!, sname);
|
|
||||||
userBox.put(dotenv.env['SECOND_NAME_FIELD']!, fname);
|
|
||||||
userBox.put(dotenv.env['WEIGHT_FIELD']!, weight);
|
|
||||||
userBox.put(dotenv.env['HEIGHT_FIELD']!, height);
|
|
||||||
userBox.put(dotenv.env['CALORIES_FIELD']!, calories);
|
|
||||||
}
|
|
|
@ -1,20 +0,0 @@
|
||||||
import 'package:flutter/cupertino.dart';
|
|
||||||
import 'android/models/card.dart';
|
|
||||||
|
|
||||||
List<CardModel> essen = [
|
|
||||||
CardModel('Haferflocken', 10, 1.1, 1.2),
|
|
||||||
CardModel('Kekse', 20, 2.2, 2.3),
|
|
||||||
CardModel('Bier', 30, 3.3, 3.4),
|
|
||||||
];
|
|
||||||
|
|
||||||
Map<Map<Image, String>, List<CardModel>> cards = <Map<Image, String>, List<CardModel>>{
|
|
||||||
{
|
|
||||||
const Image(image: AssetImage('assets/images/fries.png')): 'Frühstück'
|
|
||||||
}: essen,
|
|
||||||
{
|
|
||||||
const Image(image: AssetImage('assets/images/ice.png')): 'Mittagessen'
|
|
||||||
}: essen,
|
|
||||||
{
|
|
||||||
const Image(image: AssetImage('assets/images/tea.png')): 'Abendessen'
|
|
||||||
}: essen
|
|
||||||
};
|
|
|
@ -1,18 +0,0 @@
|
||||||
import 'package:flutter/material.dart';
|
|
||||||
|
|
||||||
class HeaderButton extends StatelessWidget {
|
|
||||||
final String buttonText;
|
|
||||||
final Widget page;
|
|
||||||
|
|
||||||
const HeaderButton(this.buttonText, this.page, {super.key});
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return ElevatedButton(onPressed: (){
|
|
||||||
Navigator.push(
|
|
||||||
context,
|
|
||||||
MaterialPageRoute(builder: (context) => page),
|
|
||||||
);
|
|
||||||
}, child: Text(buttonText));
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,35 +0,0 @@
|
||||||
import 'package:ernaehrung/web/component/header_button_component.dart';
|
|
||||||
import 'package:flutter/cupertino.dart';
|
|
||||||
|
|
||||||
class HeaderComponentWeb extends StatelessWidget {
|
|
||||||
HeaderComponentWeb({Key? key}) : super(key: key);
|
|
||||||
|
|
||||||
final List<HeaderData> headerButtons = [
|
|
||||||
HeaderData("Heute", const Placeholder()),
|
|
||||||
HeaderData("Fortschritt", const Placeholder()),
|
|
||||||
HeaderData("Mahlzeitplan", const Placeholder())
|
|
||||||
];
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return Row(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
||||||
children: List.generate(headerButtons.length, (index) =>
|
|
||||||
HeaderButton(headerButtons[index].buttonText, headerButtons[index].page))
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class HeaderData{
|
|
||||||
final String buttonText;
|
|
||||||
final Widget page;
|
|
||||||
|
|
||||||
HeaderData(this.buttonText, this.page);
|
|
||||||
|
|
||||||
@override
|
|
||||||
String toString() {
|
|
||||||
return 'HeaderData{route: $page, buttonText: $buttonText}';
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
|
@ -0,0 +1,60 @@
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
import '../functions/responsive.dart';
|
||||||
|
|
||||||
|
class NavigationBarComponent extends StatelessWidget {
|
||||||
|
NavigationBarComponent({Key? key}) : super(key: key);
|
||||||
|
|
||||||
|
final List<Widget> navItems = [
|
||||||
|
ElevatedButton(onPressed: (){}, child: const Text("Heute")),
|
||||||
|
ElevatedButton(onPressed: (){}, child: const Text("Gesamtübersicht")),
|
||||||
|
ElevatedButton(onPressed: (){}, child: const Text("Statistics"))
|
||||||
|
];
|
||||||
|
|
||||||
|
Widget responsiveNavigation(BuildContext context){
|
||||||
|
final width = (isDesktop(context) || isTablet(context))
|
||||||
|
? MediaQuery.of(context).size.width * 0.8
|
||||||
|
: MediaQuery.of(context).size.width * 1;
|
||||||
|
|
||||||
|
if (isDesktop(context) || isTablet(context)){
|
||||||
|
return Container(
|
||||||
|
width: width,
|
||||||
|
padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 0),
|
||||||
|
child: Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
|
children: navItems
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}else {
|
||||||
|
return Container(
|
||||||
|
width: width,
|
||||||
|
padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 0),
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
ListView.builder(
|
||||||
|
shrinkWrap: true,
|
||||||
|
physics: const NeverScrollableScrollPhysics(),
|
||||||
|
itemCount: navItems.length,
|
||||||
|
itemBuilder: (BuildContext context, int index) {
|
||||||
|
return Container(
|
||||||
|
width: MediaQuery.of(context).size.width * 0.1,
|
||||||
|
margin: const EdgeInsets.symmetric(
|
||||||
|
vertical: 8,
|
||||||
|
horizontal: 8
|
||||||
|
),
|
||||||
|
child: navItems[index],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
),
|
||||||
|
]
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return responsiveNavigation(context);
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,45 +0,0 @@
|
||||||
import 'package:ernaehrung/android/components/statistics_circular_indicator_component.dart';
|
|
||||||
import 'package:ernaehrung/android/config/cast_helper.dart';
|
|
||||||
import 'package:flutter/cupertino.dart';
|
|
||||||
import 'package:hive_flutter/adapters.dart';
|
|
||||||
import '../../android/components/card_component.dart';
|
|
||||||
import '../../android/components/diet_chart_component.dart';
|
|
||||||
|
|
||||||
class SectionComponent extends StatelessWidget {
|
|
||||||
const SectionComponent({Key? key}) : super(key: key);
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return SingleChildScrollView(
|
|
||||||
child: Column(
|
|
||||||
children: [
|
|
||||||
const StatisticsPercentComponent(
|
|
||||||
calorienLeftPercent: 0,
|
|
||||||
eaten: 0,
|
|
||||||
calorienBurned: 0,
|
|
||||||
calorienLeft: 0,
|
|
||||||
),
|
|
||||||
DietChatComponent(1500),
|
|
||||||
ValueListenableBuilder(
|
|
||||||
valueListenable: Hive.box("TODAY").listenable(),
|
|
||||||
builder: (context, box, widget) {
|
|
||||||
return ListView.builder(
|
|
||||||
primary: false,
|
|
||||||
shrinkWrap: true,
|
|
||||||
itemCount: box.keys.length,
|
|
||||||
itemBuilder: (context, i) {
|
|
||||||
if (box.keyAt(i).toString() == "DATE") {
|
|
||||||
return const SizedBox.shrink();
|
|
||||||
} else {
|
|
||||||
return CardComponent(
|
|
||||||
eatingMealName: box.keyAt(i).toString(),
|
|
||||||
selectedMeal: castDynamicToListFood(box.getAt(i)),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
import 'package:ernaehrung/android/components/chart/chart.dart';
|
||||||
|
import 'package:ernaehrung/android/components/chart/round_chart.dart';
|
||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import 'package:hive/hive.dart';
|
||||||
|
|
||||||
|
import '../../android/components/form/form_builder.dart';
|
||||||
|
import '../../android/components/meals.dart';
|
||||||
|
import '../../android/models/user.dart';
|
||||||
|
import '../functions/responsive.dart';
|
||||||
|
|
||||||
|
class CommonWebComponent extends StatefulWidget {
|
||||||
|
const CommonWebComponent({Key? key}) : super(key: key);
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<CommonWebComponent> createState() => _CommonWebComponentState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _CommonWebComponentState extends State<CommonWebComponent> {
|
||||||
|
Widget widgetResponsiveWidget(context) {
|
||||||
|
return (isDesktop(context) || isTablet(context))
|
||||||
|
? responsiveTabletAndWebComponent()
|
||||||
|
: responsiveMobileComponent();
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget responsiveTabletAndWebComponent() {
|
||||||
|
return const Placeholder();
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget responsiveMobileComponent() {
|
||||||
|
final box = Hive.box<User>("USER_BOX");
|
||||||
|
return box.isEmpty
|
||||||
|
? const FormBuilderComponent(lockTextFields: false)
|
||||||
|
: SingleChildScrollView(
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
const RoundChartComponent(),
|
||||||
|
const ChartComponent(),
|
||||||
|
MealsComponent()
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return widgetResponsiveWidget(context);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
bool isDesktop(BuildContext context) =>
|
||||||
|
MediaQuery.of(context).size.width >= 1028;
|
||||||
|
|
||||||
|
bool isTablet(BuildContext context) =>
|
||||||
|
MediaQuery.of(context).size.width >= 768 &&
|
||||||
|
MediaQuery.of(context).size.width <= 1027;
|
||||||
|
|
||||||
|
bool isMobile(BuildContext context) =>
|
||||||
|
MediaQuery.of(context).size.width <= 767;
|
|
@ -1,31 +0,0 @@
|
||||||
import 'package:ernaehrung/web/component/header_component.dart';
|
|
||||||
import 'package:ernaehrung/web/component/section_component.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
|
||||||
|
|
||||||
class MobileScreen extends StatelessWidget {
|
|
||||||
const MobileScreen({Key? key}) : super(key: key);
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
final screenWidth = MediaQuery.of(context).size.width;
|
|
||||||
return SizedBox(
|
|
||||||
width: screenWidth,
|
|
||||||
height: screenWidth,
|
|
||||||
child: SingleChildScrollView(
|
|
||||||
child: Padding(
|
|
||||||
padding: const EdgeInsets.all(8),
|
|
||||||
child: Column(
|
|
||||||
children: [
|
|
||||||
HeaderComponentWeb(),
|
|
||||||
Container(
|
|
||||||
margin: const EdgeInsets.fromLTRB(0, 24, 0, 0),
|
|
||||||
child: const Center(
|
|
||||||
child: SectionComponent()
|
|
||||||
),
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
));
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,4 +1,5 @@
|
||||||
import 'package:ernaehrung/web/mobile.dart';
|
import 'package:ernaehrung/web/component/navigation.dart';
|
||||||
|
import 'package:ernaehrung/web/component/today.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:sizer/sizer.dart';
|
import 'package:sizer/sizer.dart';
|
||||||
|
|
||||||
|
@ -13,7 +14,7 @@ class WebApp extends StatelessWidget {
|
||||||
debugShowCheckedModeBanner: false,
|
debugShowCheckedModeBanner: false,
|
||||||
title: 'Sizer',
|
title: 'Sizer',
|
||||||
theme: ThemeData.light(),
|
theme: ThemeData.light(),
|
||||||
home: const HomeScreen() ,
|
home: const HomeScreen(),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
@ -28,34 +29,18 @@ class HomeScreen extends StatefulWidget {
|
||||||
}
|
}
|
||||||
|
|
||||||
class _HomeScreenState extends State<HomeScreen> {
|
class _HomeScreenState extends State<HomeScreen> {
|
||||||
|
|
||||||
bool isDesktop(BuildContext context) => MediaQuery.of(context).size.width >= 1028;
|
|
||||||
bool isTablet(BuildContext context) =>
|
|
||||||
MediaQuery.of(context).size.width >= 768 && MediaQuery.of(context).size.width <= 1027;
|
|
||||||
bool isMobile(BuildContext context) => MediaQuery.of(context).size.width <= 767;
|
|
||||||
|
|
||||||
Widget getDeviceType(context){
|
|
||||||
if(isDesktop(context)){
|
|
||||||
return const Text("Desktop");
|
|
||||||
}else if(isTablet(context)){
|
|
||||||
return const Text("Tablet");
|
|
||||||
}else if(isMobile(context)){
|
|
||||||
return const MobileScreen();
|
|
||||||
}
|
|
||||||
|
|
||||||
return const SizedBox.shrink();
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
body: Row(
|
body: SizedBox(
|
||||||
children: [
|
width: MediaQuery.of(context).size.width * 1,
|
||||||
getDeviceType(context),
|
height: MediaQuery.of(context).size.height * 1,
|
||||||
],
|
child: SingleChildScrollView(
|
||||||
)
|
child: Column(
|
||||||
|
children: [NavigationBarComponent(), const CommonWebComponent()],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,10 @@
|
||||||
|
|
||||||
#include "generated_plugin_registrant.h"
|
#include "generated_plugin_registrant.h"
|
||||||
|
|
||||||
|
#include <dynamic_color/dynamic_color_plugin.h>
|
||||||
|
|
||||||
void fl_register_plugins(FlPluginRegistry* registry) {
|
void fl_register_plugins(FlPluginRegistry* registry) {
|
||||||
|
g_autoptr(FlPluginRegistrar) dynamic_color_registrar =
|
||||||
|
fl_plugin_registry_get_registrar_for_plugin(registry, "DynamicColorPlugin");
|
||||||
|
dynamic_color_plugin_register_with_registrar(dynamic_color_registrar);
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
list(APPEND FLUTTER_PLUGIN_LIST
|
list(APPEND FLUTTER_PLUGIN_LIST
|
||||||
|
dynamic_color
|
||||||
)
|
)
|
||||||
|
|
||||||
list(APPEND FLUTTER_FFI_PLUGIN_LIST
|
list(APPEND FLUTTER_FFI_PLUGIN_LIST
|
||||||
|
|
|
@ -5,8 +5,12 @@
|
||||||
import FlutterMacOS
|
import FlutterMacOS
|
||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
|
import dynamic_color
|
||||||
|
import macos_ui
|
||||||
import path_provider_foundation
|
import path_provider_foundation
|
||||||
|
|
||||||
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
|
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
|
||||||
|
DynamicColorPlugin.register(with: registry.registrar(forPlugin: "DynamicColorPlugin"))
|
||||||
|
MacOSUiPlugin.register(with: registry.registrar(forPlugin: "MacOSUiPlugin"))
|
||||||
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
|
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
|
||||||
}
|
}
|
||||||
|
|
56
pubspec.lock
56
pubspec.lock
|
@ -9,6 +9,14 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "59.0.0"
|
version: "59.0.0"
|
||||||
|
adaptive_dialog:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: adaptive_dialog
|
||||||
|
sha256: "570a517946abc252b79ca09ed95c7e397ccf669b052c76173448b981a3c4b207"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.8.3+1"
|
||||||
analyzer:
|
analyzer:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -25,6 +33,14 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.0.2"
|
version: "0.0.2"
|
||||||
|
animations:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: animations
|
||||||
|
sha256: fe8a6bdca435f718bb1dc8a11661b2c22504c6da40ef934cee8327ed77934164
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.0.7"
|
||||||
args:
|
args:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -65,6 +81,22 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.1"
|
version: "2.1.1"
|
||||||
|
bs_flutter_modal:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: bs_flutter_modal
|
||||||
|
sha256: a29ee8c83df35e6c861b58f1f175de6118408583357cdb9bdc5597565b49a612
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.0.6"
|
||||||
|
bs_flutter_utils:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: bs_flutter_utils
|
||||||
|
sha256: "4d405d1a2ac8287dacb51b464ca2496a785334c75a49263e914038d600ed25ff"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.0.2"
|
||||||
build:
|
build:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -209,6 +241,14 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.3.1"
|
version: "2.3.1"
|
||||||
|
dynamic_color:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: dynamic_color
|
||||||
|
sha256: "74dff1435a695887ca64899b8990004f8d1232b0e84bfc4faa1fdda7c6f57cc1"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.6.5"
|
||||||
empty_widget:
|
empty_widget:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -405,6 +445,14 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.0.2"
|
version: "4.0.2"
|
||||||
|
intersperse:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: intersperse
|
||||||
|
sha256: "2f8a905c96f6cbba978644a3d5b31b8d86ddc44917662df7d27a61f3df66a576"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.0.0"
|
||||||
intl:
|
intl:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -453,6 +501,14 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.1"
|
version: "1.1.1"
|
||||||
|
macos_ui:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: macos_ui
|
||||||
|
sha256: "57208eec8180656acd379e1c754e9b6d8830f32a020b94571ae2188f8112075b"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.12.2"
|
||||||
matcher:
|
matcher:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
|
@ -51,6 +51,8 @@ dependencies:
|
||||||
form_builder_validators: ^8.0.0
|
form_builder_validators: ^8.0.0
|
||||||
fluttertoast: ^8.0.7
|
fluttertoast: ^8.0.7
|
||||||
flutter_profile_picture: ^2.0.0
|
flutter_profile_picture: ^2.0.0
|
||||||
|
bs_flutter_modal: ^1.0.6
|
||||||
|
adaptive_dialog: ^1.8.3+1
|
||||||
|
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
|
|
Loading…
Reference in New Issue