// Version: 1.0.0 | Created: 2026-04-01 // Call screen skeleton. Phase 2 will wire in LiveKit video/audio. import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:go_router/go_router.dart'; import '../domain/call_state.dart'; import 'call_controller.dart'; class CallScreen extends ConsumerWidget { const CallScreen({super.key, required this.roomId}); final String roomId; @override Widget build(BuildContext context, WidgetRef ref) { final callState = ref.watch(callControllerProvider); return Scaffold( backgroundColor: Colors.black, body: SafeArea( child: Column( children: [ Expanded( child: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Icon( Icons.videocam_off_outlined, size: 80, color: Colors.white.withAlpha(153), ), const SizedBox(height: 16), Text( switch (callState) { CallConnecting() => 'Connecting...', CallEnded(:final reason) => reason ?? 'Call ended.', _ => 'Call (Phase 2)', }, style: const TextStyle(color: Colors.white, fontSize: 18), ), const SizedBox(height: 8), Text( 'Video calls will be available in the next release.', textAlign: TextAlign.center, style: TextStyle( color: Colors.white.withAlpha(153), fontSize: 14, ), ), ], ), ), ), Padding( padding: const EdgeInsets.all(32), child: FloatingActionButton( backgroundColor: Colors.red, onPressed: () { ref.read(callControllerProvider.notifier).endCall(); context.pop(); }, child: const Icon(Icons.call_end, color: Colors.white), ), ), ], ), ), ); } }