flartdart 2.0.0 copy "flartdart: ^2.0.0" to clipboard
flartdart: ^2.0.0 copied to clipboard

Platformweb

A comprehensive Flutter-inspired UI framework for Dart Web applications with 100+ widgets, animations, forms, and media support.

example/main.dart

import 'package:flartdart/flartdart.dart';
import 'pages/basic_showcase.dart';
import 'pages/layout_showcase.dart';
import 'pages/input_showcase.dart';
import 'pages/animation_showcase.dart';
import 'pages/structure_showcase.dart';
import 'pages/navigation_showcase.dart';
import 'pages/media_showcase.dart';
import 'pages/interactive_showcase.dart';
import 'pages/scrollable_showcase.dart';
import 'pages/dialog_showcase.dart';

void main() {
  runApp(CatalogApp());
}

class CatalogApp extends StatefulWidget {
  @override
  State<CatalogApp> createState() => _CatalogAppState();
}

class _CatalogAppState extends State<CatalogApp> {
  int _selectedIndex = 0;

  final List<String> _menuItems = [
    'Basic Widgets',
    'Layout Widgets',
    'Input Widgets',
    'Animation Widgets',
    'Structure Widgets',
    'Navigation Widgets',
    'Media Widgets',
    'Interactive Widgets',
    'Scrollable Widgets',
    'Dialog Widgets',
  ];

  final List<Widget> _pages = [
    BasicShowcase(),
    LayoutShowcase(),
    InputShowcase(),
    AnimationShowcase(),
    StructureShowcase(),
    NavigationShowcase(),
    MediaShowcase(),
    InteractiveShowcase(),
    ScrollableShowcase(),
    DialogShowcase(),
  ];

  @override
  Widget build(BuildContext context) {
    return FDMaterialApp(
      title: 'FlartDart Catalog',
      home: FDScaffold(
        appBar: FDAppBar(
          title: FDText(
            'FlartDart Widget Catalog 🚀',
            style: TextStyle(
                color: FlartColor('#ffffff'), fontWeight: FontWeight.bold),
          ),
          backgroundColor: FlartColors.blue,
        ),
        body: FDRow(
          crossAxisAlignment: CrossAxisAlignment.stretch,
          children: [
            // Sidebar
            FDContainer(
              width: 250,
              decoration: BoxDecoration(
                color: FlartColor('#ffffff'),
                border: Border(
                    right: BorderSide(color: FlartColor('#e2e8f0'), width: 1)),
              ),
              child: FDColumn(
                crossAxisAlignment: CrossAxisAlignment.stretch,
                children: List.generate(_menuItems.length, (index) {
                  final isSelected = _selectedIndex == index;
                  return _SidebarItem(
                    title: _menuItems[index],
                    isSelected: isSelected,
                    onTap: () {
                      setState(() {
                        _selectedIndex = index;
                      });
                    },
                  );
                }),
              ),
            ),

            // Main Content Area
            FDExpanded(
              child: FDContainer(
                padding: EdgeInsets.all(40),
                cssStyle: {
                  'overflow-y': 'auto',
                  'background-color': '#f1f5f9',
                },
                child: _pages[_selectedIndex],
              ),
            ),
          ],
        ),
      ),
    );
  }
}

class _SidebarItem extends StatelessWidget {
  final String title;
  final bool isSelected;
  final VoidCallback onTap;

  _SidebarItem({
    required this.title,
    required this.isSelected,
    required this.onTap,
  });

  @override
  Widget build(BuildContext context) {
    return FDGestureDetector(
      onTap: onTap,
      child: FDContainer(
        padding: EdgeInsets.symmetric(horizontal: 20, vertical: 16),
        decoration: BoxDecoration(
          color: FlartColor(isSelected ? '#eff6ff' : '#ffffff'),
          border: Border(
            left: BorderSide(
              color: FlartColor(isSelected ? '#3b82f6' : 'transparent'),
              width: 4,
            ),
          ),
        ),
        child: FDText(
          title,
          style: TextStyle(
            fontSize: 16,
            fontWeight: isSelected ? FontWeight.bold : FontWeight.normal,
            color: FlartColor(isSelected ? '#1d4ed8' : '#475569'),
          ),
        ),
        cssStyle: {
          'cursor': 'pointer',
          'transition': 'all 0.2s ease',
        },
      ),
    );
  }
}
4
likes
130
points
103
downloads

Documentation

Documentation
API reference

Publisher

unverified uploader

Weekly Downloads

A comprehensive Flutter-inspired UI framework for Dart Web applications with 100+ widgets, animations, forms, and media support.

Repository (GitHub)
View/report issues
Contributing

Topics

#web #ui #framework #widget #flutter-inspired

License

MIT (license)

Dependencies

args, web

More

Packages that depend on flartdart