statelessWidgetBuilder function

Class statelessWidgetBuilder(
  1. SlideData data,
  2. String widgetName,
  3. String body
)

Implementation

Class statelessWidgetBuilder(
  SlideData data,
  String widgetName,
  String body,
) {
  var widget = Class(
    (b) => b
      ..name = widgetName
      ..extend = refer('StatelessWidget')
      ..constructors.add(
        Constructor(
          (b) => b
            ..initializers.add(refer('super').call([refer('key : key')]).code)
            ..constant = true
            ..optionalParameters.add(
              Parameter(
                (b) => b
                  ..name = 'key'
                  ..type = refer('Key?', 'package:flutter/material.dart') //HERE
                  ..named = true,
              ),
            ),
        ),
      )
      ..methods.add(
        Method((b) => b
          ..name = 'build'
          ..annotations.add(refer('override'))
          ..requiredParameters.add(
            Parameter(
              (b) => b
                ..name = 'context'
                ..type = refer('BuildContext'),
            ),
          )
          ..body = Code(body)
          ..returns = refer('Widget')),
      ),
  );

  final emitter = DartEmitter(orderDirectives: true);

  try {
    DartFormatter().format('${widget.accept(emitter)}');
  } catch (e) {
    throw Exception(
      'Error generating snippet for slide ${data.name}\n ${e.toString()}',
    );
  }

  return widget;
}