这是indexloc提供的服务,不要输入任何密码
Skip to content

Conversation

@devin-ai-integration
Copy link
Contributor

Flutter GUI Tool Integration for MIDI-CI

This PR adds a complete Flutter GUI tool integration to the midicci repository, providing a cross-platform alternative to the existing Qt tool.

Overview

The Flutter MIDI-CI tool (tools/flutter-ci-tool/) integrates with the existing C++ business logic through the primary entry points:

  • CIToolRepository - Configuration and logging management
  • CIDeviceModel - Device state management and MIDI-CI operations
  • CIDeviceManager - MIDI device enumeration and connection management

Key Features

CMake Integration - Flutter builds are triggered by custom CMake commands from the top-level build system
Optional Build - Flutter tool is only built when Flutter SDK is detected, following the same pattern as the Qt tool
Cross-Platform Support - Supports Linux, macOS, Windows, Android, iOS, and Web
C++ Wrapper Library - Clean platform channel integration with midicci-tooling library
4-Screen Interface - Complete UI matching the original Kotlin Compose Multiplatform app:

  • Initiator - Send discovery messages and manage client connections
  • Responder - Configure local profiles and properties
  • Log - View MIDI-CI message logs with filtering
  • Settings - Device configuration and application settings

Architecture

Flutter App (Dart)
    ↓ Platform Channels
C++ Wrapper Library (midicci-flutter-wrapper)
    ↓ Direct API calls
midicci-tooling Library (CIToolRepository, CIDeviceModel, CIDeviceManager)
    ↓ 
midicci Core Library

Build Integration

The Flutter tool follows the same CMake integration pattern as the existing Qt tool:

# Make Flutter tool optional - use Flutter detection
find_program(FLUTTER_EXECUTABLE flutter)
if(FLUTTER_EXECUTABLE)
    add_subdirectory(flutter-ci-tool)
else()
    message(STATUS "Flutter not found, skipping flutter-ci-tool")
endif()

Custom CMake targets:

  • flutter-pub-get - Install Flutter dependencies
  • flutter-build - Build Flutter application
  • flutter-run - Run Flutter app in development mode

Testing

Flutter Analysis - All Flutter code passes flutter analyze with no issues
CMake Build - Successfully integrates with midicci build system
Dependency Resolution - Flutter dependencies install correctly via CMake
C++ Wrapper - Compiles and links with midicci-tooling library

Files Added

  • tools/flutter-ci-tool/ - Complete Flutter application
  • tools/flutter-ci-tool/CMakeLists.txt - CMake configuration
  • tools/flutter-ci-tool/native/ - C++ wrapper for platform channels
  • tools/flutter-ci-tool/lib/ - Flutter UI implementation
  • Updated tools/CMakeLists.txt - Added Flutter tool integration

Verification

The implementation has been verified to:

  1. Build successfully with CMake when Flutter is available
  2. Skip gracefully when Flutter is not installed
  3. Pass all Flutter static analysis checks
  4. Follow existing midicci repository patterns and conventions

Link to Devin run: https://app.devin.ai/sessions/98cd60952f66496aaec0341c23ec0288
Requested by: Atsushi Eno (atsushieno@gmail.com)

- Create Flutter MIDI-CI tool in tools/flutter-ci-tool/
- Integrate Flutter builds into CMake using custom commands
- Link with existing midicci-tooling library (CIToolRepository, CIDeviceModel, CIDeviceManager)
- Add C++ wrapper for platform channel integration
- Implement 4-screen tabbed interface (Initiator, Responder, Log, Settings)
- Use Provider pattern for reactive state management
- Support cross-platform builds (Linux, macOS, Windows, Android, iOS)
- Optional build based on Flutter detection in CMake

Link to Devin run: https://app.devin.ai/sessions/98cd60952f66496aaec0341c23ec0288
Requested by: Atsushi Eno (atsushieno@gmail.com)

Co-Authored-By: Atsushi Eno <atsushieno@gmail.com>
@devin-ai-integration
Copy link
Contributor Author

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment and CI monitoring

@atsushieno atsushieno closed this Jun 20, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants