odoo_view_builder_flutter

Flutter Dart License: MIT Version Platforms

A professional visual drag-and-drop editor for generating Odoo XML views โ€” Form, Tree, and Kanban โ€” built with Flutter and running on every platform.


โœจ Features

Category What you get
๐ŸŽจ Visual Editor Drag fields from a typed palette onto a live canvas; organise into groups and notebook pages
๐ŸŒณ All View Types Form ยท Tree (List) ยท Kanban โ€” each with a dedicated editor
๐Ÿ‘ Live XML Preview Syntax-highlighted XML updates in real time as you build
โœ… Validation Field name rules, XML structure checks, Odoo 14โ€“18 compatibility warnings
๐Ÿ“ค Multi-Platform Export Download file ยท Copy to clipboard ยท Native share sheet ยท Web blob download
๐Ÿ“ฅ Import XML Parse existing Odoo XML back into the visual editor
๐Ÿ“š Template Library 10 built-in templates for common models (partner, sale order, product โ€ฆ)
๐Ÿ”— Odoo API Connect Fetch live field definitions directly from a running Odoo instance
โ†ฉ Undo / Redo 50-step history across all edit actions
๐Ÿ’พ Local Persistence Views auto-saved to SQLite; settings in SharedPreferences
๐Ÿ“Š Analytics Firebase-ready analytics service (works without Firebase too)
๐Ÿ› Crash Reporting Crashlytics-ready crash reporter with local log fallback

๐Ÿ“ธ Screenshots

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  โฌ… Back   Custom Partner Form (res.partner)        </> Export    โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ FIELD TYPES  โ”‚         CANVAS                 โ”‚   PROPERTIES     โ”‚
โ”‚              โ”‚                                โ”‚                  โ”‚
โ”‚ [Aa] Text    โ”‚  โ”Œโ”€ group: General Info โ”€โ”€โ”€โ”€โ”€โ”€โ”โ”‚  Field: name     โ”‚
โ”‚ [#] Integer  โ”‚  โ”‚  [name*]      [phone]       โ”‚โ”‚  Label: Name     โ”‚
โ”‚ [.] Float    โ”‚  โ”‚  [email]      [website]     โ”‚โ”‚  Widget: char    โ”‚
โ”‚ [โœ“] Boolean  โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜โ”‚  Required: โœ“     โ”‚
โ”‚ [๐Ÿ“…] Date    โ”‚                                โ”‚  Readonly: โ˜     โ”‚
โ”‚ [๐Ÿ•’] DateTimeโ”‚  โ”Œโ”€ group: Address โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”โ”‚  Colspan: 1      โ”‚
โ”‚ [ยถ] Text     โ”‚  โ”‚  [street]                   โ”‚โ”‚                  โ”‚
โ”‚ [<>] HTML    โ”‚  โ”‚  [city]       [zip]         โ”‚โ”‚  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚
โ”‚ [๐Ÿ“Ž] File    โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜โ”‚  + Add widget    โ”‚
โ”‚ [โ–พ] Select   โ”‚                                โ”‚                  โ”‚
โ”‚ [โ†’] Many2One โ”‚        โŠ• Drop field here       โ”‚                  โ”‚
โ”‚ [โ‹ฎ] Many2M   โ”‚                                โ”‚                  โ”‚
โ”‚ [โ‰ก] One2Many โ”‚                                โ”‚                  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿš€ Quick Start

Prerequisites

  • Flutter SDK โ‰ฅ 3.10.0
  • Dart SDK โ‰ฅ 3.0.0

Install

git clone https://github.com/Brah-Timo/odoo_view_builder_flutter.git
cd odoo_view_builder_flutter
flutter pub get

Run

# Android
flutter run -d android

# iOS
flutter run -d ios

# Web
flutter run -d chrome

# Desktop
flutter run -d macos      # or windows / linux

For detailed platform-specific setup (entitlements, permissions, Firebase) see doc/setup.md.


๐Ÿ“ฆ Output Format

Every exported view is a standard Odoo module XML file that you can drop directly into your module/views/ folder:

<?xml version="1.0" encoding="utf-8"?>
<!-- Generated by Odoo View Builder -->
<odoo>
    <data>
        <record id="view_partner_form_custom" model="ir.ui.view">
            <field name="name">res.partner.form.custom</field>
            <field name="model">res.partner</field>
            <field name="arch" type="xml">
                <form>
                    <group string="General Info">
                        <field name="name" required="1"/>
                        <field name="email" widget="email"/>
                        <field name="phone" widget="phone"/>
                    </group>
                    <group string="Address">
                        <field name="street"/>
                        <field name="city"/>
                        <field name="zip"/>
                    </group>
                </form>
            </field>
        </record>
    </data>
</odoo>

๐Ÿ— Architecture

The app follows Clean Architecture with three layers:

Presentation  โ†’  Domain  โ†’  Data
(Riverpod)       (UseCases)   (sqflite / SharedPrefs / OdooAPI)

State management uses Riverpod 2 (StateNotifierProvider) throughout. XML generation is handled by the xml package's XmlBuilder API โ€” never string concatenation.

โ†’ Full architecture details: doc/architecture.md


๐Ÿงฉ Supported Odoo Versions

Odoo Form Tree Kanban Notes
14.0 โœ… โœ… โœ… <sheet> recommended
15.0 โœ… โœ… โœ…
16.0 โœ… โœ… โœ…
17.0 โœ… โœ… โœ… attrs/states removed
18.0 โœ… โœ… โœ… <list> preferred

The compatibility validator flags issues when you switch the target version in Settings โ†’ Odoo Target Version.


๐Ÿ“š Documentation

Document Description
doc/architecture.md Layer design, data flow, key decisions
doc/setup.md Dev environment & platform-specific setup
doc/usage_guide.md End-user walkthrough of all features
doc/api_reference.md Complete public API reference
doc/contributing.md How to contribute, coding standards, PR process
doc/changelog_detail.md Extended technical changelogs
doc/roadmap.md Planned features and version targets
CHANGELOG.md Concise version history

๐Ÿ”‘ Key Dependencies

Package Purpose
flutter_riverpod ^2.4.9 State management
xml ^6.4.2 XML generation and parsing
sqflite ^2.3.2 Local SQLite database
shared_preferences ^2.2.2 User preferences
path_provider ^2.1.2 Platform file paths
dio ^5.4.1 ยท http ^1.2.0 Odoo JSON-RPC API
share_plus ^7.2.2 Native share sheet
universal_html ^2.2.4 Web blob download
flutter_highlight ^0.7.0 XML syntax highlighting
uuid ^4.3.3 Unique ID generation
intl ^0.19.0 Formatting
logging ^1.2.0 Structured logging

Full dependency list: pubspec.yaml


๐Ÿค Contributing

Contributions are welcome! Please read doc/contributing.md before opening a PR.

# Fork & clone
git clone https://github.com/Brah-Timo/odoo_view_builder_flutter.git

# Create a feature branch
git checkout -b feature/your-feature develop

# Implement, test, lint
flutter test && flutter analyze

# Open a PR targeting `develop`

๐Ÿ—บ Roadmap

See doc/roadmap.md for the full roadmap.

Highlights planned for v1.1.0:

  • Search view type editor
  • <notebook>/<page> visual layout in the form canvas
  • Inline domain/filter builder
  • Compatibility validator in the export flow

๐Ÿ“„ License

This project is licensed under the MIT License โ€” see LICENSE for details.


๐Ÿ™ Acknowledgements

  • Odoo โ€” for the open-source ERP platform and XML view specification.
  • Flutter & the Dart team โ€” for the cross-platform framework.
  • Riverpod by Remi Rousselet โ€” for the excellent state management solution.
  • All contributors and testers who helped shape the editor.

Built with โค๏ธ for the TIMSoftDZ developer community

Libraries

app
config/app_config
config/constants
config/theme
data/local_storage/local_database_helper
data/local_storage/shared_preferences_helper
data/models/odoo_field
data/models/odoo_form
data/models/odoo_group
data/models/odoo_kanban_view
data/models/odoo_tree_view
data/models/view_template
data/repositories/field_repository
data/repositories/view_repository
data/repositories/xml_generator_repository
domain/entities/view_entity
domain/usecases/create_view_usecase
domain/usecases/export_xml_usecase
domain/usecases/import_xml_usecase
domain/usecases/validate_view_usecase
main
presentation/notifiers/editor_notifier
presentation/notifiers/field_notifier
presentation/notifiers/view_notifier
presentation/providers/editor_state_provider
presentation/providers/field_provider
presentation/providers/settings_provider
presentation/providers/view_provider
presentation/providers/xml_generator_provider
presentation/screens/editor_screen
presentation/screens/export_screen
presentation/screens/form_editor_screen
presentation/screens/home_screen
presentation/screens/kanban_editor_screen
presentation/screens/settings_screen
presentation/screens/template_library_screen
presentation/screens/tree_editor_screen
presentation/widgets/common/custom_appbar
presentation/widgets/common/custom_button
presentation/widgets/common/custom_dialog
presentation/widgets/common/custom_textfield
presentation/widgets/editor/canvas_area
presentation/widgets/editor/draggable_field_widget
presentation/widgets/editor/draggable_group_widget
presentation/widgets/editor/drop_target_zone
presentation/widgets/editor/field_palette
presentation/widgets/editor/field_properties_panel
presentation/widgets/editor/group_properties_panel
presentation/widgets/editor/layout_builder_widget
presentation/widgets/kanban/kanban_card_builder
presentation/widgets/kanban/kanban_field_mapper
presentation/widgets/tree_view/column_item_widget
presentation/widgets/tree_view/column_properties_widget
presentation/widgets/xml/xml_highlighter
presentation/widgets/xml/xml_preview_widget
services/analytics/analytics_service
services/analytics/crash_reporter
services/export/download_service
services/export/download_service_stub
services/export/download_service_web
services/export/export_manager
services/export/file_handler
services/odoo/odoo_api_client
services/odoo/odoo_field_service
services/odoo/odoo_validation_rules
services/xml/xml_formatter
services/xml/xml_generator
services/xml/xml_parser
services/xml/xml_validator
utils/extensions/list_extensions
utils/extensions/string_extensions
utils/extensions/widget_extensions
utils/helpers/field_helper
utils/helpers/formatting_helper
utils/helpers/validation_helper
utils/helpers/xml_helper
utils/validators/field_name_validator
utils/validators/odoo_compatibility_validator
utils/validators/xml_structure_validator