wilaya 1.3.3 copy "wilaya: ^1.3.3" to clipboard
wilaya: ^1.3.3 copied to clipboard

wilaya is a Dart package that provides a list of Algerian wilayas (provinces) and their respective codes.

Getting started #

This Flutter package provides an easy way to access a JSON file containing all the wilayas (provinces) and communes (municipalities) of Algeria. It allows developers to retrieve province and municipality names dynamically within their Flutter applications.

The package offers:

A predefined JSON dataset containing all Algerian provinces and municipalities.

Methods to fetch, search, and filter provinces and municipalities efficiently.

Compatibility with Flutter and Dart, making integration simple and fast.

Ideal for applications requiring address selection, geolocation, or administrative data handling in Algeria.

Screenshot: #

Example #

import 'package:flutter/material.dart';
import 'package:wilaya/wilaya.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  runApp(MaterialApp(
    home: Scaffold(
      appBar: AppBar(title: const Text('Wilaya App')),
      body: WilayaScreen(),
    ),
  ));
}

class WilayaScreen extends StatefulWidget {
  @override
  _WilayaScreenState createState() => _WilayaScreenState();
}

class _WilayaScreenState extends State<WilayaScreen> {
  final WilayaBase wilayaBase = WilayaBase();
  String wilayaName = "M'SILA";
  String wilayaCode = "28";
  String wilayaZipCode = "28000";
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(title: Text("ولايات الجزائر")),
        body: Center(
          child: Column(
            children: [
              ElevatedButton(
                  onPressed: () async {
                    var wilayaData = await wilayaBase.getWilaya(context);

                    var wilayaNamelist =
                        wilayaData.entries.map((e) => e.key).toList();

                    _showCustomBottomSheetWilaya(context, wilayaNamelist, true);
                  },
                  child: Text('عرض الولايات')),
              ElevatedButton(
                  onPressed: () async {
                    var wilayaData = await wilayaBase.getWilaya(context);

                    String? citiesString = wilayaBase
                        .getAllCities(wilayaData, wilayaName)
                        .toString();

                    List<String> data = citiesString.split(',');

                    _showCustomBottomSheetWilaya(context, data, false);
                  },
                  child: Text(' عرض المدن')),
              ElevatedButton(
                  onPressed: () async {
                    var wilayaData = await wilayaBase.getWilaya(context);

                    String? citiesString = wilayaBase
                        .getAllCities(wilayaData, wilayaName)
                        .toString();

                    List<String> cities = citiesString.split(',');

                    List<String> zipCodes = [];
                    List<String> c = [];

                    for (var city in cities) {
                      var zipCode =
                          wilayaBase.getZipCode(wilayaData, city.trim());

                      if (zipCode != null) {
                        zipCodes.add(zipCode);
                        c.add(city.trim() + " : " + zipCode);
                      }
                    }

                    _showCustomBottomSheetWilaya(context, c, false);
                  },
                  child: Text('عرض الرموز البريدية')),
              // Text(wilayaName + )
            ],
          ),
        ));
  }

  void _showCustomBottomSheetWilaya(BuildContext context, data, wilaya) async {
    showModalBottomSheet<void>(
      context: context,
      isScrollControlled: true,
      shape: RoundedRectangleBorder(
        borderRadius: BorderRadius.vertical(top: Radius.circular(12)),
      ),
      builder: (BuildContext context) {
        var size = MediaQuery.of(context).size;
        return Container(
          width: double.infinity,
          height: size.height * 0.5,
          decoration: BoxDecoration(
            borderRadius: BorderRadius.vertical(top: Radius.circular(10)),
            color: Color(0xFF232428),
          ),
          child: ListView.builder(
            itemCount: data.length,
            itemBuilder: (context, index) {
              var city =
                  data[index].trim().replaceAll("[", '').replaceAll(']', '');
              return ListTile(
                title: Text(city, style: TextStyle(color: Colors.white)),
                onTap: () {
                  if (wilaya) {
                    wilayaName = city;
                  } else {
                    wilayaName = "M'SILA";
                  }
                  Navigator.pop(context);
                },
              );
            },
          ),
        );
      },
    );
  }
}

1
likes
135
points
88
downloads

Publisher

unverified uploader

Weekly Downloads

wilaya is a Dart package that provides a list of Algerian wilayas (provinces) and their respective codes.

Repository (GitHub)

Documentation

API reference

License

MIT (license)

Dependencies

flutter, path

More

Packages that depend on wilaya