b24_widgets 0.0.15 copy "b24_widgets: ^0.0.15" to clipboard
b24_widgets: ^0.0.15 copied to clipboard

Flutter Package that include existing sample widgets

example/lib/main.dart

import 'package:b24_widgets/app/languages/generated/l10n.dart';
import 'package:b24_widgets/widgets/dropdown/ex_selection_tool.dart';
import 'package:b24_widgets/widgets/inputs/controller_text_input.dart';
import 'package:b24_widgets/widgets/others/ex_date_picker.dart';
import 'package:b24_widgets/widgets/others/ex_checkbox.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_localizations/flutter_localizations.dart';

void main() async {
  runApp(const MyApp());
  WidgetsFlutterBinding.ensureInitialized();
}

class CountryCollection {
  List<String> countries;
  CountryCollection(this.countries);
}

CountryCollection myItem = CountryCollection([
  'United States',
  'Canada',
  'France',
  'Germany',
  'United Kingdom',
  'Italy',
  'Spain',
  'Australia',
  'Brazil',
  'Argentina',
  'Mexico',
  'Russia',
  'Cambodia',
  'Turkey',
  'Iran',
  'Iraq',
  'Pakistan',
  'Afghanistan',
  'Indonesia',
  'Malaysia',
  'Thailand',
  'South Korea',
  'New Zealand',
]);

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

  @override
  Widget build(BuildContext context) => MaterialApp(
        title: 'Flutter Demo',
        theme: ThemeData(
          colorScheme: ColorScheme.fromSeed(
            seedColor: Colors.deepPurple,
            brightness: Brightness.light,
          ),
          useMaterial3: true,
        ),
        localizationsDelegates: const [
          S.delegate,
          GlobalMaterialLocalizations.delegate,
          GlobalWidgetsLocalizations.delegate,
          GlobalCupertinoLocalizations.delegate,
          DefaultCupertinoLocalizations.delegate,
        ],
        supportedLocales: [
          // Add supported locales for the first package
          ...S.delegate.supportedLocales,
          // Add supported locales for the second package
        ],
        locale: const Locale('en', 'US'),
        home: const MyHomePage(title: 'Bill24 Reusable Widget'),
      );
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
  final TextEditingController _dateController = TextEditingController();
  final TextEditingController controlPass = TextEditingController();
  final TextEditingController controlConfirm = TextEditingController();

  final List<DateTime?> _dialogCalendarPickerValue = [
    DateTime.now(),
    DateTime.now().add(const Duration(days: 3)),
  ];

  @override
  Widget build(BuildContext context) => Scaffold(
        appBar: AppBar(
          backgroundColor: Theme.of(context).colorScheme.inversePrimary,
          title: Text(widget.title),
        ),
        body: Form(
          key: _formKey,
          child: Container(
              padding: const EdgeInsets.all(10.0),
              child: Column(
                crossAxisAlignment: CrossAxisAlignment.start,
                children: <Widget>[
                  const Padding(
                    padding: EdgeInsets.symmetric(horizontal: 17.0),
                    child: Text(
                      'Controller for Selection dropdown (search, select single & multiple)',
                      style: TextStyle(fontWeight: FontWeight.bold),
                    ),
                  ),
                  const SizedBox(
                    height: 10.0,
                  ),
                  ExSelectionTool(
                    allItems: myItem.countries,
                    isMultiSelect: true,
                    prefixIcon: const Icon(Icons.search),
                    suffixIcon: const Icon(Icons.arrow_drop_down_rounded),
                    sizeLabel: ExInputSizeType.medium,
                    textColor: Colors.red,
                    radiusSize: 10.0,
                  ),
                  const Padding(
                    padding: EdgeInsets.symmetric(horizontal: 17.0),
                    child: Text(
                      'Password validation',
                      style: TextStyle(fontWeight: FontWeight.bold),
                    ),
                  ),
                  const SizedBox(
                    height: 10.0,
                  ),
                  ExTextInput(
                    label: 'Email',
                    hintText: 'Email',
                    isRequired: false,
                    type: ExInputType.email,
                    sizeLabel: ExInputSizeType.small,
                    prefixIcon: const Icon(Icons.email_rounded),
                    onTap: () {},
                  ),
                  ExTextInput(
                    label: 'Text',
                    hintText: 'Enter your content',
                    isRequired: false,
                    type: ExInputType.text,
                    sizeLabel: ExInputSizeType.small,
                    inputFormatters: [
                      FilteringTextInputFormatter.singleLineFormatter
                    ],
                    textCapitalization: TextCapitalization.words,
                    textInputAction: TextInputAction.previous,
                    maxLines: 10,
                    // readOnly: true,
                  ),
                  ExTextInput(
                    isRequired: true,
                    type: ExInputType.passwords,
                    confirmPassword: false,
                    controller: controlPass,
                    isShowRuleValidate: true,
                    label: 'Password',
                  ),
                  ExTextInput(
                    type: ExInputType.passwords,
                    confirmPassword: true,
                    label: 'Confirm Password',
                    controller: controlConfirm,
                    controllerConfirm: controlPass,
                    externalValidator: (value) {
                      if (value != controlPass.text) {
                        return 'Your passowrd not match!';
                      }
                    },
                  ),
                  const Padding(
                    padding: EdgeInsets.symmetric(horizontal: 17.0),
                    child: Text(
                      'Date range picker selection (select start date to end date in single label)',
                      style: TextStyle(fontWeight: FontWeight.bold),
                    ),
                  ),
                  const SizedBox(
                    height: 10.0,
                  ),
                ],
              )),
        ),
      );
}
1
likes
0
points
17
downloads

Publisher

unverified uploader

Weekly Downloads

Flutter Package that include existing sample widgets

Homepage
Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

calendar_date_picker2, flutter, flutter_localizations, flutter_svg, gap, intl, mask_text_input_formatter, provider

More

Packages that depend on b24_widgets