import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:sendtrain/classes/activity_action.dart'; import 'package:sendtrain/models/activity_timer_model.dart'; class ActivityActionView extends StatefulWidget { const ActivityActionView({super.key, required this.action}); final ActivityAction action; @override State createState() => ActivityActionViewState(); } class ActivityActionViewState extends State { @override Widget build(BuildContext context) { ActivityTimerModel atm = Provider.of(context, listen: true); List>> sets = atm.activity!.actions[0].items(); return Expanded( child: ListView.builder( padding: const EdgeInsets.fromLTRB(10, 0, 10, 20), itemCount: widget.action.activityActionSet.total, itemBuilder: (BuildContext context, int setNum) { List content = []; List> set = sets[setNum]; // log('${sets.length}'); // log('${set.length}'); for (int actionNum = 0; actionNum < set.length; actionNum++) { Map setItem = set[actionNum]; content.add(GestureDetector( onTap: () { atm.setAction(setNum, actionNum, 'manual'); atm.setActionCount(); }, child: Row(children: [ Ink( width: 70, padding: const EdgeInsets.all(15), color: atm.isCurrentItem(setNum, actionNum) ? Theme.of(context).colorScheme.primaryContainer : Theme.of(context).colorScheme.onPrimary, child: Text(textAlign: TextAlign.center, '${setNum + 1}.${actionNum + 1} ')), Expanded( child: Ink( padding: const EdgeInsets.all(15), color: atm.isCurrentItem(setNum, actionNum) ? Theme.of(context).colorScheme.surfaceBright : Theme.of(context).colorScheme.surfaceContainerLow, child: Text( textAlign: TextAlign.center, '${setItem['name']}: ${setItem['amount']} ${setItem['type']}'))) ]))); } if (setNum == 0) { return Card( shape: const RoundedRectangleBorder( borderRadius: BorderRadius.only( topLeft: Radius.circular(0), topRight: Radius.circular(0), bottomLeft: Radius.circular(10), bottomRight: Radius.circular(10)), ), clipBehavior: Clip.antiAlias, child: Column(children: content)); } else { return Card( shape: const RoundedRectangleBorder( borderRadius: BorderRadius.only( topLeft: Radius.circular(10), topRight: Radius.circular(10), bottomLeft: Radius.circular(10), bottomRight: Radius.circular(10)), ), clipBehavior: Clip.antiAlias, child: Column(children: content)); } // return Column(children: contents); }, )); } }