When I try to print the state after adding it displays: [Instance of 'Reminder']
Following is the code to my provider:
import 'package:flutter/material.dart';
import 'package:path/path.dart' as path;
import 'package:re_mind/object_classes/reminder.dart';
import 'package:riverpod/riverpod.dart';
import 'package:sqflite/sqflite.dart' as sql;
import 'package:sqflite/sqlite_api.dart';
class ReminderNotifier extends StateNotifier<List<Reminder>> {
ReminderNotifier() : super(const <Reminder>[]);
Future<Database> _getDatabase() async {
final dbPath = await sql.getDatabasesPath();
final db = await sql.openDatabase(
path.join(
dbPath,
'reminder.db',
),
onCreate: (db, version) {
return db.execute(
'CREATE TABLE userReminders(title TEXT, targetTime STRING, activity TEXT)',
);
},
version: 1,
);
return db;
}
Future<void> loadReminders() async {
final db = await _getDatabase();
final data = await db.query('userReminders');
final reminders = data
.map(
(row) => Reminder(
title: row['title'] as String,
targetTime: TimeOfDay.fromDateTime(
DateTime.parse(row['targetTime'].toString())),
activity: row['activity'].toString() as Activity,
),
)
.toList();
state = reminders;
print(state);
}
void addReminder(Reminder newReminder) async {
// final appDir = await syspath.getApplicationCacheDirectory();
final db = await _getDatabase();
try {
await db.insert('userReminders', {
'title': newReminder.title,
'targetTime': newReminder.targetTime.toString(),
'activity': newReminder.activity.toString(),
});
state = [
newReminder,
...state,
];
print(state);
} catch (e) {
print('Error inserting reminder: $e');
}
}
}
final reminderProvider =
StateNotifierProvider<ReminderNotifier, List<Reminder>>(
(ref) => ReminderNotifier());