Phase 3.1: Complete client_app Riverpod migration (all blocs)

- Migrate SessionClosureBloc → SessionClosureNotifier (@riverpod)
- Migrate PairingBloc → PairingNotifier (@riverpod, WebSocket + timer)
- Migrate ChatBloc → ChatNotifier (@riverpod, WebSocket + message state)
- Remove all flutter_bloc usage from client_app screens and main.dart
- MultiBlocProvider fully removed from client_app
- All screens now use ConsumerWidget/ConsumerStatefulWidget + ref

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-09 14:01:48 +08:00
parent d15b2f05fc
commit bc66bbf50a
12 changed files with 860 additions and 251 deletions

View File

@@ -1,10 +1,9 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:go_router/go_router.dart';
import '../../core/auth/auth_notifier.dart';
import '../../core/api/api_client_provider.dart';
import '../../core/pairing/pairing_bloc.dart';
import '../../core/pairing/pairing_notifier.dart';
import '../chat/widgets/pricing_bottom_sheet.dart';
class HomeScreen extends ConsumerStatefulWidget {
@@ -71,19 +70,19 @@ class _HomeScreenState extends ConsumerState<HomeScreen> with WidgetsBindingObse
_ => '',
};
return BlocListener<PairingBloc, PairingState>(
listener: (context, state) {
if (state is PairingSearching) {
context.go('/chat/searching');
} else if (state is PairingNoBestie) {
context.go('/chat/no-bestie');
} else if (state is PairingError) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text(state.message)),
);
}
},
child: Scaffold(
ref.listen(pairingProvider, (prev, next) {
if (next is PairingSearchingData) {
context.go('/chat/searching');
} else if (next is PairingNoBestieData) {
context.go('/chat/no-bestie');
} else if (next is PairingErrorData) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text(next.message)),
);
}
});
return Scaffold(
appBar: AppBar(
title: const Text('Halo Bestie'),
actions: [
@@ -130,7 +129,6 @@ class _HomeScreenState extends ConsumerState<HomeScreen> with WidgetsBindingObse
),
),
),
),
);
}
}