DEV Community

Cover image for 🚀 Introducing dart_irt: Item Response Theory in Pure Dart
Mehmet Çelik
Mehmet Çelik

Posted on

🚀 Introducing dart_irt: Item Response Theory in Pure Dart

I’m excited to announce the release of dart_irt-a pure Dart implementation of Item Response Theory (IRT).
This package makes it possible to integrate advanced psychometric models directly into Dart and Flutter applications, with no external dependencies.

🔎 What is IRT?
Item Response Theory (IRT) is widely used in educational testing, psychometrics, and adaptive assessments.
It provides a probabilistic framework to model how people with different abilities respond to test items (questions).

  • Key benefits of IRT:
  • More precise measurement of abilities
  • Adaptive testing (shorter, smarter tests)
  • Fair comparisons across populations
  • Psychometric validity checks

✨ Features in dart_irt

  • Dichotomous models: Rasch (1PL), 2PL, 3PL
  • Polytomous models: RSM (Rating Scale Model), PCM (Partial Credit Model)
  • Estimation: EM/MML algorithms
  • CAT helpers: item selection (Fisher/KL)
  • DIF analysis: Mantel–Haenszel for fairness detection
  • Person estimators: EAP, MLE, WLE
  • Fit indices: Infit, Outfit, person-fit U
  • Simulation utilities for generating test data

📦 Installation

Add to your pubspec.yaml:

dependencies:
dart_irt: ^0.0.1

then

dart pub get

🚀 Quick Example

import 'package:dart_irt/dart_irt.dart';

void main() {
  final rasch = RaschEM();

  final X = IrtSim.raschResponses(
    persons: 300,
    b: [-1.0, 0.0, 1.0],
    seed: 42,
  );

  final res = rasch.fit(X);

  print('Item difficulties: ${res.b}');
  print('Person abilities (EAP): ${res.thetaEap.take(5).toList()}');
}

Enter fullscreen mode Exit fullscreen mode

📂 Resources

📦 pub.dev package
💻 GitHub repo
💡 Closing Thoughts

This is just the first release of dart_irt.
I hope it will be useful for researchers, EdTech developers, and Flutter enthusiasts who want to bring psychometrics and adaptive learning into their applications.

Feedback and contributions are welcome! 🚀

Top comments (0)