feat: implement retreiving widgets
- display a bottom sheet with widgets - open widgets in a browser - fixes in .gitignore - Windows UWP build files Signed-off-by: TheOneWithTheBraid <the-one@with-the-braid.cf>
This commit is contained in:
parent
17f703345c
commit
31bec1a0d8
74 changed files with 1363 additions and 327 deletions
92
winuwp/flutter/CMakeLists.txt
Normal file
92
winuwp/flutter/CMakeLists.txt
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
# This file controls Flutter-level build steps. It should not be edited.
|
||||
cmake_minimum_required(VERSION 3.8)
|
||||
set(CMAKE_SYSTEM_NAME WindowsStore)
|
||||
set(CMAKE_SYSTEM_VERSION 10.0)
|
||||
set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral")
|
||||
|
||||
include(CMakePrintHelpers)
|
||||
|
||||
# Configuration provided via flutter tool.
|
||||
include(${EPHEMERAL_DIR}/generated_config.cmake)
|
||||
|
||||
# TODO: Move the rest of this into files in ephemeral. See
|
||||
# https://github.com/flutter/flutter/issues/57146.
|
||||
set(WRAPPER_ROOT "${EPHEMERAL_DIR}/cpp_client_wrapper")
|
||||
|
||||
# === Flutter Library ===
|
||||
set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/flutter_windows_winuwp.dll")
|
||||
|
||||
# === Assets ===
|
||||
set(CMAKE_INSTALL_MANIFEST "${EPHEMERAL_DIR}/install_manifest")
|
||||
file(STRINGS ${CMAKE_INSTALL_MANIFEST} INSTALL_MANIFEST_CONTENT)
|
||||
|
||||
# Published to parent scope for install step.
|
||||
set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE)
|
||||
set(INSTALL_MANIFEST_CONTENT ${INSTALL_MANIFEST_CONTENT} PARENT_SCOPE)
|
||||
|
||||
list(APPEND FLUTTER_LIBRARY_HEADERS
|
||||
"flutter_export.h"
|
||||
"flutter_windows.h"
|
||||
"flutter_messenger.h"
|
||||
"flutter_plugin_registrar.h"
|
||||
"flutter_texture_registrar.h"
|
||||
)
|
||||
list(TRANSFORM FLUTTER_LIBRARY_HEADERS PREPEND "${EPHEMERAL_DIR}/")
|
||||
add_library(flutter INTERFACE)
|
||||
target_include_directories(flutter INTERFACE
|
||||
"${EPHEMERAL_DIR}"
|
||||
)
|
||||
target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}.lib")
|
||||
add_dependencies(flutter flutter_assemble)
|
||||
|
||||
# === Wrapper ===
|
||||
list(APPEND CPP_WRAPPER_SOURCES_CORE
|
||||
"core_implementations.cc"
|
||||
"standard_codec.cc"
|
||||
)
|
||||
list(TRANSFORM CPP_WRAPPER_SOURCES_CORE PREPEND "${WRAPPER_ROOT}/")
|
||||
list(APPEND CPP_WRAPPER_SOURCES_PLUGIN
|
||||
"plugin_registrar.cc"
|
||||
)
|
||||
list(TRANSFORM CPP_WRAPPER_SOURCES_PLUGIN PREPEND "${WRAPPER_ROOT}/")
|
||||
list(APPEND CPP_WRAPPER_SOURCES_APP
|
||||
"flutter_engine.cc"
|
||||
"flutter_view_controller.cc"
|
||||
)
|
||||
list(TRANSFORM CPP_WRAPPER_SOURCES_APP PREPEND "${WRAPPER_ROOT}/")
|
||||
|
||||
# Wrapper sources needed for a plugin.
|
||||
add_library(flutter_wrapper_plugin STATIC
|
||||
${CPP_WRAPPER_SOURCES_CORE}
|
||||
${CPP_WRAPPER_SOURCES_PLUGIN}
|
||||
)
|
||||
apply_standard_settings(flutter_wrapper_plugin)
|
||||
set_target_properties(flutter_wrapper_plugin PROPERTIES
|
||||
POSITION_INDEPENDENT_CODE ON)
|
||||
set_target_properties(flutter_wrapper_plugin PROPERTIES
|
||||
CXX_VISIBILITY_PRESET hidden)
|
||||
target_link_libraries(flutter_wrapper_plugin PUBLIC flutter)
|
||||
target_include_directories(flutter_wrapper_plugin PUBLIC
|
||||
"${WRAPPER_ROOT}/include"
|
||||
)
|
||||
add_dependencies(flutter_wrapper_plugin flutter_assemble)
|
||||
|
||||
# Wrapper sources needed for the runner.
|
||||
add_library(flutter_wrapper_app STATIC
|
||||
${CPP_WRAPPER_SOURCES_CORE}
|
||||
${CPP_WRAPPER_SOURCES_APP}
|
||||
)
|
||||
apply_standard_settings(flutter_wrapper_app)
|
||||
target_link_libraries(flutter_wrapper_app PUBLIC flutter)
|
||||
target_include_directories(flutter_wrapper_app PUBLIC
|
||||
"${WRAPPER_ROOT}/include"
|
||||
)
|
||||
add_dependencies(flutter_wrapper_app flutter_assemble)
|
||||
|
||||
add_custom_target(flutter_assemble DEPENDS
|
||||
"${FLUTTER_LIBRARY}"
|
||||
${FLUTTER_LIBRARY_HEADERS}
|
||||
${CPP_WRAPPER_SOURCES_CORE}
|
||||
${CPP_WRAPPER_SOURCES_PLUGIN}
|
||||
${CPP_WRAPPER_SOURCES_APP}
|
||||
)
|
||||
270
winuwp/flutter/flutter_windows.h
Normal file
270
winuwp/flutter/flutter_windows.h
Normal file
|
|
@ -0,0 +1,270 @@
|
|||
// Copyright 2013 The Flutter Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
#ifndef FLUTTER_SHELL_PLATFORM_WINDOWS_PUBLIC_FLUTTER_H_
|
||||
#define FLUTTER_SHELL_PLATFORM_WINDOWS_PUBLIC_FLUTTER_H_
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
#include <windows.h>
|
||||
|
||||
#include "flutter_export.h"
|
||||
#include "flutter_messenger.h"
|
||||
#include "flutter_plugin_registrar.h"
|
||||
|
||||
#ifdef WINUWP
|
||||
#include <windows.applicationmodel.activation.h>
|
||||
#include <windows.ui.core.h>
|
||||
#endif
|
||||
|
||||
#if defined(__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
// Opaque reference to a Flutter window controller.
|
||||
typedef struct FlutterDesktopViewControllerState*
|
||||
FlutterDesktopViewControllerRef;
|
||||
|
||||
// Opaque reference to a Flutter window.
|
||||
struct FlutterDesktopView;
|
||||
typedef struct FlutterDesktopView* FlutterDesktopViewRef;
|
||||
|
||||
// Opaque reference to a Flutter engine instance.
|
||||
struct FlutterDesktopEngine;
|
||||
typedef struct FlutterDesktopEngine* FlutterDesktopEngineRef;
|
||||
|
||||
// Properties for configuring a Flutter engine instance.
|
||||
typedef struct {
|
||||
// The path to the flutter_assets folder for the application to be run.
|
||||
// This can either be an absolute path or a path relative to the directory
|
||||
// containing the executable.
|
||||
const wchar_t* assets_path;
|
||||
|
||||
// The path to the icudtl.dat file for the version of Flutter you are using.
|
||||
// This can either be an absolute path or a path relative to the directory
|
||||
// containing the executable.
|
||||
const wchar_t* icu_data_path;
|
||||
|
||||
// The path to the AOT library file for your application, if any.
|
||||
// This can either be an absolute path or a path relative to the directory
|
||||
// containing the executable. This can be nullptr for a non-AOT build, as
|
||||
// it will be ignored in that case.
|
||||
const wchar_t* aot_library_path;
|
||||
|
||||
// Number of elements in the array passed in as dart_entrypoint_argv.
|
||||
int dart_entrypoint_argc;
|
||||
|
||||
// Array of Dart entrypoint arguments. This is deep copied during the call
|
||||
// to FlutterDesktopEngineCreate.
|
||||
const char** dart_entrypoint_argv;
|
||||
|
||||
} FlutterDesktopEngineProperties;
|
||||
|
||||
// ========== View Controller ==========
|
||||
|
||||
// Creates a view that hosts and displays the given engine instance.
|
||||
//
|
||||
// This takes ownership of |engine|, so FlutterDesktopEngineDestroy should no
|
||||
// longer be called on it, as it will be called internally when the view
|
||||
// controller is destroyed. If creating the view controller fails, the engine
|
||||
// will be destroyed immediately.
|
||||
//
|
||||
// If |engine| is not already running, the view controller will start running
|
||||
// it automatically before displaying the window.
|
||||
//
|
||||
// The caller owns the returned reference, and is responsible for calling
|
||||
// FlutterDesktopViewControllerDestroy. Returns a null pointer in the event of
|
||||
// an error.
|
||||
#ifdef WINUWP
|
||||
// The CoreApplicationView implementation accepts a pointer to the host
|
||||
// CoreApplicationView and view hookup is performed in the construction path.
|
||||
FLUTTER_EXPORT FlutterDesktopViewControllerRef
|
||||
FlutterDesktopViewControllerCreateFromCoreApplicationView(
|
||||
ABI::Windows::ApplicationModel::Core::CoreApplicationView* window,
|
||||
ABI::Windows::ApplicationModel::Activation::IActivatedEventArgs* args,
|
||||
FlutterDesktopEngineRef engine);
|
||||
#else //! WINUWP
|
||||
// The Win32 implementation accepts width, height
|
||||
// with view hookup explicitly performed using the caller using HWND parenting.
|
||||
FLUTTER_EXPORT FlutterDesktopViewControllerRef
|
||||
FlutterDesktopViewControllerCreate(int width,
|
||||
int height,
|
||||
FlutterDesktopEngineRef engine);
|
||||
#endif
|
||||
|
||||
// Shuts down the engine instance associated with |controller|, and cleans up
|
||||
// associated state.
|
||||
//
|
||||
// |controller| is no longer valid after this call.
|
||||
FLUTTER_EXPORT void FlutterDesktopViewControllerDestroy(
|
||||
FlutterDesktopViewControllerRef controller);
|
||||
|
||||
// Returns the handle for the engine running in FlutterDesktopViewControllerRef.
|
||||
//
|
||||
// Its lifetime is the same as the |controller|'s.
|
||||
FLUTTER_EXPORT FlutterDesktopEngineRef FlutterDesktopViewControllerGetEngine(
|
||||
FlutterDesktopViewControllerRef controller);
|
||||
// Returns the view managed by the given controller.
|
||||
|
||||
FLUTTER_EXPORT FlutterDesktopViewRef
|
||||
FlutterDesktopViewControllerGetView(FlutterDesktopViewControllerRef controller);
|
||||
|
||||
// Requests new frame from engine and repaints the view
|
||||
FLUTTER_EXPORT void FlutterDesktopViewControllerForceRedraw(
|
||||
FlutterDesktopViewControllerRef controller);
|
||||
|
||||
#ifndef WINUWP
|
||||
// Allows the Flutter engine and any interested plugins an opportunity to
|
||||
// handle the given message.
|
||||
//
|
||||
// If the WindowProc was handled and further handling should stop, this returns
|
||||
// true and |result| will be populated. |result| is not set if returning false.
|
||||
FLUTTER_EXPORT bool FlutterDesktopViewControllerHandleTopLevelWindowProc(
|
||||
FlutterDesktopViewControllerRef controller,
|
||||
HWND hwnd,
|
||||
UINT message,
|
||||
WPARAM wparam,
|
||||
LPARAM lparam,
|
||||
LRESULT* result);
|
||||
#endif
|
||||
|
||||
// ========== Engine ==========
|
||||
|
||||
// Creates a Flutter engine with the given properties.
|
||||
//
|
||||
// The caller owns the returned reference, and is responsible for calling
|
||||
// FlutterDesktopEngineDestroy. The lifetime of |engine_properties| is required
|
||||
// to extend only until the end of this call.
|
||||
FLUTTER_EXPORT FlutterDesktopEngineRef FlutterDesktopEngineCreate(
|
||||
const FlutterDesktopEngineProperties* engine_properties);
|
||||
|
||||
// Shuts down and destroys the given engine instance. Returns true if the
|
||||
// shutdown was successful, or if the engine was not running.
|
||||
//
|
||||
// |engine| is no longer valid after this call.
|
||||
FLUTTER_EXPORT bool FlutterDesktopEngineDestroy(FlutterDesktopEngineRef engine);
|
||||
|
||||
// Starts running the given engine instance and optional entry point in the Dart
|
||||
// project. If the entry point is null, defaults to main().
|
||||
//
|
||||
// If provided, entry_point must be the name of a top-level function from the
|
||||
// same Dart library that contains the app's main() function, and must be
|
||||
// decorated with `@pragma(vm:entry-point)` to ensure the method is not
|
||||
// tree-shaken by the Dart compiler.
|
||||
//
|
||||
// Returns false if running the engine failed.
|
||||
FLUTTER_EXPORT bool FlutterDesktopEngineRun(FlutterDesktopEngineRef engine,
|
||||
const char* entry_point);
|
||||
|
||||
#ifndef WINUWP
|
||||
// DEPRECATED: This is no longer necessary to call, Flutter will take care of
|
||||
// processing engine messages transparently through DispatchMessage.
|
||||
//
|
||||
// Processes any pending events in the Flutter engine, and returns the
|
||||
// number of nanoseconds until the next scheduled event (or max, if none).
|
||||
//
|
||||
// This should be called on every run of the application-level runloop, and
|
||||
// a wait for native events in the runloop should never be longer than the
|
||||
// last return value from this function.
|
||||
FLUTTER_EXPORT uint64_t
|
||||
FlutterDesktopEngineProcessMessages(FlutterDesktopEngineRef engine);
|
||||
#endif
|
||||
|
||||
FLUTTER_EXPORT void FlutterDesktopEngineReloadSystemFonts(
|
||||
FlutterDesktopEngineRef engine);
|
||||
|
||||
FLUTTER_EXPORT void FlutterDesktopEngineReloadPlatformBrightness(
|
||||
FlutterDesktopEngineRef engine);
|
||||
|
||||
// Returns the plugin registrar handle for the plugin with the given name.
|
||||
//
|
||||
// The name must be unique across the application.
|
||||
FLUTTER_EXPORT FlutterDesktopPluginRegistrarRef
|
||||
FlutterDesktopEngineGetPluginRegistrar(FlutterDesktopEngineRef engine,
|
||||
const char* plugin_name);
|
||||
|
||||
// Returns the messenger associated with the engine.
|
||||
FLUTTER_EXPORT FlutterDesktopMessengerRef
|
||||
FlutterDesktopEngineGetMessenger(FlutterDesktopEngineRef engine);
|
||||
|
||||
// Returns the texture registrar associated with the engine.
|
||||
FLUTTER_EXPORT FlutterDesktopTextureRegistrarRef
|
||||
FlutterDesktopEngineGetTextureRegistrar(
|
||||
FlutterDesktopTextureRegistrarRef texture_registrar);
|
||||
|
||||
// ========== View ==========
|
||||
|
||||
#ifdef WINUWP
|
||||
// Return backing CoreApplicationView for manipulation of CoreWindow and
|
||||
// CoreTitleBar in host application.
|
||||
FLUTTER_EXPORT ABI::Windows::ApplicationModel::Core::CoreApplicationView*
|
||||
FlutterDesktopViewGetCoreApplicationView(FlutterDesktopViewRef view);
|
||||
#else
|
||||
// Return backing HWND for manipulation in host application.
|
||||
FLUTTER_EXPORT HWND FlutterDesktopViewGetHWND(FlutterDesktopViewRef view);
|
||||
#endif
|
||||
|
||||
// ========== Plugin Registrar (extensions) ==========
|
||||
// These are Windows-specific extensions to flutter_plugin_registrar.h
|
||||
|
||||
// Function pointer type for top level WindowProc delegate registration.
|
||||
//
|
||||
// The user data will be whatever was passed to
|
||||
// FlutterDesktopRegisterTopLevelWindowProcHandler.
|
||||
//
|
||||
// Implementations should populate |result| and return true if the WindowProc
|
||||
// was handled and further handling should stop. |result| is ignored if the
|
||||
// function returns false.
|
||||
typedef bool (*FlutterDesktopWindowProcCallback)(HWND /* hwnd */,
|
||||
UINT /* uMsg */,
|
||||
WPARAM /*wParam*/,
|
||||
LPARAM /* lParam*/,
|
||||
void* /* user data */,
|
||||
LRESULT* result);
|
||||
|
||||
// Returns the view associated with this registrar's engine instance.
|
||||
FLUTTER_EXPORT FlutterDesktopViewRef FlutterDesktopPluginRegistrarGetView(
|
||||
FlutterDesktopPluginRegistrarRef registrar);
|
||||
|
||||
#ifndef WINUWP
|
||||
FLUTTER_EXPORT void
|
||||
FlutterDesktopPluginRegistrarRegisterTopLevelWindowProcDelegate(
|
||||
FlutterDesktopPluginRegistrarRef registrar,
|
||||
FlutterDesktopWindowProcCallback delegate,
|
||||
void* user_data);
|
||||
|
||||
FLUTTER_EXPORT void
|
||||
FlutterDesktopPluginRegistrarUnregisterTopLevelWindowProcDelegate(
|
||||
FlutterDesktopPluginRegistrarRef registrar,
|
||||
FlutterDesktopWindowProcCallback delegate);
|
||||
#endif
|
||||
|
||||
// ========== Freestanding Utilities ==========
|
||||
|
||||
// Gets the DPI for a given |hwnd|, depending on the supported APIs per
|
||||
// windows version and DPI awareness mode. If nullptr is passed, returns the DPI
|
||||
// of the primary monitor.
|
||||
//
|
||||
// This uses the same logic and fallback for older Windows versions that is used
|
||||
// internally by Flutter to determine the DPI to use for displaying Flutter
|
||||
// content, so should be used by any code (e.g., in plugins) that translates
|
||||
// between Windows and Dart sizes/offsets.
|
||||
FLUTTER_EXPORT UINT FlutterDesktopGetDpiForHWND(HWND hwnd);
|
||||
|
||||
// Gets the DPI for a given |monitor|. If the API is not available, a default
|
||||
// DPI of 96 is returned.
|
||||
//
|
||||
// See FlutterDesktopGetDpiForHWND for more information.
|
||||
FLUTTER_EXPORT UINT FlutterDesktopGetDpiForMonitor(HMONITOR monitor);
|
||||
|
||||
// Reopens stdout and stderr and resysncs the standard library output streams.
|
||||
// Should be called if output is being directed somewhere in the runner process
|
||||
// (e.g., after an AllocConsole call).
|
||||
FLUTTER_EXPORT void FlutterDesktopResyncOutputStreams();
|
||||
|
||||
#if defined(__cplusplus)
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
#endif // FLUTTER_SHELL_PLATFORM_WINDOWS_PUBLIC_FLUTTER_WINDOWS_H_
|
||||
11
winuwp/flutter/generated_plugin_registrant.cc
Normal file
11
winuwp/flutter/generated_plugin_registrant.cc
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
//
|
||||
// Generated file. Do not edit.
|
||||
//
|
||||
|
||||
// clang-format off
|
||||
|
||||
#include "generated_plugin_registrant.h"
|
||||
|
||||
|
||||
void RegisterPlugins(flutter::PluginRegistry* registry) {
|
||||
}
|
||||
15
winuwp/flutter/generated_plugin_registrant.h
Normal file
15
winuwp/flutter/generated_plugin_registrant.h
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
//
|
||||
// Generated file. Do not edit.
|
||||
//
|
||||
|
||||
// clang-format off
|
||||
|
||||
#ifndef GENERATED_PLUGIN_REGISTRANT_
|
||||
#define GENERATED_PLUGIN_REGISTRANT_
|
||||
|
||||
#include <flutter/plugin_registry.h>
|
||||
|
||||
// Registers Flutter plugins.
|
||||
void RegisterPlugins(flutter::PluginRegistry* registry);
|
||||
|
||||
#endif // GENERATED_PLUGIN_REGISTRANT_
|
||||
15
winuwp/flutter/generated_plugins.cmake
Normal file
15
winuwp/flutter/generated_plugins.cmake
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
#
|
||||
# Generated file, do not edit.
|
||||
#
|
||||
|
||||
list(APPEND FLUTTER_PLUGIN_LIST
|
||||
)
|
||||
|
||||
set(PLUGIN_BUNDLED_LIBRARIES)
|
||||
|
||||
foreach(plugin ${FLUTTER_PLUGIN_LIST})
|
||||
add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/windows plugins/${plugin})
|
||||
target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin)
|
||||
list(APPEND PLUGIN_BUNDLED_LIBRARIES $<TARGET_FILE:${plugin}_plugin>)
|
||||
list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries})
|
||||
endforeach(plugin)
|
||||
Loading…
Add table
Add a link
Reference in a new issue