generateWidgetbook function

String generateWidgetbook({
  1. required String name,
  2. required WidgetbookConstructor constructor,
  3. required List<WidgetbookUseCaseData> useCases,
  4. required List<Device> devices,
  5. required List<WidgetbookFrame> frames,
  6. required List<double> textScaleFactors,
  7. required bool foldersExpanded,
  8. required bool widgetsExpanded,
  9. WidgetbookLocalesData? localesData,
  10. WidgetbookLocalizationsDelegatesData? localizationDelegatesData,
  11. WidgetbookThemeData? widgetbookThemeData,
  12. WidgetbookThemeTypeData? themeTypeData,
  13. required List<WidgetbookThemeData> themes,
  14. WidgetbookDeviceFrameData? deviceFrameBuilder,
  15. WidgetbookLocalizationBuilderData? localizationBuilder,
  16. WidgetbookAppBuilderData? appBuilder,
  17. WidgetbookScaffoldBuilderData? scaffoldBuilder,
  18. WidgetbookThemeBuilderData? themeBuilder,
  19. WidgetbookUseCaseBuilderData? useCaseBuilder,
})

Generates the code of the Widgetbook

Implementation

String generateWidgetbook({
  required String name,
  required WidgetbookConstructor constructor,
  required List<WidgetbookUseCaseData> useCases,
  required List<Device> devices,
  required List<WidgetbookFrame> frames,
  required List<double> textScaleFactors,
  required bool foldersExpanded,
  required bool widgetsExpanded,
  WidgetbookLocalesData? localesData,
  WidgetbookLocalizationsDelegatesData? localizationDelegatesData,
  WidgetbookThemeData? widgetbookThemeData,
  WidgetbookThemeTypeData? themeTypeData,
  required List<WidgetbookThemeData> themes,
  WidgetbookDeviceFrameData? deviceFrameBuilder,
  WidgetbookLocalizationBuilderData? localizationBuilder,
  WidgetbookAppBuilderData? appBuilder,
  WidgetbookScaffoldBuilderData? scaffoldBuilder,
  WidgetbookThemeBuilderData? themeBuilder,
  WidgetbookUseCaseBuilderData? useCaseBuilder,
}) {
  final category =
      _generateCategoryInstance(useCases, foldersExpanded, widgetsExpanded);
  final widgetbookInstanceCode = WidgetbookInstance(
    constructor: constructor,
    appInfoInstance: AppInfoInstance(name: name),
    themes: themes.map((theme) => ThemeInstance(theme: theme)).toList(),
    devices: devices.map((device) => DeviceInstance(device: device)).toList(),
    frames: frames.map((frame) => FrameInstance(frame: frame)).toList(),
    textScaleFactors: textScaleFactors.map(DoubleInstance.value).toList(),
    categories: [
      category,
    ],
    type: themeTypeData?.name,
    locales: localesData != null
        ? VariableInstance(variableIdentifier: localesData.name)
        : null,
    localizationDelegates: localizationDelegatesData != null
        ? VariableInstance(variableIdentifier: localizationDelegatesData.name)
        : null,
    deviceFrameBuilder: deviceFrameBuilder != null
        ? VariableInstance(variableIdentifier: deviceFrameBuilder.name)
        : null,
    localizationBuilder: localizationBuilder != null
        ? VariableInstance(variableIdentifier: localizationBuilder.name)
        : null,
    appBuilder: appBuilder != null
        ? VariableInstance(variableIdentifier: appBuilder.name)
        : null,
    scaffoldBuilder: scaffoldBuilder != null
        ? VariableInstance(variableIdentifier: scaffoldBuilder.name)
        : null,
    themeBuilder: themeBuilder != null
        ? FunctionCallInstance(name: themeBuilder.name)
        : null,
    useCaseBuilder: useCaseBuilder != null
        ? VariableInstance(variableIdentifier: useCaseBuilder.name)
        : null,
  ).toCode();

  return '''
class HotReload extends StatelessWidget {
  const HotReload({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return $widgetbookInstanceCode;
  }
}
  ''';
}