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

A small kit of domain-free Flutter widgets: neumorphic buttons and containers, gradient text, dropdown menu icon, percent and time range switches, and more.

example/lib/main.dart

import 'package:atomic_ui_kit/atomic_ui_kit.dart';
import 'package:decimal/decimal.dart';
import 'package:flutter/material.dart';

void main() {
  runApp(const ExampleApp());
}

class ExampleApp extends StatelessWidget {
  const ExampleApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'atomic_ui_kit example',
      theme: ThemeData(
        brightness: Brightness.dark,
        canvasColor: const Color(0xFF1E2638),
        extensions: const [
          NeuTheme(keyBackgroundColor: Color(0xFF252F45), borderRadius: 12),
        ],
      ),
      home: const ExampleHomePage(),
    );
  }
}

class ExampleHomePage extends StatefulWidget {
  const ExampleHomePage({super.key});

  @override
  State<ExampleHomePage> createState() => _ExampleHomePageState();
}

class _ExampleHomePageState extends State<ExampleHomePage> {
  static const double _pagePadding = 24;

  double _percent = 0.5;
  TimeRangeSwitchValue _range = TimeRangeSwitchValue.week;

  @override
  Widget build(BuildContext context) {
    final availableWidth = MediaQuery.sizeOf(context).width - _pagePadding * 2;
    return Scaffold(
      appBar: AppBar(title: const Text('atomic_ui_kit example')),
      body: ListView(
        padding: const EdgeInsets.all(_pagePadding),
        children: [
          NeuButton(
            height: 56,
            width: double.infinity,
            semanticLabel: 'Buy',
            onTap: () {},
            child: const Text('Buy'),
          ),
          const SizedBox(height: 24),
          const NeuContainer(
            height: 80,
            width: double.infinity,
            child: Center(child: Text('NeuContainer')),
          ),
          const SizedBox(height: 24),
          Text('Percent: ${(_percent * 100).round()} %'),
          PercentSwitch(
            width: availableWidth / 4,
            onChanged: (percent) => setState(() => _percent = percent),
          ),
          const SizedBox(height: 24),
          Text('Range: ${_range.name}'),
          FittedBox(
            fit: BoxFit.scaleDown,
            child: TimeRangeSwitch(
              onChanged: (range) => setState(() => _range = range),
            ),
          ),
          const SizedBox(height: 24),
          Center(child: PriceBadge(percentage: Decimal.parse('12.34'))),
        ],
      ),
    );
  }
}
0
likes
0
points
477
downloads

Publisher

unverified uploader

Weekly Downloads

A small kit of domain-free Flutter widgets: neumorphic buttons and containers, gradient text, dropdown menu icon, percent and time range switches, and more.

Repository (GitHub)
View/report issues

Topics

#widget #ui #neumorphic #components

License

unknown (license)

Dependencies

decimal, flutter

More

Packages that depend on atomic_ui_kit