Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reland iOS 16 context menu #117234

Merged
merged 6 commits into from Dec 22, 2022

Conversation

justinmc
Copy link
Contributor

@justinmc justinmc commented Dec 16, 2022

This is a reland of #115805, which had a bug where the button text color used the wrong brightness in some cases (reverted in #116312). This fixes that problem by using the right brightness value.

Platform Native iOS 16 light mode Native iOS 16 dark mode
Flutter (this branch) Screenshot 2022-11-21 at 4 50 36 PM Screenshot 2022-11-21 at 4 44 41 PM
Native iOS 16 image image
Test app
import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';

void main() {
  debugDefaultTargetPlatformOverride = TargetPlatform.iOS;
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> with WidgetsBindingObserver {
  Brightness _brightness = Brightness.light;

  @override
  void initState() {
    super.initState();
    WidgetsBinding.instance.addObserver(this);
    _brightness = WidgetsBinding.instance.window.platformBrightness;
  }

  @override
  void didChangePlatformBrightness() {
    if (mounted) {
      setState(() {
        _brightness = WidgetsBinding.instance.window.platformBrightness;
      });
    }

    super.didChangePlatformBrightness();
  }

  @override
  void dispose() {
    WidgetsBinding.instance.removeObserver(this);
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return CupertinoApp(
      debugShowCheckedModeBanner: false,
      theme: CupertinoThemeData(
        brightness: _brightness,
      ),
      home: const CupertinoPageScaffold(
        navigationBar: CupertinoNavigationBar(
          middle: Text('Flutter Forward 2023'),
        ),
        child: _MyPage(),
      ),
    );
  }
}

class _MyPage extends StatelessWidget {
  const _MyPage();

  @override
  Widget build(BuildContext context) {
    return Center(
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
          Icon(
            CupertinoTheme.of(context).brightness == Brightness.light
                ? Icons.light_mode
                : Icons.dark_mode,
            color: const CupertinoDynamicColor.withBrightness(
              color: CupertinoColors.black,
              darkColor: CupertinoColors.white,
            ).resolveFrom(context),
            size: 100.0,
          ),
          Text(
            'Im using CupertinoDynamicColor',
            style: TextStyle(
              color: const CupertinoDynamicColor.withBrightness(
                color: Color(0xFFFF0000),
                darkColor: Color(0xFF00FF00),
              ).resolveFrom(context),
            ),
          ),
          CupertinoTextField(
            contextMenuBuilder: (BuildContext context, EditableTextState editableTextState) {
              return AdaptiveTextSelectionToolbar(
                anchors: editableTextState.contextMenuAnchors,
                children: <Widget>[
                  ...AdaptiveTextSelectionToolbar.getAdaptiveButtons(context, editableTextState.contextMenuButtonItems),
                  CupertinoTextSelectionToolbarButton.text(
                    text: 'I am disabled',
                    onPressed: null,
                  ),
                ],
              );
            },
          ),
        ],
      ),
    );
  }
}

@flutter-dashboard flutter-dashboard bot added a: text input Entering text in a text field or keyboard related problems f: cupertino flutter/packages/flutter/cupertino repository framework flutter/packages/flutter repository. See also f: labels. labels Dec 16, 2022
@justinmc justinmc changed the title Revert "Revert "iOS 16 context menu" due to theme color mix up" Reland iOS 16 context menu Dec 16, 2022
@justinmc justinmc force-pushed the revert-116312-revert-115805-ios-16-context-menu branch from 6cc4c3b to f2946fa Compare December 19, 2022 21:42
@justinmc justinmc force-pushed the revert-116312-revert-115805-ios-16-context-menu branch from f2946fa to e30228f Compare December 19, 2022 21:45
@justinmc justinmc self-assigned this Dec 19, 2022
@justinmc justinmc marked this pull request as ready for review December 19, 2022 22:30
Copy link
Contributor

@MitchellGoodwin MitchellGoodwin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@justinmc justinmc merged commit 6781576 into master Dec 22, 2022
@justinmc justinmc deleted the revert-116312-revert-115805-ios-16-context-menu branch December 22, 2022 23:55
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Dec 23, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/plugins that referenced this pull request Dec 23, 2022
auto-submit bot pushed a commit to flutter/plugins that referenced this pull request Dec 23, 2022
* 95ff839 Roll Plugins from 54fc206 to 2dd85ec (3 revisions) (flutter/flutter#117535)

* b8d5d9c Revert "Remove single-view assumption from widgets library (#117480)" (flutter/flutter#117545)

* bd482eb fixes android_semantics_integration_test to expect long press for tooltip (flutter/flutter#117547)

* 725c141 Fix screenshot testing for flutter web integration_test (flutter/flutter#117114)

* 999356b Remove single-view assumption from ScrollPhysics (flutter/flutter#117503)

* 6eb002a Reland "Remove single-view assumption from widgets library (#117480)" (flutter/flutter#117549)

* 08209b7 Explain how to test onSubmitted in its docs (flutter/flutter#117550)

* 20bc2ba Roll Flutter Engine from a90c45db3f13 to 234ab4c1e9c4 (1 revision) (flutter/flutter#117555)

* abd5217 Bump ossf/scorecard-action from 2.1.1 to 2.1.2 (flutter/flutter#117554)

* 6781576 Reland iOS 16 context menu (flutter/flutter#117234)

* daa2ecf Roll Flutter Engine from 234ab4c1e9c4 to ca0c843bf75f (11 revisions) (flutter/flutter#117563)

* 6441a7d Roll Flutter Engine from ca0c843bf75f to 12badb54598d (2 revisions) (flutter/flutter#117566)

* a0cecbe 3b5fb86a5 delete unused lib/src/engine/canvaskit/viewport_metrics.dart (flutter/engine#38474) (flutter/flutter#117572)

* fbfda23 Roll Flutter Engine from 3b5fb86a5982 to 6295d9198da1 (3 revisions) (flutter/flutter#117576)

* 3eca29b f2a071692 Roll Skia from 3e39affa3e1d to 45466d04ca49 (1 revision) (flutter/engine#38480) (flutter/flutter#117579)

* 05914e7 948d0bffa Roll Dart SDK from 47f192463696 to 442614a6c1bb (1 revision) (flutter/engine#38481) (flutter/flutter#117581)

* a34dec2 00995b7b9 Roll Skia from 45466d04ca49 to e206aa0c44f0 (4 revisions) (flutter/engine#38482) (flutter/flutter#117585)

* 4ef24cf 238f40bb9 Roll Fuchsia Mac SDK from W0GUdjHi4gI48optN... to 9w7QDlttR9f7Gu7U6... (flutter/engine#38483) (flutter/flutter#117587)

* a45a2f3 ad042d863 Roll Skia from e206aa0c44f0 to a8b7ce3b6391 (1 revision) (flutter/engine#38484) (flutter/flutter#117589)
tarrinneal pushed a commit to flutter/packages that referenced this pull request Dec 27, 2022
* 95ff83976 Roll Plugins from 54fc206 to 2dd85ec (3 revisions) (flutter/flutter#117535)

* b8d5d9c46 Revert "Remove single-view assumption from widgets library (#117480)" (flutter/flutter#117545)

* bd482ebc5 fixes android_semantics_integration_test to expect long press for tooltip (flutter/flutter#117547)

* 725c1415d Fix screenshot testing for flutter web integration_test (flutter/flutter#117114)

* 999356b77 Remove single-view assumption from ScrollPhysics (flutter/flutter#117503)

* 6eb002a16 Reland "Remove single-view assumption from widgets library (#117480)" (flutter/flutter#117549)

* 08209b7e0 Explain how to test onSubmitted in its docs (flutter/flutter#117550)

* 20bc2bac3 Roll Flutter Engine from a90c45db3f13 to 234ab4c1e9c4 (1 revision) (flutter/flutter#117555)

* abd5217f4 Bump ossf/scorecard-action from 2.1.1 to 2.1.2 (flutter/flutter#117554)

* 6781576e8 Reland iOS 16 context menu (flutter/flutter#117234)

* daa2ecf16 Roll Flutter Engine from 234ab4c1e9c4 to ca0c843bf75f (11 revisions) (flutter/flutter#117563)

* 6441a7dc6 Roll Flutter Engine from ca0c843bf75f to 12badb54598d (2 revisions) (flutter/flutter#117566)

* a0cecbe69 3b5fb86a5 delete unused lib/src/engine/canvaskit/viewport_metrics.dart (flutter/engine#38474) (flutter/flutter#117572)

* fbfda23f2 Roll Flutter Engine from 3b5fb86a5982 to 6295d9198da1 (3 revisions) (flutter/flutter#117576)

* 3eca29b3a f2a071692 Roll Skia from 3e39affa3e1d to 45466d04ca49 (1 revision) (flutter/engine#38480) (flutter/flutter#117579)

* 05914e773 948d0bffa Roll Dart SDK from 47f192463696 to 442614a6c1bb (1 revision) (flutter/engine#38481) (flutter/flutter#117581)

* a34dec2e7 00995b7b9 Roll Skia from 45466d04ca49 to e206aa0c44f0 (4 revisions) (flutter/engine#38482) (flutter/flutter#117585)

* 4ef24cf21 238f40bb9 Roll Fuchsia Mac SDK from W0GUdjHi4gI48optN... to 9w7QDlttR9f7Gu7U6... (flutter/engine#38483) (flutter/flutter#117587)

* a45a2f311 ad042d863 Roll Skia from e206aa0c44f0 to a8b7ce3b6391 (1 revision) (flutter/engine#38484) (flutter/flutter#117589)
loic-sharma pushed a commit to fluttergithubbot/flutter that referenced this pull request Jan 6, 2023
Updates the iOS text selection toolbar to look like iOS 16 (reland)
gspencergoog pushed a commit to gspencergoog/flutter that referenced this pull request Jan 19, 2023
Updates the iOS text selection toolbar to look like iOS 16 (reland)
mauricioluz pushed a commit to mauricioluz/plugins that referenced this pull request Jan 26, 2023
* 95ff839 Roll Plugins from 54fc206 to 2dd85ec (3 revisions) (flutter/flutter#117535)

* b8d5d9c Revert "Remove single-view assumption from widgets library (#117480)" (flutter/flutter#117545)

* bd482eb fixes android_semantics_integration_test to expect long press for tooltip (flutter/flutter#117547)

* 725c141 Fix screenshot testing for flutter web integration_test (flutter/flutter#117114)

* 999356b Remove single-view assumption from ScrollPhysics (flutter/flutter#117503)

* 6eb002a Reland "Remove single-view assumption from widgets library (#117480)" (flutter/flutter#117549)

* 08209b7 Explain how to test onSubmitted in its docs (flutter/flutter#117550)

* 20bc2ba Roll Flutter Engine from a90c45db3f13 to 234ab4c1e9c4 (1 revision) (flutter/flutter#117555)

* abd5217 Bump ossf/scorecard-action from 2.1.1 to 2.1.2 (flutter/flutter#117554)

* 6781576 Reland iOS 16 context menu (flutter/flutter#117234)

* daa2ecf Roll Flutter Engine from 234ab4c1e9c4 to ca0c843bf75f (11 revisions) (flutter/flutter#117563)

* 6441a7d Roll Flutter Engine from ca0c843bf75f to 12badb54598d (2 revisions) (flutter/flutter#117566)

* a0cecbe 3b5fb86a5 delete unused lib/src/engine/canvaskit/viewport_metrics.dart (flutter/engine#38474) (flutter/flutter#117572)

* fbfda23 Roll Flutter Engine from 3b5fb86a5982 to 6295d9198da1 (3 revisions) (flutter/flutter#117576)

* 3eca29b f2a071692 Roll Skia from 3e39affa3e1d to 45466d04ca49 (1 revision) (flutter/engine#38480) (flutter/flutter#117579)

* 05914e7 948d0bffa Roll Dart SDK from 47f192463696 to 442614a6c1bb (1 revision) (flutter/engine#38481) (flutter/flutter#117581)

* a34dec2 00995b7b9 Roll Skia from 45466d04ca49 to e206aa0c44f0 (4 revisions) (flutter/engine#38482) (flutter/flutter#117585)

* 4ef24cf 238f40bb9 Roll Fuchsia Mac SDK from W0GUdjHi4gI48optN... to 9w7QDlttR9f7Gu7U6... (flutter/engine#38483) (flutter/flutter#117587)

* a45a2f3 ad042d863 Roll Skia from e206aa0c44f0 to a8b7ce3b6391 (1 revision) (flutter/engine#38484) (flutter/flutter#117589)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
a: text input Entering text in a text field or keyboard related problems f: cupertino flutter/packages/flutter/cupertino repository framework flutter/packages/flutter repository. See also f: labels.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants