flutter_address_form/example/lib/main.dart

99 lines
2.6 KiB
Dart
Raw Normal View History

2022-10-14 10:36:34 +02:00
import 'package:flutter/material.dart';
import 'package:flutter_address_form/flutter_address_form.dart';
2022-10-14 10:36:34 +02:00
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(
title: 'Flutter Demo',
theme: ThemeData(
// This is the theme of your application.
//
// Try running your application with "flutter run". You'll see the
// application has a blue toolbar. Then, without quitting the app, try
// changing the primarySwatch below to Colors.green and then invoke
// "hot reload" (press "r" in the console where you ran "flutter run",
// or simply save your changes to "hot reload" in a Flutter IDE).
// Notice that the counter didn't reset back to zero; the application
// is not restarted.
primarySwatch: Colors.blue,
),
2022-10-19 11:52:57 +02:00
home: AddressFormExample(),
2022-10-14 10:36:34 +02:00
);
}
}
class AddressFormExample extends StatelessWidget {
2022-10-25 08:36:32 +02:00
AddressFormExample({super.key});
2022-10-19 11:52:57 +02:00
2022-10-25 08:36:32 +02:00
// final RegExp zipcodeRegExp = RegExp(r'^[1-9][0-9]{3}\s?[a-zA-Z]{2}$');
final _addressController = AddressController(
zipCodeValidator: (text) {
if (text.isEmpty) {
return 'Can\'t be empty';
}
if (!RegExp(r'^[1-9][0-9]{3}\s?[a-zA-Z]{2}$').hasMatch(text)) {
return 'Invalid zipcode';
}
return null;
},
housenumberValidator: (text) {
if (text.isEmpty) {
return 'Can\'t be empty';
}
if (text.length >= 3 || int.tryParse(text) == null) {
return 'Invalid number';
}
return null;
},
suffixValidator: (text) {
if (text.isNotEmpty && RegExp(r'/^[a-z]*$/').hasMatch(text)) {
return 'Invalid prefix';
}
return null;
},
streetValidator: (text) {
if (text.isEmpty) {
return 'Can\'t be empty';
}
return null;
},
onAutoComplete: (address) {
return address;
},
cityValidator: (text) {
if (text.isEmpty) {
return 'Can\'t be empty';
}
return null;
},
);
2022-10-14 10:36:34 +02:00
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
2022-10-25 08:36:32 +02:00
body: Column(
children: [
AddressForm(
onSubmit: (value) => value, controller: _addressController),
TextButton(
2022-10-25 12:25:20 +02:00
onPressed: () {
_addressController.validate();
},
child: Text('Test'),
)
2022-10-25 08:36:32 +02:00
],
2022-10-19 11:52:57 +02:00
),
2022-10-14 10:36:34 +02:00
);
}
}