@@ -162,6 +162,54 @@ class FeedbackManager {
162162
163163} // namespace
164164
165+ // Clipboard constants and variables
166+ namespace clipboard {
167+
168+ // naive implementation using std::string as a container of internal clipboard
169+ // data
170+ std::string string_clipboard = " " ;
171+
172+ static constexpr char kTextKey [] = " text" ;
173+ static constexpr char kTextPlainFormat [] = " text/plain" ;
174+ static constexpr char kUnknownClipboardFormatError [] =
175+ " Unknown clipboard format error" ;
176+ static constexpr char kUnknownClipboardError [] =
177+ " Unknown error during clipboard data retrieval" ;
178+
179+ void GetData (const MethodCall<rapidjson::Document>& call,
180+ std::unique_ptr<MethodResult<rapidjson::Document>> result) {
181+ const rapidjson::Value& format = call.arguments ()[0 ];
182+
183+ // https://api.flutter.dev/flutter/services/Clipboard/kTextPlain-constant.html
184+ // API supports only kTextPlain format
185+ if (strcmp (format.GetString (), kTextPlainFormat ) != 0 ) {
186+ result->Error (kUnknownClipboardFormatError ,
187+ " Clipboard API only supports text." );
188+ return ;
189+ }
190+
191+ rapidjson::Document document;
192+ document.SetObject ();
193+ rapidjson::Document::AllocatorType& allocator = document.GetAllocator ();
194+ document.AddMember (rapidjson::Value (kTextKey , allocator),
195+ rapidjson::Value (string_clipboard, allocator), allocator);
196+ result->Success (document);
197+ }
198+
199+ void SetData (const MethodCall<rapidjson::Document>& call,
200+ std::unique_ptr<MethodResult<rapidjson::Document>> result) {
201+ const rapidjson::Value& document = *call.arguments ();
202+ rapidjson::Value::ConstMemberIterator itr = document.FindMember (kTextKey );
203+ if (itr == document.MemberEnd ()) {
204+ result->Error (kUnknownClipboardError , " Invalid message format" );
205+ return ;
206+ }
207+ string_clipboard = itr->value .GetString ();
208+ result->Success ();
209+ }
210+
211+ } // namespace clipboard
212+
165213PlatformChannel::PlatformChannel (BinaryMessenger* messenger,
166214 TizenRenderer* renderer)
167215 : channel_(std::make_unique<MethodChannel<rapidjson::Document>>(
@@ -287,52 +335,4 @@ void PlatformChannel::HandleMethodCall(
287335 }
288336}
289337
290- // Clipboard constants and variables
291- namespace clipboard {
292-
293- // naive implementation using std::string as a container of internal clipboard
294- // data
295- std::string string_clipboard = " " ;
296-
297- static constexpr char kTextKey [] = " text" ;
298- static constexpr char kTextPlainFormat [] = " text/plain" ;
299- static constexpr char kUnknownClipboardFormatError [] =
300- " Unknown clipboard format error" ;
301- static constexpr char kUnknownClipboardError [] =
302- " Unknown error during clipboard data retrieval" ;
303-
304- void GetData (const MethodCall<rapidjson::Document>& call,
305- std::unique_ptr<MethodResult<rapidjson::Document>> result) {
306- const rapidjson::Value& format = call.arguments ()[0 ];
307-
308- // https://api.flutter.dev/flutter/services/Clipboard/kTextPlain-constant.html
309- // API supports only kTextPlain format
310- if (strcmp (format.GetString (), kTextPlainFormat ) != 0 ) {
311- result->Error (kUnknownClipboardFormatError ,
312- " Clipboard API only supports text." );
313- return ;
314- }
315-
316- rapidjson::Document document;
317- document.SetObject ();
318- rapidjson::Document::AllocatorType& allocator = document.GetAllocator ();
319- document.AddMember (rapidjson::Value (kTextKey , allocator),
320- rapidjson::Value (string_clipboard, allocator), allocator);
321- result->Success (document);
322- }
323-
324- void SetData (const MethodCall<rapidjson::Document>& call,
325- std::unique_ptr<MethodResult<rapidjson::Document>> result) {
326- const rapidjson::Value& document = *call.arguments ();
327- rapidjson::Value::ConstMemberIterator itr = document.FindMember (kTextKey );
328- if (itr == document.MemberEnd ()) {
329- result->Error (kUnknownClipboardError , " Invalid message format" );
330- return ;
331- }
332- string_clipboard = itr->value .GetString ();
333- result->Success ();
334- }
335-
336- } // namespace clipboard
337-
338338} // namespace flutter
0 commit comments