import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:habitrack_app/infrastructure/widget_wall/items_controller.dart'; import 'package:habitrack_app/main.dart'; import 'package:habitrack_app/sembast/hydration.dart'; import 'package:habitrack_app/sembast/tasks_list.dart'; import 'package:habitrack_app/sembast/timer.dart'; //Add Widget to List- Button Class ###################################### class _AddWidgetToList extends ConsumerWidget { const _AddWidgetToList({ required this.toAdd, required this.buttonText, required this.iconData, }); final dynamic toAdd; final String buttonText; final IconData iconData; void _buttonFunc(BuildContext context, WidgetRef ref) { //ref.read(widgetListNotifierProvider.notifier).addWidget(toAdd()); //ref.read(homeControllerProvider).add() ref.watch(homeControllerProvider).add(toAdd); Navigator.pop(context); logger.i('Button Func Called'); } @override Widget build(BuildContext context, WidgetRef ref) { return Container( alignment: Alignment.center, margin: const EdgeInsets.symmetric(vertical: 4), decoration: BoxDecoration( color: Theme.of(context).colorScheme.primary, boxShadow: [ BoxShadow( color: const Color(0x00000000).withOpacity(0.25), spreadRadius: 1, blurRadius: 2, ), ], borderRadius: const BorderRadius.all(Radius.circular(12)), ), width: 300, child: TextButton( onPressed: () => {_buttonFunc(context, ref)}, child: Row( children: [ Icon( iconData, color: Theme.of(context).colorScheme.onPrimary, ), Text( buttonText, style: Theme.of(context).textTheme.bodyMedium!.copyWith( color: Theme.of(context).colorScheme.onPrimary, ), ), ], ), ), ); } } // AddWidgetMenu ########################################################## class AddWidgetMenu extends StatelessWidget { const AddWidgetMenu({super.key}); @override Widget build(BuildContext context) { //AddWidgetToList - Button-Instances ####################################### final addWaterWidget = _AddWidgetToList( toAdd: Hydration( createdOn: DateTime.now().toString(), completedOn: '', isVisible: true, widgetType: 'Hydration', name: AppLocalizations.of(context)!.waterWidget_defaultName, button1Amount: 100, button2Amount: 250, goal: 2500, current: 0, isExpanded: false, ), buttonText: AppLocalizations.of(context)!.addWidget_water, iconData: Icons.local_drink, ); final addCompoundTimerWidget = _AddWidgetToList( toAdd: TimerItem( widgetType: 'Timer', name: AppLocalizations.of(context)!.timerWidget_defaultName, current: 0, goal: 90, isExpanded: false, createdOn: DateTime.now().toString(), completedOn: '', isVisible: true, state: 'initial', ), buttonText: AppLocalizations.of(context)!.addWidget_timer, iconData: Icons.timer, ); final addTaskWidget = _AddWidgetToList( toAdd: TasksItem( isVisible: true, widgetType: 'TODO', name: AppLocalizations.of(context)!.tasksWidget_defaultName, isExpanded: false, taskList: [], completedTaskList: [], ), buttonText: AppLocalizations.of(context)!.addWidget_tasks, iconData: Icons.task, ); return Scaffold( appBar: AppBar( iconTheme: IconThemeData( color: Theme.of(context).colorScheme.onPrimary, ), title: Text( AppLocalizations.of(context)!.addWidgetHeader, textScaler: const TextScaler.linear(1.5), style: Theme.of(context).textTheme.bodyMedium!.copyWith( color: Theme.of(context).colorScheme.onPrimary, ), ), backgroundColor: Theme.of(context).colorScheme.secondary, foregroundColor: Theme.of(context).colorScheme.primary, ), body: Container( color: Theme.of(context).colorScheme.primaryContainer, alignment: Alignment.center, child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ addWaterWidget, addTaskWidget, addCompoundTimerWidget, ], ), ), ); } }