basic_widgets 1.0.3 copy "basic_widgets: ^1.0.3" to clipboard
basic_widgets: ^1.0.3 copied to clipboard

unlisted

Basic Widgets library

example/lib/main.dart

import 'package:basic_widgets/basic_widgets.dart';
import 'package:flutter/material.dart';

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

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

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      home: TestView(),
    );
  }
}

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        body: Center(
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          const DialogButton(),
          const SheetButton(),
          BasicButton.secondary(
            child: const Text('Secondary'),
            onPressed: () {
              showBasicSnackBar(
                context: context,
                content: 'Secondary',
                type: SnackBarType.error,
              );
            },
          ),
        ],
      ),
    ));
  }
}

@immutable
final class SheetButton extends StatelessWidget {
  const SheetButton({
    super.key,
  });

  @override
  Widget build(BuildContext context) {
    return BasicButton.outlined(
      child: const Text('Show Sheet'),
      onPressed: () {
        showBasicModalSheet(
          context: context,
          enableDrag: false,
          isDismissible: false,
          constraints: const BoxConstraints.expand(
            width: double.infinity,
            height: 340 + 28,
          ),
          builder: (context) => BasicSheet(
            type: BasicSheetType.withOutCloseButton,
            child: SafeArea(
              child: SizedBox(
                height: 340 + 28,
                child: PopScope(
                  canPop: false,
                  child: Column(
                    children: [
                      Expanded(
                        child: BasicCard(
                          color: Theme.of(context)
                              .colorScheme
                              .primary
                              .withOpacity(.12),
                          margin: const EdgeInsets.all(24),
                          child: Column(
                            mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                            children: [
                              BasicCard(
                                width: 44,
                                height: 44,
                                color: Theme.of(context).colorScheme.primary,
                                child: Icon(
                                  FontAwesomeIcons.clockRotateLeft,
                                  color:
                                      Theme.of(context).colorScheme.onPrimary,
                                ),
                              ),
                              Text(
                                'Update required',
                                style: Theme.of(context).textTheme.titleLarge,
                              ),
                              Text(
                                'Sorry for any inconvenience. We have recently made some update and bug fixes to improve your app experience.',
                                style: Theme.of(context).textTheme.bodyMedium,
                                textAlign: TextAlign.center,
                              ),
                            ],
                          ),
                        ),
                      ),
                      BasicButton.primary(
                        child: const Text(
                          'Update',
                        ),
                        onPressed: () {
                          Navigator.of(context).pop();
                        },
                      ),
                    ],
                  ),
                ),
              ),
            ),
          ),
        );
      },
    );
  }
}

@immutable
final class DialogButton extends StatelessWidget {
  const DialogButton({
    super.key,
  });

  @override
  Widget build(BuildContext context) {
    return BasicButton.primary(
      child: const Text('Show Dialog'),
      onPressed: () {
        showBasicDialog(
          context,
          delegate: BasicDialogDelegate(
            title: 'Update Required',
            content:
                'Sorry for any inconvenience. We have recently made some update and bug fixes to improve your app experience.',
            actions: [
              BasicDialogAction(
                text: 'Update',
                buttonType: ActionButtonType.filled,
                onPressed: () {
                  Navigator.of(context).pop();
                },
              ),
            ],
            barrierDismissible: false,
          ),
        );
      },
    );
  }
}