@@ -2201,6 +2201,58 @@ void main() {
22012201 skip: kIsWeb && ! isCanvasKit, // https://github.com/flutter/flutter/issues/145527
22022202 );
22032203
2204+ // Regression test for https://github.com/flutter/flutter/issues/145040.
2205+ testWidgets ('CharacterActivator shortcut mnemonics include modifiers' , (WidgetTester tester) async {
2206+ await tester.pumpWidget (
2207+ MaterialApp (
2208+ home: Material (
2209+ child: MenuBar (
2210+ controller: controller,
2211+ children: createTestMenus (
2212+ shortcuts: < TestMenu , MenuSerializableShortcut > {
2213+ TestMenu .subSubMenu110: const CharacterActivator ('A' , control: true ),
2214+ TestMenu .subSubMenu111: const CharacterActivator ('B' , alt: true ),
2215+ TestMenu .subSubMenu112: const CharacterActivator ('C' , meta: true ),
2216+ },
2217+ ),
2218+ ),
2219+ ),
2220+ ),
2221+ );
2222+
2223+ // Open a menu initially.
2224+ await tester.tap (find.text (TestMenu .mainMenu1.label));
2225+ await tester.pump ();
2226+
2227+ await tester.tap (find.text (TestMenu .subMenu11.label));
2228+ await tester.pump ();
2229+
2230+ final Text mnemonic0 = tester.widget (findMnemonic (TestMenu .subSubMenu110.label));
2231+ final Text mnemonic1 = tester.widget (findMnemonic (TestMenu .subSubMenu111.label));
2232+ final Text mnemonic2 = tester.widget (findMnemonic (TestMenu .subSubMenu112.label));
2233+
2234+ switch (defaultTargetPlatform) {
2235+ case TargetPlatform .android:
2236+ case TargetPlatform .fuchsia:
2237+ case TargetPlatform .linux:
2238+ expect (mnemonic0.data, equals ('Ctrl+A' ));
2239+ expect (mnemonic1.data, equals ('Alt+B' ));
2240+ expect (mnemonic2.data, equals ('Meta+C' ));
2241+ case TargetPlatform .windows:
2242+ expect (mnemonic0.data, equals ('Ctrl+A' ));
2243+ expect (mnemonic1.data, equals ('Alt+B' ));
2244+ expect (mnemonic2.data, equals ('Win+C' ));
2245+ case TargetPlatform .iOS:
2246+ case TargetPlatform .macOS:
2247+ expect (mnemonic0.data, equals ('⌃ A' ));
2248+ expect (mnemonic1.data, equals ('⌥ B' ));
2249+ expect (mnemonic2.data, equals ('⌘ C' ));
2250+ }
2251+ },
2252+ variant: TargetPlatformVariant .all (),
2253+ skip: kIsWeb && ! isCanvasKit, // https://github.com/flutter/flutter/issues/145527
2254+ );
2255+
22042256 testWidgets ('leadingIcon is used when set' , (WidgetTester tester) async {
22052257 await tester.pumpWidget (
22062258 MaterialApp (
0 commit comments