idht 0.1.0 copy "idht: ^0.1.0" to clipboard
idht: ^0.1.0 copied to clipboard

A Flutter library that accelerates app development with ready-to-use utilities like localization, dependency injection, events, and in-memory database.

example/example.md

Event Example #

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

void setup(){
  Event<int>.register(value: 0, key: "counter");
}

void main(){
  setup();
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  @override
  Widget build(BuildContext context) {
    final counterEvent = Event.get("counter");

    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text("Event")),
        body: Align(
          child: EventBuilder(
            events: [counterEvent],
            builder: (context) => Text("You have pushed the button this many times: ${counterEvent.value}")
          ),
        ),
        floatingActionButton: FloatingActionButton(
          onPressed: () => counterEvent.send(counterEvent.value + 1),
          child: Icon(Icons.add),
        ),
      ),
    );
  }
}

Localization Example #

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

enum AppLanguage {en, es}

void setup(){
  Localization(langs: AppLanguage.values)
    .byLanguage({
      AppLanguage.en: {
        "change_language": "Change Language",
        "counter": "You have pushed the button this many times: {count}",
        "language": "English"
      },
      AppLanguage.es: {
        "change_language": "cambiar idioma",
        "counter": "Has pulsado el botón muchas veces: {count}",
        "language": "Español"
      },
    });
}

void main(){
  setup();
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  int counter = 0;

  @override
  Widget build(BuildContext context) {
    final localization = di.get<Localization>();

    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text("Localization (${'language'.tr})")),
        body: Center(
          child: Column(
            mainAxisSize: MainAxisSize.min,
            children: [
              Text("counter".trWith(values: {"count": counter})),
              TextButton(
                onPressed: () => setState((){
                  localization.changeLanguage(
                    localization.currentLanguage==AppLanguage.en
                      ? AppLanguage.es
                      : AppLanguage.en
                  );
                }),
                child: Text("change_language".tr)
              )
            ],
          )
        ),
        floatingActionButton: FloatingActionButton(
          onPressed: () => setState(() {
            counter++;
          }),
          child: Icon(Icons.add),
        ),
      ),
    );
  }
}

Store Example #

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

class Todo {
  final String title;
  bool isDone;

  Todo(this.title, this.isDone);
}

void main(){
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  @override
  Widget build(BuildContext context) {
    final todos = store.getAll<Todo>();

    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text("Store")),
        body: Center(
          child: ListView.builder(
            itemCount: todos.length,
            itemBuilder: (context, index) => buildTodo(todos[index]),
          ),
        ),
        floatingActionButton: FloatingActionButton(
          onPressed: () => setState(() {
            final todo = Todo("new Todo", false);
            store.put<Todo>(todo);
          }),
          child: Icon(Icons.add),
        ),
      ),
    );
  }

  Widget buildTodo(Todo todo) {
    return ListTile(
      title: Text(todo.title),
      leading: Checkbox(
        value: todo.isDone,
        onChanged: (value) => setState(() {
          todo.isDone = value!;
        }),
      ),
      trailing: IconButton(
        onPressed: () => setState(() {
          store.remove<Todo>(todo);
        }),
        icon: Icon(Icons.delete),
      ),
    );
  }
}

Dependency Injection (DI) Example #

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

class Settings {
  ThemeMode theme = ThemeMode.light;
}

class Logger {
  final int id;
  Logger(this.id);
}

void setup(){
  di.registerSingleton<Settings>(Settings());

  int loggerId = 0;
  di.registerFactory(() => Logger(loggerId++));
}

void main(){
  setup();
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  @override
  Widget build(BuildContext context) {
    final settings = di.get<Settings>();

    return MaterialApp(
      theme: ThemeData(),
      darkTheme: ThemeData.dark(),
      themeMode: settings.theme,
      home: Scaffold(
        appBar: AppBar(title: Text("Dependency Injection (DI)")),
        body: Center(
          child: Column(
            mainAxisSize: MainAxisSize.min,
            children: [
              TextButton(
                onPressed: () => setState(() {
                  settings.theme = settings.theme == ThemeMode.light
                    ? ThemeMode.dark
                    : ThemeMode.light;
                }),
                child: Text("Toggle Theme (Singleton)")
              ),
              Text("Logger ID: ${di.get<Logger>().id} (Factory)")
            ],
          )
        ),
      ),
    );
  }
}
0
likes
160
points
23
downloads

Publisher

unverified uploader

Weekly Downloads

A Flutter library that accelerates app development with ready-to-use utilities like localization, dependency injection, events, and in-memory database.

Repository (GitHub)
View/report issues

Topics

#idht #localization #dependency-injection

Documentation

API reference

License

MIT (license)

Dependencies

flutter

More

Packages that depend on idht