import 'package:flutter/material.dart';
import 'package:stream_video_flutter/stream_video_flutter.dart';
// Example method called to create a new call
Future<void> startCall() {
final call = StreamVideo.instance.makeCall(
callType: StreamCallType.defaultType(),
id: {CALL_ID},
);
final result = await call.getOrCreate(
ringing: true,
video: true,
memberIds: [
'user1',
'user2',
],
);
result.fold(
success: (success) {
if (mounted) {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => MyCallScreen(call)),
);
}
},
failure: (failure) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text('Error: ${failure.error.message}'),
),
);
},
);
}
class MyCallScreen extends StatelessWidget {
const MyCallScreen(this.call, {super.key});
final Call call;
@override
Widget build(BuildContext context) {
return StreamCallContainer(
call: call,
);
}
}Outgoing Call
The StreamCallContainer widget offers built-in support for displaying outgoing calls.
When you initiate a new ringing-flow call, you can pass it to the StreamCallContainer, and the outgoing call screen will be shown until the first participant joins the call.

Customization
You can customize how the outgoing call screen looks by providing you own widget:
StreamCallContainer(
call: call,
outgoingCallWidgetBuilder: (context, call) {
return MyOwnOutgoingCallScreen(call: call);
},
)