Code Monkey home page Code Monkey logo

flutter_thailand_provinces's Introduction

Flutter Thailand Provinces

ฐานข้อมูลจังหวัด อำเภอ ตำบล หมายเลขไปรษณีย์ของประเทศไทย สำหรับใช้งานใน Flutter เลือกจังหวัดผ่าน dialog อย่างง่าย

ฐานข้อมูล .sql จากคุณ parsilver แล้วแปลงเป็น .db สำหรับ SQLite เพื่อใช้งานใน Flutter

https://github.com/parsilver/thailand-provinces

การติดตั้ง

เพิ่ม dependencies ในไฟล์ pubspec.yaml

dependencies:
    flutter_thailand_provinces: 1.0.1

รายละเอียดได้ที่ pub.dev https://pub.dev/packages/flutter_thailand_provinces/

การใช้งาน

ก่อนการใช้งานฐานข้อมูลจำเป็นต้องสร้างฐานข้อมูลจังหวัดก่อน

//import 'dart:async';
//import 'package:flutter_thailand_provinces/flutter_thailand_provinces.dart';

Future main() async {
  WidgetsFlutterBinding.ensureInitialized(); // ensure flutter initialized.
  await ThailandProvincesDatabase.init();    // initialize database.
  runApp(MyApp());
}

ข้อมูลจังหวัด (Province)

การสืบค้น (query) ข้อมูลจังหวัดจะทำผ่าน ProvinceProvider จากนั้นคุณจะได้ List ที่มีข้อมูลชื่อจังหวัดภายใน

//import 'package:flutter_thailand_provinces/provider/province_provider.dart';
//import 'package:flutter_thailand_provinces/dao/province_dao.dart';

var list = await ProvinceProvider.all();
for(ProvinceDao province in list){
   // province.nameTh;
   // province.nameEn;
   // province.id;
}

การค้นหาจังหวัดจากชื่อ

var list = await ProvinceProvider.search(keyword: "เชียงใหม่");

ตัวอย่างการใช้งาน

Screenshot

ข้อมูลอำเภอ (Amphure)

การ query ข้อมูลอำเภอทำผ่าน AmphureProvider จากนั้นคุณจะได้ List ที่มีข้อมูลอำเภอ

เรียกดูรายการอำเภอทั้งหมด (ประเทศไทยมีอำเภอทั้งหมดประมาณ 1,000 อำเภอ)

//import 'package:flutter_thailand_provinces/provider/amphure_provider.dart';
//import 'package:flutter_thailand_provinces/dao/amphure_dao.dart';

var list = await AmphureProvider.all();
for(AmphureDao amphure in list){
   // amphure.id;
   // amphure.provinceId;
   // amphure.nameTh;
   // amphure.nameEn;
}

รายการอำเภอเฉพาะในจังหวัดนั้น คุณจำเป็นต้องทราบ provinceId เช่น provinceId = 1 คือ กรุงเทพฯ

var list = await AmphureProvider.all(provinceId : 1);

ค้นหาอำเภอ

var list = await AmphureProvider.search(keyword: "บาง");

ค้นหาอำเภอเฉพาะในจังหวัด

var list = await AmphureProvider.searchInProvince(provinceId: 1, keyword: "บาง");

ตัวอย่างการใช้งาน

Screenshot

ข้อมูลตำบล (District)

การ query ข้อมูลตำบลทำผ่าน DistrictProvider จากนั้นคุณจะได้ List ที่มีข้อมูลตำบล ประกอบไปด้วยชือ และหมายเลขไปรษณีย์

เรียกดูรายการทั้งหมด (ประเทศไทยมีตำบลทั้งหมดประมาณ 9,000 ตำบล)

//import 'package:flutter_thailand_provinces/provider/district_provider.dart';
//import 'package:flutter_thailand_provinces/dao/district_dao.dart';

var list = await DistrictProvider.all();
for(DistrictDao district in list){
   // district.id;
   // district.amphureId;
   // district.zipCode;
   // district.nameTh;
   // district.nameEn;
}

การเรียกดูตำบลทั้งหมดในอำเภอ จะต้องใช้ amphure id

var list = await DistrictProvider.all(amphureId: 1001);

การค้นหาตำบลจากในอำเภอ

var list = await DistrictProvider.searchInAmphure(amphureId: 1001, keyword: "แม่เมาะ");

ตัวอย่างการใช้งาน

Screenshot

ข้อมูลที่อยู่ (Address)

Address คือ การนำข้อมูล จังหวัด อำเภอ และตำบล มา join กัน โดยวิธีการใช้งานคือ ใช้งานผ่าน AddressProvider จากนั้นคุณจะได้ List ซึ่งใน AddressDao จะมีข้อมูล 3 ส่วนคือ ProvinceDao, AmphureDao, DistrictDao นั่นเอง

การ query ข้อมูล address ทั้งหมด

//import 'package:flutter_thailand_provinces/provider/address_provider.dart';
//import 'package:flutter_thailand_provinces/dao/address_dao.dart';

var list = await AddressProvider.all();
for(AddressDao address in list){
   // address.province;
   // address.amphure;
   // address.district;
}

ข้อมูล address เฉพาะในจังหวัด

var list = await AddressProvider.all(provinceId: 1);

ค้นหาโดยใช้คำค้น (keyword)

var list = await AddressProvider.search(keyword: "นา");

ค้นหาโดยใช้คำค้น (keyword) เฉพาะในจังหวัด

var list = await AddressProvider.searchInProvince(provinceId: 1, keyword: "101");

ตัวอย่างการใช้งาน

Screenshot

การใช้ Dialog เลือกจังหวัด

หากต้องการเลือกจังหวัดแบบรวดเร็ว สามารถเรียกใช้ ChooseProvinceDialog

//import 'package:flutter_thailand_provinces/provider/province_provider.dart';
//import 'package:flutter_thailand_provinces/dialog/choose_province_dialog.dart';

var list = await ProvinceProvider.all();
ProvinceDao province = await ChooseProvinceDialog.show(context, listProvinces: list);

การ custom style ของ ChooseProvinceDialog สามารถกำหนดสีและ font-family ได้

Screenshot

ตัวอย่างการใช้งาน

//import 'package:flutter_thailand_provinces/provider/province_provider.dart';
//import 'package:flutter_thailand_provinces/dialog/choose_province_dialog.dart';
//import 'package:flutter_thailand_provinces/dao/province_dao.dart';

var list = await ProvinceProvider.all();
ProvinceDao province = await ChooseProvinceDialog.show(context,
                    listProvinces: list,
                    colorBackgroundHeader: Colors.purple[300],
                    colorLineHeader: Colors.purple[500],
                    styleTitle: TextStyle(fontSize: 18, fontFamily: "Kanit-Regular"),
                    styleSubTitle: TextStyle(fontSize: 14, fontFamily: "Kanit-Regular", 
                                       color: Colors.grey[400]),
                    styleTextNoData: TextStyle(fontFamily: "Kanit-Regular"),
                    styleTextSearchHint: TextStyle(fontFamily: "Kanit-Regular"),
                    styleTextSearch: TextStyle(fontFamily: "Kanit-Regular"));
                  

flutter_thailand_provinces's People

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.