Unverified Commit 197ac525 authored by Justin McCandless's avatar Justin McCandless Committed by GitHub

Enable CupertinoContextMenu on Web (#52977)

parent 9f4e5ad9
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
import 'dart:math' as math; import 'dart:math' as math;
import 'dart:ui' as ui; import 'dart:ui' as ui;
import 'package:flutter/gestures.dart' show kMinFlingVelocity, kLongPressTimeout; import 'package:flutter/gestures.dart' show kMinFlingVelocity, kLongPressTimeout;
import 'package:flutter/foundation.dart' show kIsWeb;
import 'package:flutter/rendering.dart'; import 'package:flutter/rendering.dart';
import 'package:flutter/scheduler.dart'; import 'package:flutter/scheduler.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
...@@ -511,17 +512,22 @@ class _DecoyChildState extends State<_DecoyChild> with TickerProviderStateMixin ...@@ -511,17 +512,22 @@ class _DecoyChildState extends State<_DecoyChild> with TickerProviderStateMixin
: _mask.value; : _mask.value;
return Positioned.fromRect( return Positioned.fromRect(
rect: _rect.value, rect: _rect.value,
child: ShaderMask( // TODO(justinmc): When ShaderMask is supported on web, remove this
key: _childGlobalKey, // conditional and use ShaderMask everywhere.
shaderCallback: (Rect bounds) { // https://github.com/flutter/flutter/issues/52967.
return LinearGradient( child: kIsWeb
begin: Alignment.topLeft, ? Container(key: _childGlobalKey, child: widget.child)
end: Alignment.bottomRight, : ShaderMask(
colors: <Color>[color, color], key: _childGlobalKey,
).createShader(bounds); shaderCallback: (Rect bounds) {
}, return LinearGradient(
child: widget.child, begin: Alignment.topLeft,
), end: Alignment.bottomRight,
colors: <Color>[color, color],
).createShader(bounds);
},
child: widget.child,
),
); );
} }
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart' show kIsWeb;
void main() { void main() {
final TestWidgetsFlutterBinding binding = final TestWidgetsFlutterBinding binding =
...@@ -103,6 +104,11 @@ void main() { ...@@ -103,6 +104,11 @@ void main() {
Rect decoyChildRect = tester.getRect(_findDecoyChild(child)); Rect decoyChildRect = tester.getRect(_findDecoyChild(child));
expect(childRect, equals(decoyChildRect)); expect(childRect, equals(decoyChildRect));
// TODO(justinmc): When ShaderMask is supported on web, remove this
// conditional and just check for ShaderMask.
// https://github.com/flutter/flutter/issues/52967.
expect(find.byType(ShaderMask), kIsWeb ? findsNothing : findsOneWidget);
// After a small delay, the _DecoyChild has begun to animate. // After a small delay, the _DecoyChild has begun to animate.
await tester.pump(const Duration(milliseconds: 100)); await tester.pump(const Duration(milliseconds: 100));
decoyChildRect = tester.getRect(_findDecoyChild(child)); decoyChildRect = tester.getRect(_findDecoyChild(child));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment