tagflow 0.0.1-dev.4 copy "tagflow: ^0.0.1-dev.4" to clipboard
tagflow: ^0.0.1-dev.4 copied to clipboard

Transform HTML markup into native Flutter widgets with an elegant, customizable converter.

⚠️ IMPORTANT: This package is currently undergoing a complete rewrite. For a stable version, please check out the stable branch.

🚧 Alpha Release: This package is in active development. APIs may change frequently. For production use, please wait for v1.0.0.

tagflow #

Transform HTML markup into native Flutter widgets with an elegant, customizable converter. Supports tables, iframes, and other HTML elements through optional add-on packages.

pub package style: very good analysis


Feature Highlights #

🚀 Simple Integration

class MyHtmlWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Tagflow(
      html: '<div>Hello, Flutter!</div>',
    );
  }
}

🎨 Material Design Integration

Tagflow(
  html: htmlContent,
  theme: TagflowTheme.fromTheme(
    Theme.of(context),
    headingConfig: TagflowHeadingConfig(
      baseSize: 16.0,
      scales: [2.5, 2.0, 1.75, 1.5, 1.25, 1.0],
    ),
  ),
)

🎯 CSS-like Styling

<div
  style="
    display: flex;
    flex-direction: column;
    gap: 16px;
    padding: 24px;
    background-color: var(--surface-container);
    border-radius: 8px;
  "
>
  <h1
    style="
      color: var(--on-surface);
      font-size: 2rem;
      margin: 0;
    "
  >
    Material Design
  </h1>
  <p class="highlight">Seamlessly integrates with your app's theme</p>
</div>

📦 Custom Themes

Tagflow(
  html: htmlContent,
  theme: TagflowTheme(
    defaultStyle: TagflowStyle(
      textStyle: TextStyle(fontSize: 16),
      padding: EdgeInsets.all(8),
    ),
    styles: {
      'h1': TagflowStyle(
        textStyle: TextStyle(
          fontSize: 32,
          fontWeight: FontWeight.bold,
        ),
        margin: EdgeInsets.symmetric(vertical: 16),
      ),
      '.highlight': TagflowStyle(
        backgroundColor: Colors.yellow.withOpacity(0.3),
        padding: EdgeInsets.all(4),
        borderRadius: BorderRadius.circular(4),
      ),
    },
    namedColors: {
      'brand': Colors.purple,
      'accent': Colors.amber,
    },
  ),
)

Installation #

Add tagflow to your pubspec.yaml:

dependencies:
  tagflow: ^1.0.0

Theme System #

Tagflow's theme system seamlessly integrates with Flutter's Material Design while providing powerful customization options:

  • 🎨 Material Integration: Automatically uses your app's theme colors and typography
  • 🔧 Custom Styling: Define styles for specific HTML elements and CSS classes
  • 📏 Responsive Units: Supports rem, em, and percentage-based units
  • 🎯 CSS Features: Flexbox layout, borders, shadows, and more
  • 🌈 Color System: Use theme colors or define custom color palettes

Theme Configuration #

// Use Material Theme
TagflowTheme.fromTheme(
  Theme.of(context),
  spacingConfig: TagflowSpacingConfig(
    baseSize: 16.0,
    scale: 1.2,
  ),
)

// Basic Theme
TagflowTheme.basic(
  textStyle: TextStyle(fontSize: 16),
  padding: EdgeInsets.all(8),
)

// Minimal Theme
TagflowTheme.minimal(
  baseStyle: TextStyle(fontSize: 16),
  linkColor: Colors.blue,
)

Documentation #

Visit our documentation for detailed guides and examples.

Add-on Packages #

  • tagflow_tailwind - Tailwind CSS integration
0
likes
150
points
100
downloads

Publisher

verified publisheraryak.dev

Weekly Downloads

Transform HTML markup into native Flutter widgets with an elegant, customizable converter.

Homepage
Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

collection, equatable, flutter, html

More

Packages that depend on tagflow