{"id":15461759,"url":"https://github.com/goderbauer/mvp","last_synced_at":"2025-09-15T11:31:54.326Z","repository":{"id":156014066,"uuid":"620926619","full_name":"goderbauer/mvp","owner":"goderbauer","description":"Multi View Playground","archived":false,"fork":false,"pushed_at":"2024-08-13T23:22:43.000Z","size":298,"stargazers_count":35,"open_issues_count":0,"forks_count":11,"subscribers_count":10,"default_branch":"main","last_synced_at":"2024-10-18T20:43:50.519Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/goderbauer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-03-29T16:36:43.000Z","updated_at":"2024-10-03T13:00:24.000Z","dependencies_parsed_at":null,"dependency_job_id":"e967581c-5b57-40a7-8a85-667fbd608173","html_url":"https://github.com/goderbauer/mvp","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goderbauer%2Fmvp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goderbauer%2Fmvp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goderbauer%2Fmvp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goderbauer%2Fmvp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/goderbauer","download_url":"https://codeload.github.com/goderbauer/mvp/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":233115939,"owners_count":18627468,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-02T00:00:46.614Z","updated_at":"2025-09-15T11:31:54.307Z","avatar_url":"https://github.com/goderbauer.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MVP - The Multi View Playground\n\nThis repository contains samples to experiment with rendering into multiple views from Flutter. Some samples are\naspirational and may not actually work. Some samples may require a custom engine build to run. Some samples may be\noutdated and/or have other issues. DO NOT DEPEND ON ANYTHING IN THIS REPOSITORY.\n\nThis playground does not demonstrate a windowing API and creating/managing windows from a Flutter app is not yet\nsupported. However, the rendering APIs demonstrated in this playground will form the foundation for future multi-window\nsupport in Flutter. Nothing in this repository shall be seen as a definite or \"official\" decision on windowing APIs,\nthough. This is just an exploratory playground.\n\nPlease [report any bugs](https://github.com/flutter/flutter/issues/new?assignees=\u0026labels=a%3A%20multi%20window,team-framework\u0026projects=\u0026template=2_bug.yml)\nyou may encounter.\n\n## Supported platforms\n\nThe demos in this repository run on the following platforms:\n\n| Platform | Support                                               |\n|----------|-------------------------------------------------------|\n| macOS    | ⚠️ with engine patch (see instructions below)          |\n| Windows  | ⚠️ with engine patch (see instructions below)          |\n| Linux    | ❌                                                    |\n| Web      | ✅   (`flutter run -d chrome`)                        |\n\n## How to use?\n\nThe samples are meant to be used with a custom (prototype) engine using the master branch of the framework.\n\n0. Set up the Framework development environment: see [the wiki page](https://github.com/flutter/flutter/blob/master/docs/contributing/Setting-up-the-Framework-development-environment.md).\n\n1. Set up the Engine development environment: see [the wiki page](https://github.com/flutter/flutter/blob/master/engine/src/flutter/docs/contributing/Setting-up-the-Engine-development-environment.md).\n\n2. In **the Flutter repo**, switch to the main branch:\n```\ngit checkout main\n```\n\n3. In **the Flutter repo**, apply patches depending on platform:\n  * macOS only: apply this playground's patch:\n\n     ```bash\n     git apply /path/to/playground/patches/macos/001-Add-multi-view-Flutter-macOS-APIs.patch\n     ```\n\n  * Windows only: apply this playground's patch:\n\n     ```bash\n     git apply /path/to/playground/patches/windows/001-Add-multi-view-Flutter-Windows-C++-APIs.patch\n     ```\n\n4. Build the custom engine: see [the wiki page](https://github.com/flutter/flutter/blob/master/engine/src/flutter/docs/contributing/Compiling-the-engine.md).\n\n5. In **this repo**, update packages.\n\n   ```bash\n   flutter pub get\n   ```\n\n6. Run a sample file (see below for options) with the custom engine. For example,\n\n   ```bash\n   flutter run --local-engine=host_debug_unopt --local-engine-host=host_debug_unopt -d macos -t lib/raw_dynamic.dart\n   ```\n\n7. If everything goes well, the app should start up with a number of windows.\n\n## Samples\n\n### raw_static.dart\n\nRenders some view-specific information into each `FlutterView` available in `PlatformDispatcher.views` using only APIs\nexposed by `dart:ui`. A new frame is only scheduled if the metrics of a `FlutterView` change or if a view is\nadded/removed.\n\n### raw_dynamic.dart\n\nRenders a spinning rectangular into each `FlutterView` available in `PlatformDispatcher.views` using only APIs exposed\nby `dart:ui`. Frames are continuously scheduled to keep the animation running.\n\n### widgets_static.dart\n\nRenders some view-specific information into each `FlutterView` available in `PlatformDispatcher.views` using the Flutter\nwidget framework (`package:flutter/widgets.dart`). A new frame is only scheduled if the metrics of a `FlutterView`\nchange or if a view is added/removed.\n\n### widgets_dynamic.dart\n\nRenders a spinning rectangular into each `FlutterView` available in `PlatformDispatcher.views` using the Flutter\nwidget framework (`package:flutter/widgets.dart`). Frames are continuously scheduled to keep the animation running.\n\n### widgets_counter.dart\n\nRenders the Counter app (an interactive Material Design app) into each `FlutterView` available in\n`PlatformDispatcher.views`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoderbauer%2Fmvp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgoderbauer%2Fmvp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoderbauer%2Fmvp/lists"}