html_dsl_ui 0.1.0 copy "html_dsl_ui: ^0.1.0" to clipboard
html_dsl_ui: ^0.1.0 copied to clipboard

A lightweight Dart DSL for building dynamic HTML interfaces with integrated JavaScript event handling and Fetch API support.

example/html_dsl_ui_example.dart

import 'dart:io';

import 'package:html_dsl_ui/html_dsl_ui.dart';

void main() async {
  final app = App();
  final html = Html5Layout(
    app,
    title: 'My Title',
    manify: false,
    globalStyle: Style(
      selector: 'body',
      styleBuilder: StyleBuilder().padding(0.px).margin(0.px),
    ),
  ).toHtml;

  final file = File('res.html');
  await file.writeAsString(html);
}

class App extends StatelessWidget {
  @override
  Widget build() {
    return Div(
      attributes: {'id': '5'},
      children: [
        H1(
          style: Style(
            styleBuilder: StyleBuilder().color(Color.fromName(ColorName.green)),
            pseudo: PseudoBuilder().hover(
              StyleBuilder()
                  .color(Color.fromName(ColorName.red))
                  .cursor(Cursor.progress),
            ),
            media: MediaBuilder(),
          ),

          children: [TextWidget('I am H1 Text')],
        ),
        Div(
          children: [
            Button(
              'Fetch Api',

              script: Script().on(
                JsHtmlEvent.click,
                callback: Script()
                    .setText('Loading...')
                    .fetch(
                      'https://jsonplaceholder.typicode.com/posts',
                      jsDataVarName: 'posts',
                      onSuccess: Script()
                          .setText('Fetched')
                          .log('posts', isJsVar: true)
                          .queryAnd(
                            '#fetch-api-result',
                            Script().map(
                              'posts',
                              'item',
                              template: JsTemplateRaw(
                                '<li>Title: \${item.title}</li>',
                              ),
                            ),
                          ),
                      onCatch: Script().setText('error', isJsVar: true),
                    ),
              ),
            ),
            Div(id: 'fetch-api-result', children: []),
          ],
        ),
      ],
    );
  }
}

class PostItemTemplate extends JsTemplate {
  final String jsVarName;
  const PostItemTemplate(this.jsVarName);

  @override
  String toJsHtml() {
    return HtmlUiEngine.render(Card(child: TextWidget('\${$jsVarName.title}')));
  }
}
0
likes
140
points
123
downloads

Publisher

unverified uploader

Weekly Downloads

A lightweight Dart DSL for building dynamic HTML interfaces with integrated JavaScript event handling and Fetch API support.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

More

Packages that depend on html_dsl_ui