Сергей Марков
1 year ago
commit
7fd25b824e
14 changed files with 294 additions and 0 deletions
@ -0,0 +1,29 @@ |
|||||||
|
# Miscellaneous |
||||||
|
*.class |
||||||
|
*.log |
||||||
|
*.pyc |
||||||
|
*.swp |
||||||
|
.DS_Store |
||||||
|
.atom/ |
||||||
|
.buildlog/ |
||||||
|
.history |
||||||
|
.svn/ |
||||||
|
migrate_working_dir/ |
||||||
|
|
||||||
|
# IntelliJ related |
||||||
|
*.iml |
||||||
|
*.ipr |
||||||
|
*.iws |
||||||
|
.idea/ |
||||||
|
|
||||||
|
# The .vscode folder contains launch configuration and tasks you configure in |
||||||
|
# VS Code which you may wish to be included in version control, so this line |
||||||
|
# is commented out by default. |
||||||
|
#.vscode/ |
||||||
|
|
||||||
|
# Flutter/Dart/Pub related |
||||||
|
# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock. |
||||||
|
/pubspec.lock |
||||||
|
**/doc/api/ |
||||||
|
.dart_tool/ |
||||||
|
build/ |
@ -0,0 +1,30 @@ |
|||||||
|
# This file tracks properties of this Flutter project. |
||||||
|
# Used by Flutter tool to assess capabilities and perform upgrades etc. |
||||||
|
# |
||||||
|
# This file should be version controlled and should not be manually edited. |
||||||
|
|
||||||
|
version: |
||||||
|
revision: "d3e00ac70443dbc0df7d0b56bff94c18d760b02f" |
||||||
|
channel: "master" |
||||||
|
|
||||||
|
project_type: plugin |
||||||
|
|
||||||
|
# Tracks metadata for the flutter migrate command |
||||||
|
migration: |
||||||
|
platforms: |
||||||
|
- platform: root |
||||||
|
create_revision: d3e00ac70443dbc0df7d0b56bff94c18d760b02f |
||||||
|
base_revision: d3e00ac70443dbc0df7d0b56bff94c18d760b02f |
||||||
|
- platform: aurora |
||||||
|
create_revision: d3e00ac70443dbc0df7d0b56bff94c18d760b02f |
||||||
|
base_revision: d3e00ac70443dbc0df7d0b56bff94c18d760b02f |
||||||
|
|
||||||
|
# User provided section |
||||||
|
|
||||||
|
# List of Local paths (relative to this file) that should be |
||||||
|
# ignored by the migrate tool. |
||||||
|
# |
||||||
|
# Files that are not part of the templates will be ignored by default. |
||||||
|
unmanaged_files: |
||||||
|
- 'lib/main.dart' |
||||||
|
- 'ios/Runner.xcodeproj/project.pbxproj' |
@ -0,0 +1,15 @@ |
|||||||
|
# clipboard |
||||||
|
|
||||||
|
A new Flutter plugin project. |
||||||
|
|
||||||
|
## Getting Started |
||||||
|
|
||||||
|
This project is a starting point for a Flutter |
||||||
|
[plug-in package](https://flutter.dev/developing-packages/), |
||||||
|
a specialized package that includes platform-specific implementation code for |
||||||
|
Android and/or iOS. |
||||||
|
|
||||||
|
For help getting started with Flutter development, view the |
||||||
|
[online documentation](https://flutter.dev/docs), which offers tutorials, |
||||||
|
samples, guidance on mobile development, and a full API reference. |
||||||
|
|
@ -0,0 +1,4 @@ |
|||||||
|
include: package:flutter_lints/flutter.yaml |
||||||
|
|
||||||
|
# Additional information about this file can be found at |
||||||
|
# https://dart.dev/guides/language/analysis-options |
@ -0,0 +1,23 @@ |
|||||||
|
cmake_minimum_required(VERSION 3.10) |
||||||
|
|
||||||
|
set(PROJECT_NAME clipboard) |
||||||
|
set(PLUGIN_NAME clipboard_platform_plugin) |
||||||
|
|
||||||
|
project(${PROJECT_NAME} LANGUAGES CXX) |
||||||
|
|
||||||
|
set(CMAKE_CXX_STANDARD 17) |
||||||
|
set(CMAKE_CXX_STANDARD_REQUIRED ON) |
||||||
|
|
||||||
|
set(CMAKE_CXX_FLAGS "-Wall -Wextra -Wno-psabi") |
||||||
|
set(CMAKE_CXX_FLAGS_RELEASE "-O3") |
||||||
|
|
||||||
|
find_package(PkgConfig REQUIRED) |
||||||
|
pkg_check_modules(FlutterEmbedder REQUIRED IMPORTED_TARGET flutter-embedder) |
||||||
|
|
||||||
|
add_library(${PLUGIN_NAME} SHARED clipboard_plugin.cpp) |
||||||
|
|
||||||
|
set_target_properties(${PLUGIN_NAME} PROPERTIES CXX_VISIBILITY_PRESET hidden) |
||||||
|
target_link_libraries(${PLUGIN_NAME} PRIVATE PkgConfig::FlutterEmbedder) |
||||||
|
|
||||||
|
target_include_directories(${PLUGIN_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include) |
||||||
|
target_compile_definitions(${PLUGIN_NAME} PRIVATE PLUGIN_IMPL) |
@ -0,0 +1,38 @@ |
|||||||
|
#include <clipboard/clipboard_plugin.h> |
||||||
|
#include <flutter/method-channel.h> |
||||||
|
#include <sys/utsname.h> |
||||||
|
|
||||||
|
void ClipboardPlugin::RegisterWithRegistrar(PluginRegistrar ®istrar) |
||||||
|
{ |
||||||
|
registrar.RegisterMethodChannel("clipboard", |
||||||
|
MethodCodecType::Standard, |
||||||
|
[this](const MethodCall &call) { this->onMethodCall(call); }); |
||||||
|
} |
||||||
|
|
||||||
|
void ClipboardPlugin::onMethodCall(const MethodCall &call) |
||||||
|
{ |
||||||
|
const auto &method = call.GetMethod(); |
||||||
|
|
||||||
|
if (method == "getPlatformVersion") { |
||||||
|
onGetPlatformVersion(call); |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
unimplemented(call); |
||||||
|
} |
||||||
|
|
||||||
|
void ClipboardPlugin::onGetPlatformVersion(const MethodCall &call) |
||||||
|
{ |
||||||
|
utsname uname_data{}; |
||||||
|
uname(&uname_data); |
||||||
|
|
||||||
|
std::string preamble = "Aurora (Linux): "; |
||||||
|
std::string version = preamble + uname_data.version; |
||||||
|
|
||||||
|
call.SendSuccessResponse(version); |
||||||
|
} |
||||||
|
|
||||||
|
void ClipboardPlugin::unimplemented(const MethodCall &call) |
||||||
|
{ |
||||||
|
call.SendSuccessResponse(nullptr); |
||||||
|
} |
@ -0,0 +1,18 @@ |
|||||||
|
#ifndef FLUTTER_PLUGIN_CLIPBOARD_PLUGIN_H |
||||||
|
#define FLUTTER_PLUGIN_CLIPBOARD_PLUGIN_H |
||||||
|
|
||||||
|
#include <flutter/plugin-interface.h> |
||||||
|
#include <clipboard/globals.h> |
||||||
|
|
||||||
|
class PLUGIN_EXPORT ClipboardPlugin final : public PluginInterface |
||||||
|
{ |
||||||
|
public: |
||||||
|
void RegisterWithRegistrar(PluginRegistrar ®istrar) override; |
||||||
|
|
||||||
|
private: |
||||||
|
void onMethodCall(const MethodCall &call); |
||||||
|
void onGetPlatformVersion(const MethodCall &call); |
||||||
|
void unimplemented(const MethodCall &call); |
||||||
|
}; |
||||||
|
|
||||||
|
#endif /* FLUTTER_PLUGIN_CLIPBOARD_PLUGIN_H */ |
@ -0,0 +1,10 @@ |
|||||||
|
#ifndef FLUTTER_PLUGIN_CLIPBOARD_PLUGIN_GLOBALS_H |
||||||
|
#define FLUTTER_PLUGIN_CLIPBOARD_PLUGIN_GLOBALS_H |
||||||
|
|
||||||
|
#ifdef PLUGIN_IMPL |
||||||
|
#define PLUGIN_EXPORT __attribute__((visibility("default"))) |
||||||
|
#else |
||||||
|
#define PLUGIN_EXPORT |
||||||
|
#endif |
||||||
|
|
||||||
|
#endif /* FLUTTER_PLUGIN_CLIPBOARD_PLUGIN_GLOBALS_H */ |
@ -0,0 +1,8 @@ |
|||||||
|
|
||||||
|
import 'clipboard_platform_interface.dart'; |
||||||
|
|
||||||
|
class Clipboard { |
||||||
|
Future<String?> getPlatformVersion() { |
||||||
|
return ClipboardPlatform.instance.getPlatformVersion(); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,17 @@ |
|||||||
|
import 'package:flutter/foundation.dart'; |
||||||
|
import 'package:flutter/services.dart'; |
||||||
|
|
||||||
|
import 'clipboard_platform_interface.dart'; |
||||||
|
|
||||||
|
/// An implementation of [ClipboardPlatform] that uses method channels. |
||||||
|
class MethodChannelClipboard extends ClipboardPlatform { |
||||||
|
/// The method channel used to interact with the native platform. |
||||||
|
@visibleForTesting |
||||||
|
final methodChannel = const MethodChannel('clipboard'); |
||||||
|
|
||||||
|
@override |
||||||
|
Future<String?> getPlatformVersion() async { |
||||||
|
final version = await methodChannel.invokeMethod<String>('getPlatformVersion'); |
||||||
|
return version; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,29 @@ |
|||||||
|
import 'package:plugin_platform_interface/plugin_platform_interface.dart'; |
||||||
|
|
||||||
|
import 'clipboard_method_channel.dart'; |
||||||
|
|
||||||
|
abstract class ClipboardPlatform extends PlatformInterface { |
||||||
|
/// Constructs a ClipboardPlatform. |
||||||
|
ClipboardPlatform() : super(token: _token); |
||||||
|
|
||||||
|
static final Object _token = Object(); |
||||||
|
|
||||||
|
static ClipboardPlatform _instance = MethodChannelClipboard(); |
||||||
|
|
||||||
|
/// The default instance of [ClipboardPlatform] to use. |
||||||
|
/// |
||||||
|
/// Defaults to [MethodChannelClipboard]. |
||||||
|
static ClipboardPlatform get instance => _instance; |
||||||
|
|
||||||
|
/// Platform-specific implementations should set this with their own |
||||||
|
/// platform-specific class that extends [ClipboardPlatform] when |
||||||
|
/// they register themselves. |
||||||
|
static set instance(ClipboardPlatform instance) { |
||||||
|
PlatformInterface.verifyToken(instance, _token); |
||||||
|
_instance = instance; |
||||||
|
} |
||||||
|
|
||||||
|
Future<String?> getPlatformVersion() { |
||||||
|
throw UnimplementedError('platformVersion() has not been implemented.'); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,69 @@ |
|||||||
|
name: clipboard |
||||||
|
description: "A new Flutter plugin project." |
||||||
|
version: 0.0.1 |
||||||
|
homepage: |
||||||
|
|
||||||
|
environment: |
||||||
|
sdk: '>=3.2.2 <4.0.0' |
||||||
|
flutter: '>=3.3.0' |
||||||
|
|
||||||
|
dependencies: |
||||||
|
flutter: |
||||||
|
sdk: flutter |
||||||
|
plugin_platform_interface: ^2.0.2 |
||||||
|
|
||||||
|
dev_dependencies: |
||||||
|
flutter_test: |
||||||
|
sdk: flutter |
||||||
|
flutter_lints: ^2.0.0 |
||||||
|
|
||||||
|
# For information on the generic Dart part of this file, see the |
||||||
|
# following page: https://dart.dev/tools/pub/pubspec |
||||||
|
|
||||||
|
# The following section is specific to Flutter packages. |
||||||
|
flutter: |
||||||
|
# This section identifies this Flutter project as a plugin project. |
||||||
|
# The 'pluginClass' specifies the class (in Java, Kotlin, Swift, Objective-C, etc.) |
||||||
|
# which should be registered in the plugin registry. This is required for |
||||||
|
# using method channels. |
||||||
|
# The Android 'package' specifies package in which the registered class is. |
||||||
|
# This is required for using method channels on Android. |
||||||
|
# The 'ffiPlugin' specifies that native code should be built and bundled. |
||||||
|
# This is required for using `dart:ffi`. |
||||||
|
# All these are used by the tooling to maintain consistency when |
||||||
|
# adding or updating assets for this project. |
||||||
|
plugin: |
||||||
|
platforms: |
||||||
|
aurora: |
||||||
|
pluginClass: ClipboardPlugin |
||||||
|
|
||||||
|
# To add assets to your plugin package, add an assets section, like this: |
||||||
|
# assets: |
||||||
|
# - images/a_dot_burr.jpeg |
||||||
|
# - images/a_dot_ham.jpeg |
||||||
|
# |
||||||
|
# For details regarding assets in packages, see |
||||||
|
# https://flutter.dev/assets-and-images/#from-packages |
||||||
|
# |
||||||
|
# An image asset can refer to one or more resolution-specific "variants", see |
||||||
|
# https://flutter.dev/assets-and-images/#resolution-aware |
||||||
|
|
||||||
|
# To add custom fonts to your plugin package, add a fonts section here, |
||||||
|
# in this "flutter" section. Each entry in this list should have a |
||||||
|
# "family" key with the font family name, and a "fonts" key with a |
||||||
|
# list giving the asset and other descriptors for the font. For |
||||||
|
# example: |
||||||
|
# fonts: |
||||||
|
# - family: Schyler |
||||||
|
# fonts: |
||||||
|
# - asset: fonts/Schyler-Regular.ttf |
||||||
|
# - asset: fonts/Schyler-Italic.ttf |
||||||
|
# style: italic |
||||||
|
# - family: Trajan Pro |
||||||
|
# fonts: |
||||||
|
# - asset: fonts/TrajanPro.ttf |
||||||
|
# - asset: fonts/TrajanPro_Bold.ttf |
||||||
|
# weight: 700 |
||||||
|
# |
||||||
|
# For details regarding fonts in packages, see |
||||||
|
# https://flutter.dev/custom-fonts/#from-packages |
Loading…
Reference in new issue