FREE PALESTINE 🇮🇷🇵🇸 پاینده ایران
GO VEGAN 🌱
==================================
The backbone of license plate packages for countries that actually exist (we checked).
Available plates
Core
plate_core- Paint license plates.plate_core_bloc- The optional bloc layer, for hosts already bloc-shaped.
Countries
iran_plate- Iran's license plates.germany_plate- Germany's license plates.palestine_plate- Palestine's license plates.yemen_plate- Yemen's license plates.iranshahr_plate- Bahrain's, Azerbaijan's and Afghanistan's license plates.lebanon_plate- Lebanon's license plates.
Utilities
plate_keypad- A character picker for license plates.
plate_core
A plate here is just a const PlateSpec: some geometry, a country panel, and a row of
slots over alphabets. The widget layer paints whatever the spec says, so adding a plate
means adding a const - never a widget, never a subclass, never a meeting.
plate_core knows no country and ships no assets. It hands you the plate face, the
slots, the input machine, and a PlateValidator that gives opinions but never blocks a
keystroke. The actual countries live in their own packages.
Install
dependencies:
plate_core: ^0.5.0
Then pick a country package (iran_plate, germany_plate, palestine_plate,
yemen_plate) and, if you want the on-screen keyboard, plate_keypad. The repo's
plate_gallery/ app draws every plate all four of them ship, in one place.
Use
import 'package:plate_core/plate_core.dart';
import 'package:iran_plate/iran_plate.dart';
PlateCanvas(
spec: IranPlates.civil,
onChooseCharacter: (alphabet) async => null,
)
That is a complete, editable plate. It needs nothing above it — no provider, no
bloc. A PlateCanvas owns its characters in a PlateController (a ChangeNotifier,
no dependency beyond Flutter); pass controller: when you want to read or write the
value, track the active slot, or feed characters from your own keypad. It brings its
own Material, so it survives outside a Scaffold.
Swapping spec: on a live canvas now carries the value across to the new spec,
matching registers by group key — onSpecChange tunes that.
If the code around your plate is already bloc-shaped, plate_core_bloc provides a
PlateCardBloc mirrored onto the controller; nothing in plate_core depends on it.
Things it refuses to do
- Know a country. Grep
lib/for a country name; a hit is a bug. - Police input. The validator can paint the frame red. It cannot stop you typing.
- Own your keyboard. Feed it characters from wherever you like.
- Choose your state management. A plate holds its own characters in a
PlateController. Bloc-shaped hosts addplate_core_bloc; core neither knows nor asks.
API
Whatever package:plate_core/plate_core.dart exports is API. Anything under
lib/src/ that the barrel doesn't re-export is ours to change without warning.
Also available
plate_alphabet- A library of alphabets for license plates.plate_keypad- A character picker for license plates.plate_number_holder- A frame to hold license plate numbers.algeria_plate- Algeria's licence plates.bolivia_plate- Bolivia's licence plates.colombia_plate- Colombia's licence plates.cuba_plate- Cuba's licence plates.germany_plate- Germany's licence plates.india_plate- India's licence plates.indonesia_plate- Indonesia's licence plates.iran_plate- Iran's licence plates.iranshahr_plate- Iranshahr region's licence plates.lebanon_plate- Lebanon's licence plates.malaysia_plate- Malaysia's licence plates.mali_plate- Mali's licence plates.niger_plate- Niger's licence plates.palestine_plate- Palestine's licence plates.sudan_plate- Sudan's licence plates.tunisia_plate- Tunisia's licence plates.venezuela_plate- venezuela_ licence plates.yemen_plate- Yemen's licence plates.
Libraries
- plate_core
- Data-driven vehicle licence plates for Flutter.