acivity description management, seed data mods

This commit is contained in:
Joshua Burman 2025-01-06 14:47:14 -05:00
parent ebca90e69a
commit 6917754933
4 changed files with 68 additions and 12 deletions

View File

@ -73,7 +73,7 @@ Future<void> seedDb(AppDatabase database) async {
Map<Symbol, Value> payload = { Map<Symbol, Value> payload = {
Symbol('title'): Value<String>(exercise['name']), Symbol('title'): Value<String>(exercise['name']),
Symbol('description'): Value<String>(exercise['instructions'].toString()), Symbol('description'): Value<String>(json.encode(exercise['instructions'])),
Symbol('force'): Value<String>(exercise['force'] ?? "") Symbol('force'): Value<String>(exercise['force'] ?? "")
}; };

View File

@ -6,10 +6,11 @@ showMediaDetailWidget(BuildContext context, MediaItem media) {
showEditorSheet(context, MediaDetails(media: media)); showEditorSheet(context, MediaDetails(media: media));
} }
showEditorSheet(BuildContext context, Widget widget) { showGenericSheet(BuildContext context, Widget widget) {
showModalBottomSheet<void>( showModalBottomSheet<void>(
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.only(topLeft: Radius.circular(10.0), topRight: Radius.circular(10.0)), borderRadius: BorderRadius.only(
topLeft: Radius.circular(10.0), topRight: Radius.circular(10.0)),
), ),
context: context, context: context,
showDragHandle: true, showDragHandle: true,
@ -19,3 +20,21 @@ showEditorSheet(BuildContext context, Widget widget) {
return widget; return widget;
}); });
} }
showEditorSheet(BuildContext context, Widget widget) {
showGenericSheet(context, widget);
}
String jsonToDescription(List text) {
String content = '';
for (int i = 0; i < text.length; i++) {
if (content.isEmpty) {
content = text[i];
} else {
content = "$content\n\n${text[i]}";
}
}
return content;
}

View File

@ -1,3 +1,5 @@
import 'dart:convert';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:sendtrain/daos/media_items_dao.dart'; import 'package:sendtrain/daos/media_items_dao.dart';
@ -6,6 +8,7 @@ import 'package:sendtrain/database/database.dart';
import 'package:sendtrain/extensions/string_extensions.dart'; import 'package:sendtrain/extensions/string_extensions.dart';
import 'package:sendtrain/helpers/date_time_helpers.dart'; import 'package:sendtrain/helpers/date_time_helpers.dart';
import 'package:sendtrain/helpers/media_helpers.dart'; import 'package:sendtrain/helpers/media_helpers.dart';
import 'package:sendtrain/helpers/widget_helpers.dart';
import 'package:sendtrain/models/activity_timer_model.dart'; import 'package:sendtrain/models/activity_timer_model.dart';
import 'package:sendtrain/widgets/activities/activity_view.dart'; import 'package:sendtrain/widgets/activities/activity_view.dart';
import 'package:sendtrain/widgets/builders/dialogs.dart'; import 'package:sendtrain/widgets/builders/dialogs.dart';
@ -59,16 +62,22 @@ class ActivityCardState extends State<ActivityCard> {
if (atm.activity?.id == widget.activity.id) { if (atm.activity?.id == widget.activity.id) {
return Text( return Text(
maxLines: 1, maxLines: 1,
overflow: TextOverflow.ellipsis,
"${widget.activity.title.toTitleCase()} (${formattedTime(atm.totalTime)})"); "${widget.activity.title.toTitleCase()} (${formattedTime(atm.totalTime)})");
} else { } else {
return Text( return Text(
maxLines: 1, maxLines: 1,
overflow: TextOverflow.ellipsis,
widget.activity.title.toTitleCase()); widget.activity.title.toTitleCase());
} }
}, },
), ),
subtitle: Text( subtitle: Text(
maxLines: 2, widget.activity.description ?? ""), overflow: TextOverflow.ellipsis,
maxLines: 2,
softWrap: true,
jsonToDescription(json
.decode(widget.activity.description ?? ""))),
contentPadding: EdgeInsets.only(left: 13), contentPadding: EdgeInsets.only(left: 13),
trailing: Flex( trailing: Flex(
direction: Axis.vertical, direction: Axis.vertical,

View File

@ -1,14 +1,16 @@
import 'dart:convert';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_expandable_fab/flutter_expandable_fab.dart'; import 'package:flutter_expandable_fab/flutter_expandable_fab.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:sendtrain/daos/actions_dao.dart'; import 'package:sendtrain/daos/actions_dao.dart';
import 'package:sendtrain/database/database.dart'; import 'package:sendtrain/database/database.dart';
import 'package:sendtrain/extensions/string_extensions.dart'; import 'package:sendtrain/extensions/string_extensions.dart';
import 'package:sendtrain/helpers/widget_helpers.dart';
import 'package:sendtrain/models/activity_timer_model.dart'; import 'package:sendtrain/models/activity_timer_model.dart';
import 'package:sendtrain/widgets/activities/activity_action_view.dart'; import 'package:sendtrain/widgets/activities/activity_action_view.dart';
import 'package:sendtrain/widgets/activities/activity_view_categories.dart'; import 'package:sendtrain/widgets/activities/activity_view_categories.dart';
import 'package:sendtrain/widgets/activities/activity_view_media.dart'; import 'package:sendtrain/widgets/activities/activity_view_media.dart';
import 'package:sendtrain/widgets/activities/activity_view_types.dart';
class ActivityView extends StatefulWidget { class ActivityView extends StatefulWidget {
const ActivityView({super.key, required this.activity}); const ActivityView({super.key, required this.activity});
@ -185,17 +187,43 @@ class _ActivityViewState extends State<ActivityView> {
padding: const EdgeInsets.only( padding: const EdgeInsets.only(
top: 0, bottom: 10, left: 15, right: 15), top: 0, bottom: 10, left: 15, right: 15),
child: Text( child: Text(
maxLines: 5, maxLines: 4,
overflow: TextOverflow. ellipsis,
softWrap: true,
textAlign: TextAlign.left, textAlign: TextAlign.left,
style: const TextStyle(fontSize: 15), style: const TextStyle(fontSize: 15),
activity.description ?? "")), jsonToDescription(json.decode(activity.description ?? "")))),
Padding( Padding(
padding: EdgeInsets.only(left: 15), padding: EdgeInsets.only(right: 15),
child: Text("read more...", child: Align(
style: TextStyle( alignment: Alignment.topRight,
color: Colors.deepPurpleAccent))), child: TextButton(
style: ButtonStyle(
textStyle:
WidgetStateProperty.all<TextStyle>(
TextStyle(
fontWeight:
FontWeight.normal)),
shape: WidgetStateProperty.all<
RoundedRectangleBorder>(
RoundedRectangleBorder(
borderRadius:
BorderRadius.circular(10.0),
))),
onPressed: () {
showGenericSheet(
context,
Padding(
padding: EdgeInsets.all(15),
child: Text(jsonToDescription(
json.decode(activity.description ??
"")))));
},
child: Text("Read More...",
textAlign: TextAlign.right),
))),
const Padding( const Padding(
padding: EdgeInsets.fromLTRB(15, 20, 0, 10), padding: EdgeInsets.fromLTRB(15, 10, 0, 10),
child: Text( child: Text(
style: TextStyle( style: TextStyle(
fontSize: 20, fontSize: 20,