Skip to content

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
* 95ff839 Roll Plugins from 54fc2066d636 to 2dd85ec81d06 (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)
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.

2 participants