wrapWithSdkTheme function
Implementation
Widget wrapWithSdkTheme(BuildContext context, Widget child) {
final sdk = PayorcSdk.instance;
final primary = sdk.primaryColor ??
PayorcSdkUiConstants.brandColor ??
PayorcSdkUiConstants.buttonColor;
final secondary =
sdk.secondaryColor ?? PayorcSdkUiConstants.accentColor;
final hasColors = primary != null || secondary != null;
final checkoutFont = PayorcSdkUiConstants.checkoutFontName?.trim() ?? '';
final bodyHost = PayorcSdkUiConstants.hostBodyFontFamily?.trim() ?? '';
final titleHost = PayorcSdkUiConstants.hostTitleFontFamily?.trim() ?? '';
final effectiveBodyFont = bodyHost.isNotEmpty
? bodyHost
: (checkoutFont.isNotEmpty
? checkoutFont
: (titleHost.isNotEmpty ? titleHost : ''));
final hasFont = effectiveBodyFont.isNotEmpty;
final baseTheme = Theme.of(context);
var themeData = baseTheme;
if (hasFont) {
themeData = themeData.copyWith(
textTheme: payorcMergeHostFonts(
themeData.textTheme,
bodyFontName: PayorcSdkUiConstants.hostBodyFontFamily,
titleFontName: PayorcSdkUiConstants.hostTitleFontFamily,
checkoutFontName: PayorcSdkUiConstants.checkoutFontName,
),
);
}
if (hasColors) {
themeData = themeData.copyWith(
colorScheme: themeData.colorScheme.copyWith(
primary: primary ?? themeData.colorScheme.primary,
secondary: secondary ?? themeData.colorScheme.secondary,
),
);
}
Widget inner = child;
inner = Directionality(
textDirection: PayorcSdk.textDirection,
child: inner,
);
if (hasFont) {
inner = DefaultTextStyle.merge(
style: payorcCheckoutDefaultTextStyle(effectiveBodyFont),
child: inner,
);
}
if (hasColors || hasFont) {
inner = Theme(data: themeData, child: inner);
}
if (!hasColors) {
return Container(
decoration: BoxDecoration(
color: AppColors.white,
borderRadius: PayorcSdkUiConstants.bottomSheetTopBorderRadius,
),
child: inner,
);
}
return inner;
}