NG Higher Education Institutions
A comprehensive Flutter/Dart package providing access to data about all Nigerian higher educational institutions including universities, polytechnics, colleges, and specialized institutions.
Features
-
📚 Complete Database: Contains over 290 Nigerian institutions including:
- Federal, State, and Private Universities
- Polytechnics and Monotechnics
- Colleges (Agriculture, Education, Health, etc.)
- Military and Police institutions
-
🔍 Powerful Search: Find institutions by:
- State location
- Institution name
- Abbreviation (e.g., UNILAG, ABU, OAU)
-
📊 Detailed Information: Each institution includes:
- Full name and abbreviation
- State and Local Government Area (LGA)
- Funding type (Federal, State, Private, Military, Police)
- Institution type (University, Polytechnic, College, etc.)
- Establishment year
- Website URL
- Coordinates (longitude/latitude - when available)
Installation
Add this package to your pubspec.yaml:
dependencies:
ng_higher_ed_institutions: ^0.0.1
Then run:
flutter pub get
Usage
Basic Usage
import 'package:ng_higher_ed_institutions/ng_higher_ed_institutions.dart';
// Get all institutions
final allInstitutions = NigerianInstitutions.getAllInstitutions();
print('Total institutions: ${allInstitutions.length}');
// Get institutions in a specific state
final lagosInstitutions = NigerianInstitutions.getInstitutionsInState('Lagos');
print('Lagos has ${lagosInstitutions.length} institutions');
// Find institution by abbreviation
final unilag = NigerianInstitutions.getInstitutionByAbbreviation('UNILAG');
if (unilag != null) {
print('Found: ${unilag.name}');
print('Established: ${unilag.year}');
print('Website: ${unilag.website}');
}
// Find institution by name
final abu = NigerianInstitutions.getInstitutionByName('Ahmadu Bello University');
if (abu != null) {
print('Abbreviation: ${abu.abbreviation}');
print('Location: ${abu.state}, ${abu.lga}');
}
Working with Institution Data
import 'package:ng_higher_ed_institutions/ng_higher_ed_institutions.dart';
// Get all federal universities
final allInstitutions = NigerianInstitutions.getAllInstitutions();
final federalUniversities = allInstitutions.where((inst) =>
inst.funding == Funding.federal &&
inst.type == Type.university
).toList();
print('Federal Universities: ${federalUniversities.length}');
// Get all private polytechnics in Lagos
final lagosInstitutions = NigerianInstitutions.getInstitutionsInState('Lagos');
final privatePolytechnics = lagosInstitutions.where((inst) =>
inst.funding == Funding.private &&
inst.type == Type.polytechnic
).toList();
// Display institution details
for (final institution in privatePolytechnics) {
print('${institution.name}');
print(' Type: ${institution.type}');
print(' Funding: ${institution.funding}');
print(' Year: ${institution.year}');
if (institution.hasWebsite) {
print(' Website: ${institution.website}');
}
if (institution.hasCoordinates) {
print(' Location: ${institution.latitude}, ${institution.longitude}');
}
}
Filtering and Searching
// Get all institutions established after 2000
final recentInstitutions = NigerianInstitutions.getAllInstitutions()
.where((inst) => inst.year > 2000)
.toList();
// Get all universities (regardless of funding)
final allUniversities = NigerianInstitutions.getAllInstitutions()
.where((inst) => inst.type == Type.university)
.toList();
// Search by partial name
final searchTerm = 'Lagos';
final matchingInstitutions = NigerianInstitutions.getAllInstitutions()
.where((inst) =>
inst.name.toLowerCase().contains(searchTerm.toLowerCase()) ||
inst.state.toLowerCase().contains(searchTerm.toLowerCase())
)
.toList();
State Names
When searching by state, you can use any of these formats (case-insensitive):
- Full state name:
"Lagos","Federal Capital Territory","Cross River" - Abbreviation:
"FCT"for Federal Capital Territory - State with "State" suffix:
"Lagos State"(automatically normalized)
// All these work:
final lagos1 = NigerianInstitutions.getInstitutionsInState('Lagos');
final lagos2 = NigerianInstitutions.getInstitutionsInState('LAGOS');
final lagos3 = NigerianInstitutions.getInstitutionsInState('Lagos State');
// FCT examples:
final fct1 = NigerianInstitutions.getInstitutionsInState('FCT');
final fct2 = NigerianInstitutions.getInstitutionsInState('Federal Capital Territory');
Data Model
Institution Class
Each institution is represented by the Institution class with the following properties:
class Institution {
final String name; // Full institution name
final String state; // State where located
final String lga; // Local Government Area
final String? website; // Institution website URL (nullable)
final String? abbreviation; // Optional abbreviation (e.g., "UNILAG")
final double? longitude; // Geographic longitude (nullable)
final double? latitude; // Geographic latitude (nullable)
final Funding funding; // Funding source enum
final Type type; // Institution type enum
final int year; // Year of establishment
// Helper getters
bool get hasCoordinates; // Returns true if coordinates are available
bool get hasWebsite; // Returns true if website is available
}
Enums
Funding Type:
Funding.federal- Federal government fundedFunding.state- State government fundedFunding.private- Privately fundedFunding.military- Military institutionsFunding.police- Police institutionsFunding.nil- Unknown/undefined
Institution Type:
Type.university- Full universitiesType.polytechnic- PolytechnicsType.monotechnic- Single-discipline technical institutionsType.college- Colleges (Education, Agriculture, Health, etc.)Type.nil- Unknown/undefined
Example Applications
1. Institution Directory App
class InstitutionDirectory extends StatelessWidget {
@override
Widget build(BuildContext context) {
final institutions = NigerianInstitutions.getAllInstitutions();
return ListView.builder(
itemCount: institutions.length,
itemBuilder: (context, index) {
final inst = institutions[index];
return ListTile(
title: Text(inst.name),
subtitle: Text('${inst.state} • ${inst.lga}'),
trailing: Text('${inst.year}'),
onTap: () {
// Show institution details
},
);
},
);
}
}
2. State-Based Filtering
class StateInstitutionsPage extends StatelessWidget {
final String state;
@override
Widget build(BuildContext context) {
final institutions = NigerianInstitutions.getInstitutionsInState(state);
return Scaffold(
appBar: AppBar(title: Text('Institutions in $state')),
body: ListView.builder(
itemCount: institutions.length,
itemBuilder: (context, index) {
final inst = institutions[index];
return Card(
child: ListTile(
leading: Icon(_getIconForType(inst.type)),
title: Text(inst.name),
subtitle: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text('${inst.type.name} • ${inst.funding.name}'),
if (inst.abbreviation != null)
Text('Abbr: ${inst.abbreviation}'),
],
),
),
);
},
),
);
}
}
Data Sources
The institution data in this package is compiled from:
- National Universities Commission (NUC)
- National Board for Technical Education (NBTE)
- Official institution websites
- Government publications and verified sources
Limitations
- Coordinates: Most institutions do not have coordinates in the source data. The
longitudeandlatitudefields are nullable. UsehasCoordinatesgetter to check if coordinates are available. - Websites: Some institutions may not have website URLs. The
websitefield is nullable. UsehasWebsitegetter to check if a website is available. - Abbreviations: Not all institutions have abbreviations recorded. The
abbreviationfield is nullable.
Contributing
Contributions are welcome! Areas for improvement:
- Adding missing institutions
- Updating institution information
- Adding precise coordinates
- Improving data accuracy
Updating Data
The package includes:
Higher institutions in Nigeria - Sheet2.csv- Source data filescripts/generate_institutions.py- Script to regenerate Dart files from CSV
To update the data:
- Edit the CSV file with new/updated institution data
- Run
python3 scripts/generate_institutions.pyto regenerate all state files - Ensure all files compile with
flutter analyze - Submit a pull request with your changes
License
This package is provided as-is for educational and development purposes.
Version
Current version: 0.0.1
Support
For issues, questions, or contributions, please open an issue on the package repository.
Libraries
- institution/institution_model
- institution/institutions_repository
- institution/states/abia
- institution/states/adamawa
- institution/states/akwa_ibom
- institution/states/anambra
- institution/states/bauchi
- institution/states/bayelsa
- institution/states/benue
- institution/states/borno
- institution/states/cross_river
- institution/states/delta
- institution/states/ebonyi
- institution/states/edo
- institution/states/ekiti
- institution/states/enugu
- institution/states/fct
- institution/states/gombe
- institution/states/imo
- institution/states/jigawa
- institution/states/kaduna
- institution/states/kano
- institution/states/katsina
- institution/states/kebbi
- institution/states/kogi
- institution/states/kwara
- institution/states/lagos
- institution/states/nasarawa
- institution/states/niger
- institution/states/ogun
- institution/states/ondo
- institution/states/osun
- institution/states/oyo
- institution/states/plateau
- institution/states/rivers
- institution/states/sokoto
- institution/states/taraba
- institution/states/yobe
- institution/states/zamfara
- ng_higher_ed_institutions