LIVO Forms
LIVO Forms is a lightweight Flutter package for reactive form widgets built on top of **LIVO > π
livo.
It provides field- and object-level reactivity, computed/watch helpers, and ready-to-use reactive form controls.
π¬ Demo

β¨ Features
- β Fully reactive form widgets for Flutter
- β
Works seamlessly with
ReactiveModelfrom LIVO - β Field-wise and object-wise updates for optimized UI performance
- β
Includes ready-to-use reactive form widgets:
ReactiveTextFieldβ Text input bound to a model fieldReactiveCheckboxβ Boolean inputReactiveSwitchβ Toggle inputReactiveSelectorFβ Dropdown / selectorReactiveDropdownβ Generic dropdownReactiveDatePickerβ Date selectionReactiveSliderβ Slider input
- β Supports watchField() and watchComputed() for ergonomic reactive UI updates
- β Nested and shared models supported
- β Minimal boilerplate; integrates directly with domain models
π Getting Started
Installation
dependencies:
livoforms: <latest_version>
π§© Usage Example:
import 'package:flutter/material.dart';
import 'package:livo/livo.dart';
import 'package:livoforms/livoforms.dart';
class Task extends ReactiveModel {
String _title;
bool _completed = false;
Task({required String title}) : _title = title;
String get title => _title;
set title(String value) {
if (_title != value) {
_title = value;
notifyListeners(#title);
}
}
bool get completed => _completed;
set completed(bool value) {
if (_completed != value) {
_completed = value;
notifyListeners(#completed);
}
}
}
void main() => runApp(const MyApp());
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(home: HomePage());
}
}
class HomePage extends StatelessWidget {
final Task task = Task(title: "Design UI");
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text("LIVO Forms Demo")),
body: Padding(
padding: const EdgeInsets.all(16),
child: Column(
children: [
ReactiveTextField(
model: task,
fieldName: "title",
hintText: "Task title",
),
ReactiveCheckbox(model: task, fieldName: "completed"),
ReactiveSwitch(model: task, fieldName: "completed"),
ReactiveBuilder<Task>(
model: task,
fields: [#title, #completed],
builder: (t) => Text(
"Title: ${t.title}, Completed: ${t.completed}"),
),
],
),
),
);
}
}
π§ Widgets Overview:
ReactiveTextFieldβ Text input bound to a reactive model fieldReactiveCheckboxβ Boolean inputReactiveSwitchβ Toggle inputReactiveSelectorFβ SelectorReactiveDropdownβ Generic dropdownReactiveDatePickerβ Date selectionReactiveSliderβ Slider input
π§ How It Works:
- Models extend
ReactiveModelfromLIVO. - Form widgets automatically listen to field changes and rebuild UI as needed.
watchField()andwatchComputed()allow fine-grained reactive updates for high performance.- Nested and shared models propagate updates upward automatically.
- Minimal boilerplate; fully declarative, ORM-style reactive forms.
π Summary:
LIVO Forms is ideal for:
- Building reactive Flutter forms with minimal boilerplate
- Fine-grained field-level reactivity
- Computed and watched UI updates
- Nested and shared reactive models
- Seamless integration with LIVO state management
LIVO Forms leverages LIVOβs reactive objectβrelationship model to create forms that scale with your application while keeping the code clean and maintainable.
π Migration from reactive_orm_forms:
reactive_orm_formsis deprecated.- All existing functionality has moved to livoforms.
Replace imports:
// Old
import 'package:reactive_orm_forms/reactive_orm_forms.dart';
// New
import 'package:livoforms/livoforms.dart';
- Update base model references from
ReactiveModelinreactive_ormβReactiveModelinlivo.
Libraries
- livoforms
- Reactive ORM Forms