Skip to content

Conversation

Copy link

Copilot AI commented Nov 1, 2025

Migrates class and schedule management from local StatefulWidget state to centralized Riverpod state management.

Changes

New Provider Infrastructure

  • TimetableProvider: StateNotifier managing AsyncValue<Timetable?> with fetch, add, update, and set operations
  • Handles API calls and SharedPreferences persistence automatically

Component Updates

  • HomeScreen & CalendarScreen: Converted to ConsumerStatefulWidget
  • Removed local timetable state variables and fetch methods
  • State access via ref.watch(timetableProvider), mutations via ref.read(timetableProvider.notifier)
  • Async state handling with .when() for loading/error/data states

App Initialization

  • Wrapped root with ProviderScope in main.dart

Example

Before:

class _HomeScreenState extends State<HomeScreen> {
  Timetable? timetable;
  
  Future<void> fetchTimetable() async {
    final response = await ApiServices().getTimetable(context);
    setState(() { timetable = response; });
    await SharedService().saveTimetable(response);
  }
}

After:

class _HomeScreenState extends ConsumerState<HomeScreen> {
  @override
  Widget build(BuildContext context) {
    final timetableAsyncValue = ref.watch(timetableProvider);
    
    return timetableAsyncValue.when(
      data: (timetable) => HomeScreenSchedule(timetable: timetable),
      loading: () => CircularProgressIndicator(),
      error: (e, st) => ErrorWidget(),
    );
  }
}

Dependencies

  • Added flutter_riverpod: ^2.6.1
Original prompt

convert state management to riverpod in frontend for class and schedule management


💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

Copilot AI changed the title [WIP] Convert state management to Riverpod for class and schedule management Convert timetable state management to Riverpod Nov 1, 2025
Copilot AI requested a review from adhitht November 1, 2025 15:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants