@@ -842,6 +842,64 @@ void main() {
842
842
expect (RawKeyboard .instance.keysPressed, contains (LogicalKeyboardKey .capsLock));
843
843
}, skip: isBrowser); // [intended] This is an Android-specific group.
844
844
845
+ testWidgets ('Allows inconsistent modifier for Web - Alt graph' , (WidgetTester _) async {
846
+ // Regression test for https://github.com/flutter/flutter/issues/113836
847
+ final List <RawKeyEvent > events = < RawKeyEvent > [];
848
+ RawKeyboard .instance.addListener (events.add);
849
+ addTearDown (() {
850
+ RawKeyboard .instance.removeListener (events.add);
851
+ });
852
+ await TestDefaultBinaryMessengerBinding .instance! .defaultBinaryMessenger.handlePlatformMessage (
853
+ SystemChannels .keyEvent.name,
854
+ SystemChannels .keyEvent.codec.encodeMessage (const < String , dynamic > {
855
+ 'type' : 'keydown' ,
856
+ 'keymap' : 'web' ,
857
+ 'code' : 'AltRight' ,
858
+ 'key' : 'AltGraph' ,
859
+ 'location' : 2 ,
860
+ 'metaState' : 0 ,
861
+ 'keyCode' : 225 ,
862
+ }),
863
+ (ByteData ? data) { },
864
+ );
865
+
866
+ expect (events, hasLength (1 ));
867
+ final RawKeyEvent altRightKey = events[0 ];
868
+ final RawKeyEventDataWeb data = altRightKey.data as RawKeyEventDataWeb ;
869
+ expect (data.physicalKey, equals (PhysicalKeyboardKey .altRight));
870
+ expect (data.logicalKey, equals (LogicalKeyboardKey .altGraph));
871
+ expect (RawKeyboard .instance.keysPressed, contains (LogicalKeyboardKey .altGraph));
872
+ }, skip: ! isBrowser); // [intended] This is a Browser-specific test.
873
+
874
+ testWidgets ('Allows inconsistent modifier for Web - Alt right' , (WidgetTester _) async {
875
+ // Regression test for https://github.com/flutter/flutter/issues/113836
876
+ final List <RawKeyEvent > events = < RawKeyEvent > [];
877
+ RawKeyboard .instance.addListener (events.add);
878
+ addTearDown (() {
879
+ RawKeyboard .instance.removeListener (events.add);
880
+ });
881
+ await TestDefaultBinaryMessengerBinding .instance! .defaultBinaryMessenger.handlePlatformMessage (
882
+ SystemChannels .keyEvent.name,
883
+ SystemChannels .keyEvent.codec.encodeMessage (const < String , dynamic > {
884
+ 'type' : 'keydown' ,
885
+ 'keymap' : 'web' ,
886
+ 'code' : 'AltRight' ,
887
+ 'key' : 'Alt' ,
888
+ 'location' : 2 ,
889
+ 'metaState' : 0 ,
890
+ 'keyCode' : 225 ,
891
+ }),
892
+ (ByteData ? data) { },
893
+ );
894
+
895
+ expect (events, hasLength (1 ));
896
+ final RawKeyEvent altRightKey = events[0 ];
897
+ final RawKeyEventDataWeb data = altRightKey.data as RawKeyEventDataWeb ;
898
+ expect (data.physicalKey, equals (PhysicalKeyboardKey .altRight));
899
+ expect (data.logicalKey, equals (LogicalKeyboardKey .altRight));
900
+ expect (RawKeyboard .instance.keysPressed, contains (LogicalKeyboardKey .altRight));
901
+ }, skip: ! isBrowser); // [intended] This is a Browser-specific test.
902
+
845
903
testWidgets ('Dispatch events to all handlers' , (WidgetTester tester) async {
846
904
final FocusNode focusNode = FocusNode ();
847
905
final List <int > logs = < int > [];
0 commit comments