Desktop 1.1 Google I/O 22 Flutter Desktop Contents • What’s New In Flutter a. macOS and Linux platforms have reached stable • Learn About Flutter Desktop a. Platform Adaptive b. TextField Focus Node c. FocusableActionDetector & CallbackShortcuts • How to write a Flutter desktop application a. Build a Flutter desktop app that accesses GitHub APIs to retrieve your repositories, assigned issues, and pull request b. https://codelabs.developers.google.com/codelabs/flutter-github-client#0
Desktop 1.2 Summary • In Flutter 3, the macOS and Linux platforms have reached stable, in addition to Windows. • You can now develop your app to run on any or all of these platforms. • As a result, the Desktop (and related) pages are updated.
https://github.com/flutter/flutter/wiki/Roadmap Roadmap - Desktop In 2022 we plan to bring our desktop support to the stable channel. We plan on focusing on testing and announcing one platform at a time, as they become ready, starting with Windows, then Linux, and macOS. A significant part of this effort is expanding our regression test suite to give us the confidence that enables us to expand on these efforts without breaking existing code.
Additional requirements • Windows a. Visual Studio 2022 When installing Visual Studio you need the “Desktop development with C++” workload installed for building windows, including all of its default components. • maxOS a. Xcode b. CocoaPods if you use plugins • Linux a. Clang b. CMake c. GTK development headers d. Ninja build e. pkg-config f. liblzma-dev This dependency may be required https://docs.flutter.dev/development/platform-integration/desktop
On iOS and macOS, Flutter is loaded into the embedder as a UIViewController or NSViewController, respectively. The platform embedder creates a FlutterEngine, which serves as a host to the Dart VM and your Flutter runtime, and a FlutterViewController, which attaches to the FlutterEngine to pass UIKit or Cocoa input events into Flutter and to display frames rendered by the FlutterEngine using Metal or OpenGL. • On Android, Flutter is, by default, loaded into the embedder as an Activity. The view is controlled by a FlutterView, which renders Flutter content either as a view or a texture, depending on the composition and z-ordering requirements of the Flutter content. • On Windows, Flutter is hosted in a traditional Win32 app, and content is rendered using ANGLE, a library that translates OpenGL API calls to the DirectX 11 equivalents. Efforts are currently underway to also offer a Windows embedder using the UWP app model, as well as to replace ANGLE with a more direct path to the GPU via DirectX 12.
is an open source 2D graphics library which provides common APIs that work across a variety of hardware and software platforms. It serves as the graphics engine for Google Chrome and Chrome OS, Android, Flutter, Mozilla Firefox and Firefox OS, and many other products. Skia is sponsored and managed by Google, but is available for use by anyone under the BSD Free Software License. While engineering of the core components is done by the Skia development team, we consider contributions from any source.
is an open source 2D graphics library which provides common APIs that work across a variety of hardware and software platforms. It serves as the graphics engine for Google Chrome and Chrome OS, Android, Flutter, Mozilla Firefox and Firefox OS, and many other products. Skia is sponsored and managed by Google, but is available for use by anyone under the BSD Free Software License. While engineering of the core components is done by the Skia development team, we consider contributions from any source.
- Almost Native Graphics Layer Engine The goal of ANGLE is to allow users of multiple operating systems to seamlessly run WebGL and other OpenGL ES content by translating OpenGL ES API calls to one of the hardware-supported APIs available for that platform. ANGLE currently provides translation from OpenGL ES 2.0, 3.0 and 3.1 to Vulkan, desktop OpenGL, OpenGL ES, Direct3D 9, and Direct3D 11. Future plans include ES 3.2, translation to Metal and MacOS, Chrome OS, and Fuchsia support. https://chromium.googlesource.com/angle/angle/+/master/README.md
Desktop • Operating Systems: Linux (64-bit) • Disk Space: 600 MB (does not include disk space for IDE/tools). • Tools: Flutter depends on these command-line tools being available in your environment. ◦ bash ◦ curl ◦ file ◦ git 2.x ◦ mkdir ◦ rm ◦ unzip ◦ which ◦ xz-utils ◦ zip • Shared libraries: Flutter test command depends on this library being available in your environment. ◦ libGLU.so.1 - provided by mesa packages such as libglu1-mesa on Ubuntu/Debian and mesa-libGLU on Fedora.
default, ROS 2 uses DDS as its middleware. It is compatible with multiple DDS or RTPS (the DDS wire protocol) vendors. There is currently support for eProsima’s Fast DDS, RTI’s Connext DDS, Eclipse Cyclone DDS, and GurumNetworks GurumDDS. See https://ros.org/reps/rep-2000.html for supported DDS vendors by distribution. In Foxy, the default DDS vendor is eProsima’s Fast DDS. • Working with Eclipse Cyclone DDS explains how to utilize Cyclone DDS. • Working with eProsima Fast DDS explains how to utilize Fast DDS. • Working with GurumNetworks GurumDDS explains how to utilize GurumDDS. Data Distribution Service
개발에 Flutter를 적용해 볼만한 이유 1. Flutter의 Linux Desktop 지원 + multi-platform 2. rcldart 개발 3. Websocket OK a. Dart socket 4. 로보틱스에서 ROS2 + Flutter 적용사례 적음 (usecase) a. 대부분 android, qt, etc b. 도전적 목표 과제 (동기부여) 5. Open Source a. 커머셜 라이선스 비용 걱정 X * Rcl: the ROS2 client library
Implementations of the rosbridge v2 Protocol rosbridge provides a JSON interface to ROS, allowing any client to send JSON to publish or subscribe to ROS topics, call ROS services, and more. rosbridge supports a variety of transport layers, including WebSockets and TCP. For information on the protocol itself, see the rosbridge protocol specification. • rosbridge_suite is a ROS meta-package including all the rosbridge packages. • rosbridge_library contains the Python API that receives JSON-formatted strings as input and controls ROS publishers/subscribers/service calls according to the content of the JSON strings. • rosbridge_server contains a WebSocket server implementation that exposes the rosbridge_library. • rosapi provides service calls for getting meta-information related to ROS like topic lists as well as interacting with the Parameter Server.