mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
<!-- Thanks for filing a pull request! Reviewers are typically assigned within a week of filing a request. To learn more about code review, see our documentation on Tree Hygiene: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md --> **Live Text (OCR) button disappeared from text field menus on iOS after the Secure Paste M2 update. This PR adds it back.** **Fixes #169781** Note: This is a draft PR for initial review. Still need to add tests or split to framework and engine ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [x] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [x] I signed the [CLA]. - [x] I listed at least one issue that this PR fixes in the description above. - [x] I updated/added relevant documentation (doc comments with `///`). - [x] I added new tests to check the change I am making, or this PR is [test-exempt]. - [ ] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [x] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. <!-- Links --> [Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview [Tree Hygiene]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md [test-exempt]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests [Flutter Style Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md [Features we expect every widget to implement]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md [Data Driven Fixes]: https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
25 lines
1.1 KiB
Dart
25 lines
1.1 KiB
Dart
// Copyright 2014 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.
|
|
|
|
import 'package:flutter/services.dart';
|
|
import 'package:flutter/widgets.dart' show FlutterError;
|
|
|
|
/// Returns a [IOSSystemContextMenuItem] of the correct subclass given its
|
|
/// json data.
|
|
IOSSystemContextMenuItemData systemContextMenuItemDataFromJson(Map<String, dynamic> json) {
|
|
final String? type = json['type'] as String?;
|
|
final String? title = json['title'] as String?;
|
|
return switch (type) {
|
|
'copy' => const IOSSystemContextMenuItemDataCopy(),
|
|
'cut' => const IOSSystemContextMenuItemDataCut(),
|
|
'paste' => const IOSSystemContextMenuItemDataPaste(),
|
|
'selectAll' => const IOSSystemContextMenuItemDataSelectAll(),
|
|
'searchWeb' => IOSSystemContextMenuItemDataSearchWeb(title: title!),
|
|
'share' => IOSSystemContextMenuItemDataShare(title: title!),
|
|
'lookUp' => IOSSystemContextMenuItemDataLookUp(title: title!),
|
|
'captureTextFromCamera' => const IOSSystemContextMenuItemDataLiveText(),
|
|
_ => throw FlutterError('Invalid json for IOSSystemContextMenuItem.type $type.'),
|
|
};
|
|
}
|