StreamVideoTheme constructor

StreamVideoTheme({
  1. required Brightness brightness,
  2. StreamTextTheme? textTheme,
  3. StreamColorTheme? colorTheme,
  4. StreamCallContentThemeData? callContentTheme,
  5. StreamCallControlsThemeData? callControlsTheme,
  6. StreamUserAvatarThemeData? userAvatarTheme,
  7. StreamLobbyViewThemeData? lobbyViewTheme,
  8. StreamCallParticipantThemeData? callParticipantTheme,
  9. StreamLocalVideoThemeData? localVideoTheme,
  10. StreamIncomingOutgoingCallThemeData? incomingCallTheme,
  11. StreamIncomingOutgoingCallThemeData? outgoingCallTheme,
  12. StreamLivestreamThemeData? livestreamTheme,
})

Creates a theme from scratch

Implementation

factory StreamVideoTheme({
  required Brightness brightness,
  StreamTextTheme? textTheme,
  StreamColorTheme? colorTheme,
  StreamCallContentThemeData? callContentTheme,
  StreamCallControlsThemeData? callControlsTheme,
  StreamUserAvatarThemeData? userAvatarTheme,
  StreamLobbyViewThemeData? lobbyViewTheme,
  StreamCallParticipantThemeData? callParticipantTheme,
  StreamLocalVideoThemeData? localVideoTheme,
  StreamIncomingOutgoingCallThemeData? incomingCallTheme,
  StreamIncomingOutgoingCallThemeData? outgoingCallTheme,
  StreamLivestreamThemeData? livestreamTheme,
}) {
  final isDark = brightness == Brightness.dark;
  textTheme ??=
      isDark ? const StreamTextTheme.dark() : const StreamTextTheme.light();
  colorTheme ??=
      isDark ? const StreamColorTheme.dark() : const StreamColorTheme.light();

  final defaultTheme = StreamVideoTheme.fromColorAndTextTheme(
    colorTheme,
    textTheme,
  );

  final customizedTheme = defaultTheme.copyWith(
    textTheme: textTheme,
    colorTheme: colorTheme,
    callContentTheme: callContentTheme,
    callControlsTheme: callControlsTheme,
    userAvatarTheme: userAvatarTheme,
    lobbyViewTheme: lobbyViewTheme,
    callParticipantTheme: callParticipantTheme,
    localVideoTheme: localVideoTheme,
    incomingCallTheme: incomingCallTheme,
    outgoingCallTheme: outgoingCallTheme,
    livestreamTheme: livestreamTheme,
  );

  return defaultTheme.merge(customizedTheme);
}