use linechart widget in views

main
Julian Gegner 2023-03-05 20:54:08 +01:00
parent b23f9ccdc1
commit 54ec18d1fe
5 changed files with 32 additions and 43 deletions

View File

@ -5,14 +5,11 @@ import 'package:smoke_cess_app/providers/settings_provider.dart';
import 'package:syncfusion_flutter_charts/charts.dart'; import 'package:syncfusion_flutter_charts/charts.dart';
class LineChart<T> extends StatelessWidget { class LineChart<T> extends StatelessWidget {
final List<T> dataSource; final List<LineSeries<T, DateTime>> series;
final DateTime? Function(T, int) xValueMapper; const LineChart({
final num? Function(T, int) yValueMapper; super.key,
const LineChart( required this.series,
{super.key, });
required this.dataSource,
required this.xValueMapper,
required this.yValueMapper});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -28,12 +25,7 @@ class LineChart<T> extends StatelessWidget {
), ),
primaryYAxis: primaryYAxis:
NumericAxis(isVisible: false, minimum: 0, maximum: 100, interval: 20), NumericAxis(isVisible: false, minimum: 0, maximum: 100, interval: 20),
series: <ChartSeries>[ series: series,
LineSeries<T, DateTime>(
dataSource: dataSource,
xValueMapper: xValueMapper,
yValueMapper: yValueMapper),
],
); );
} }
} }

View File

@ -1,5 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:smoke_cess_app/widgets/line_chart_widget.dart';
import 'package:syncfusion_flutter_charts/charts.dart'; import 'package:syncfusion_flutter_charts/charts.dart';
import 'package:smoke_cess_app/models/mood.dart'; import 'package:smoke_cess_app/models/mood.dart';
import 'package:smoke_cess_app/providers/tasks_provider.dart'; import 'package:smoke_cess_app/providers/tasks_provider.dart';
@ -13,15 +14,12 @@ class MoodView extends StatelessWidget {
return Column( return Column(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
SfCartesianChart( LineChart(series: [
primaryXAxis: DateTimeAxis(), LineSeries<Mood, DateTime>(
series: <ChartSeries>[ dataSource: tasksModel.moodHistory,
LineSeries<Mood, DateTime>( xValueMapper: (Mood value, _) => value.date,
dataSource: tasksModel.moodHistory, yValueMapper: (Mood value, _) => value.moodValue)
xValueMapper: (Mood value, _) => value.date, ]),
yValueMapper: (Mood value, _) => value.moodValue)
],
),
Column( Column(
children: tasksModel.moodHistory.map((mood) { children: tasksModel.moodHistory.map((mood) {
return Text('${mood.date}: ${mood.moodValue}'); return Text('${mood.date}: ${mood.moodValue}');

View File

@ -1,21 +1,21 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:smoke_cess_app/models/sleep.dart'; import 'package:smoke_cess_app/models/sleep.dart';
import 'package:syncfusion_flutter_charts/charts.dart'; import 'package:smoke_cess_app/widgets/line_chart_widget.dart';
import 'package:smoke_cess_app/providers/tasks_provider.dart'; import 'package:smoke_cess_app/providers/tasks_provider.dart';
import 'package:syncfusion_flutter_charts/charts.dart';
class SleepView extends StatelessWidget { class SleepView extends StatelessWidget {
const SleepView({super.key}); const SleepView({super.key});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
var tasksModel = context.watch<TasksProvider>(); TasksProvider tasksModel = context.watch<TasksProvider>();
return Column( return Column(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
SfCartesianChart( LineChart<Sleep>(
primaryXAxis: DateTimeAxis(), series: [
series: <ChartSeries>[
LineSeries<Sleep, DateTime>( LineSeries<Sleep, DateTime>(
dataSource: tasksModel.sleepHistory, dataSource: tasksModel.sleepHistory,
xValueMapper: (Sleep value, _) => value.date, xValueMapper: (Sleep value, _) => value.date,

View File

@ -35,7 +35,8 @@ class ViewFormPage extends StatelessWidget {
child: RoundAddButton( child: RoundAddButton(
onPressed: tasksProvider.tasks[page] == true onPressed: tasksProvider.tasks[page] == true
? () => pageProvider.swap() ? () => pageProvider.swap()
: () => showTaskDonePopup(context, page), : () => pageProvider.swap(),
//: () => showTaskDonePopup(context, page),
), ),
) )
]); ]);

View File

@ -1,6 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:smoke_cess_app/models/workout.dart'; import 'package:smoke_cess_app/models/workout.dart';
import 'package:smoke_cess_app/widgets/line_chart_widget.dart';
import 'package:syncfusion_flutter_charts/charts.dart'; import 'package:syncfusion_flutter_charts/charts.dart';
import 'package:smoke_cess_app/providers/tasks_provider.dart'; import 'package:smoke_cess_app/providers/tasks_provider.dart';
@ -9,23 +10,20 @@ class WorkoutView extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
var tasksModel = context.watch<TasksProvider>(); TasksProvider tasksModel = context.watch<TasksProvider>();
return Column( return Column(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
SfCartesianChart( LineChart(series: [
primaryXAxis: DateTimeAxis(), LineSeries<Workout, DateTime>(
series: <ChartSeries>[ dataSource: tasksModel.workoutHistory,
LineSeries<Workout, DateTime>( xValueMapper: (Workout value, _) => value.date,
dataSource: tasksModel.workoutHistory, yValueMapper: (Workout value, _) => value.motivationBefore),
xValueMapper: (Workout value, _) => value.date, LineSeries<Workout, DateTime>(
yValueMapper: (Workout value, _) => value.motivationBefore), dataSource: tasksModel.workoutHistory,
LineSeries<Workout, DateTime>( xValueMapper: (Workout value, _) => value.date,
dataSource: tasksModel.workoutHistory, yValueMapper: (Workout value, _) => value.motivationAfter)
xValueMapper: (Workout value, _) => value.date, ]),
yValueMapper: (Workout value, _) => value.motivationAfter)
],
),
], ],
); );
} }