thai_province_dropdown 0.0.2
thai_province_dropdown: ^0.0.2 copied to clipboard
A Flutter widget for easily selecting Thai provinces, districts (amphures), subdistricts (tambons), and zip codes.
Thai Province Dropdown #
A Flutter widget for easily selecting Thai provinces, districts (amphures), subdistricts (tambons), and zip codes. This widget simplifies the process of filling out address forms with accurate Thai administrative division data.
Key Features:
- Dropdown Selectors: Intuitive dropdown menus for selecting province, district, and subdistrict.
- Automatic Zip Code: Automatically populates the zip code based on the selected subdistrict.
- Data Driven: Leverages comprehensive and up-to-date Thai administrative division data.
- Customizable: Adjust layout, size, padding, and language.
- Controller: easy access to selected values by
ThaiProvincesDropdownController
- Easy Integration: Simple to integrate into existing Flutter projects.
- Localization: supports
en_US
andth_TH
locale (more locales in future)
Data Source:
The underlying data for provinces, districts, subdistricts, and zip codes is sourced from thai-province-data, ensuring accuracy and reliability.
Getting Started
-
Add Dependency:
Add
thai_province_dropdown
to yourpubspec.yaml
file:dependencies: flutter: sdk: flutter thai_province_dropdown: ^0.0.1
Then run:
flutter pub get
-
Import:
import 'package:thai_province_dropdown/thai_province_dropdown.dart';
-
Create a Controller:
Instantiate a
ThaiProvincesDropdownController
to manage the selected values:final ThaiProvincesDropdownController thaiProvincesController = ThaiProvincesDropdownController();
-
Use the Widget:
Integrate the
ThaiProvincesDropdown
widget into your UI, typically within a form:ThaiProvincesDropdown( controller: thaiProvincesController, direction: Axis.vertical, // Optional: Choose Axis.horizontal for a horizontal layout. width: 280.0, // Optional: Set a custom width. padding: const EdgeInsets.all(4.0), // Optional: Customize padding. locale: const Locale('en', 'US'), // Optional: Set the language (default is 'th_TH') )
-
Access Selected Values:
Retrieve the selected province, district, subdistrict IDs, and zip code from the controller:
//Inside Widget Tree, after ThaiProvincesDropdown Text('Province ID: ${thaiProvincesController.provinceId}'), Text('District ID: ${thaiProvincesController.amphureId}'), Text('Subdistrict ID: ${thaiProvincesController.tambonId}'), Text('Zip Code: ${thaiProvincesController.zipcode}'),
Complete Example:
import 'package:flutter/material.dart';
import 'package:thai_province_dropdown/thai_province_dropdown.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Thai Province Dropdown Example'),
),
body: const MyForm(),
),
);
}
}
class MyForm extends StatefulWidget {
const MyForm({super.key});
@override
State<MyForm> createState() => _MyFormState();
}
class _MyFormState extends State<MyForm> {
final ThaiProvincesDropdownController thaiProvincesController = ThaiProvincesDropdownController();
@override
Widget build(BuildContext context) {
return Column(
children: [
ThaiProvincesDropdown(
controller: thaiProvincesController,
direction: Axis.vertical,
width: 300,
padding: const EdgeInsets.all(8.0),
locale: const Locale('en', 'US'),
),
const SizedBox(height: 20),
Text('Province ID: ${thaiProvincesController.provinceId}'),
Text('District ID: ${thaiProvincesController.amphureId}'),
Text('Subdistrict ID: ${thaiProvincesController.tambonId}'),
Text('Zip Code: ${thaiProvincesController.zipcode}'),
],
);
}
}