b24_widgets 0.0.6
b24_widgets: ^0.0.6 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/helpers/ui_utils.dart';
import 'package:b24_widgets/widgets/buttons/ex_button.dart';
import 'package:b24_widgets/widgets/buttons/ex_loading_button.dart';
import 'package:b24_widgets/widgets/dropdown/ex_dropdown_textfield.dart';
import 'package:b24_widgets/widgets/inputs/ex_text_input.dart';
import 'package:b24_widgets/widgets/texts/text_widget.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
localizationsDelegates: const [
S.delegate,
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
DefaultCupertinoLocalizations.delegate,
],
supportedLocales: S.delegate.supportedLocales,
locale: const Locale('km', 'KH'),
title: 'Flutter Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const MyHomePage(title: 'Bill24 Reusable Widgets'),
);
}
}
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 TextEditingController _txtPassword = TextEditingController();
final TextEditingController _txtEmail = TextEditingController();
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
@override
Widget build(BuildContext context) {
return 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(
children: [
const ExTextInput(
label: 'Last Name',
inputType: ExInputType.text,
isRequired: true,
),
itemGap,
ExTextInput(
label: 'Email',
inputType: ExInputType.email,
isRequired: true,
controller: _txtEmail,
),
itemGap,
ExTextInput(
label: 'Password',
inputType: ExInputType.password,
controller: _txtPassword,
isRequired: true,
),
itemGap,
ExDropdownTextfield(
label: S.current.x_invalid_email,
isRequired: true,
),
itemGap,
SizedBox(
width: double.infinity,
height: 40.0,
child: ExButton(
paddingVertical: 6.5,
const TextWidget('Button'),
variant: ButtonVariant.filled,
onTap: () async {
if (_formKey.currentState!.validate()) {
debugPrint(_formKey.toString());
}
},
),
),
itemGap,
// SizedBox(
// width: double.infinity,
// height: 40,
// child: ExLoadingButton(
// const TextWidget('Loading Button'),
// variant: ButtonVariant.filled,
// paddingHorizone: 16,
// onTap: () async {
// if (_formKey.currentState!.validate()) {
// debugPrint(_formKey.toString());
// }
// },
// ),
// ),
],
)
),
),
);
}
}