Implementation
@override
Tag Function(Map<dynamic, dynamic>)? get generateHtml => (Map args) {
final String url = args['url'] ?? '/api/docs';
final String cssUrl = args['cssUrl'] ??
'https://unpkg.com/swagger-ui-dist@5.0.0/swagger-ui.css';
final String jsUrl = args['jsUrl'] ??
'https://unpkg.com/swagger-ui-dist@5.0.0/swagger-ui-bundle.js';
final String presetUrl = args['presetUrl'] ??
'https://unpkg.com/swagger-ui-dist@5.0.0/swagger-ui-standalone-preset.js';
Tag html = ArrayTag(
children: [
$Doctype(),
$Html(attrs: {
'lang': 'en'
}, children: [
$Head(children: [
$Meta(attrs: {'charset': 'UTF-8'}),
$Meta(attrs: {
'name': 'viewport',
'content': 'width=device-width, initial-scale=1.0'
}),
// Google Fonts for modern look
$Link(attrs: {
'rel': 'stylesheet',
'href':
'https://fonts.googleapis.cn/css2?family=Inter:wght@400;600&display=swap'
}),
$Link(attrs: {'rel': 'stylesheet', 'href': cssUrl}),
$Style(children: [$Raw(_getMotherLayoutCSS())]),
]),
$Body(children: [
$Main(attrs: {
'class': 'swagger-main'
}, children: [
$Div(attrs: {
'id': 'swagger-ui',
'class': 'swagger-ui-container'
})
]),
// Scripts
$Script(attrs: {'src': jsUrl}),
$Script(attrs: {'src': presetUrl}),
$Script(children: [$Raw(_getSwaggerInitJS(url))])
])
])
],
);
return html;
};