loo 0.0.1
loo: ^0.0.1 copied to clipboard
A State Management Library for Flutter
Claro! Aqui está um exemplo de um README completo para a sua biblioteca:
# Loo
[](https://pub.dev/packages/loo)
Loo é uma biblioteca de gerenciamento de estado para Flutter, projetada para ser simples e eficiente.
## Instalação
Adicione a dependência ao seu arquivo `pubspec.yaml`:
```yaml
dependencies:
loo: ^0.0.1
```
Então, execute flutter pub get para instalar a nova dependência.
Uso #
Registro de Estado #
Para registrar um estado, use o método register da classe Loo:
import 'package:loo/loo.dart';
class MyState extends ChangeNotifier {
int _counter = 0;
int get counter => _counter;
void increment() {
_counter++;
notifyListeners();
}
}
void main() {
final loo = Loo.instance;
final state = MyState();
loo.register(state);
}
Obtenção de Estado #
Para obter um estado registrado, use o método get da classe Loo:
final myState = Loo.instance.get<MyState>();
Atualização de UI #
Para atualizar a UI quando o estado mudar, use o widget LooView:
import 'package:flutter/material.dart';
import 'package:loo/loo.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return LooView(
child: MaterialApp(
home: MyHomePage(),
),
onInit: () {
final loo = Loo.instance;
loo.register(MyState());
},
);
}
}
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
final myState = Loo.instance.get<MyState>();
return Scaffold(
appBar: AppBar(
title: Text('Loo Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'Counter: ${myState.counter}',
),
ElevatedButton(
onPressed: myState.increment,
child: Text('Increment'),
),
],
),
),
);
}
}
Testes #
Para rodar os testes, use o comando:
flutter test
Exemplo de Teste #
import 'package:flutter/foundation.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:loo/loo.dart';
class TestState extends ChangeNotifier {
int _counter = 0;
int get counter => _counter;
void increment() {
_counter++;
notifyListeners();
}
}
void main() {
test('register and get', () {
final loo = Loo.instance;
final state = TestState();
loo.register(state);
final result = loo.get<TestState>();
expect(result, state);
});
}
Licença #
Este projeto está licenciado sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
Este README fornece uma visão geral da biblioteca, instruções de instalação, exemplos de uso, informações sobre testes e detalhes da licença.