-
Notifications
You must be signed in to change notification settings - Fork 29.7k
Closed
Labels
found in release: 3.10Found to occur in 3.10Found to occur in 3.10found in release: 3.13Found to occur in 3.13Found to occur in 3.13frameworkflutter/packages/flutter repository. See also f: labels.flutter/packages/flutter repository. See also f: labels.has reproducible stepsThe issue has been confirmed reproducible and is ready to work onThe issue has been confirmed reproducible and is ready to work onr: fixedIssue is closed as already fixed in a newer versionIssue is closed as already fixed in a newer versionteam-frameworkOwned by Framework teamOwned by Framework team
Description
Is there an existing issue for this?
- I have searched the existing issues
- I have read the guide to filing a bug
Steps to reproduce
- flutter create widget_span_hit_test
- Hover over the button in
WidgetSpanand press it - Reduce the window size and repeat 2
- Reduce the window size further, scroll a bit and repeat 2
Expected results
Can press the button also when scrolled.
Actual results
Button not hit when tapping:
Code sample
Code sample
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({Key? key, required this.title}) : super(key: key);
final String title;
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final WidgetSpanTextEditingController _controller =
WidgetSpanTextEditingController(text: '...\n' * 5 + 'Lazy \uffff dog.' + '...\n' * 5);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Container(
constraints: const BoxConstraints.expand(),
child: TextField(
controller: _controller,
maxLines: 1000000,
),
),
),
);
}
}
class WidgetSpanTextEditingController extends TextEditingController {
WidgetSpanTextEditingController({String? text})
: super.fromValue(text == null ? TextEditingValue.empty : TextEditingValue(text: text));
@override
TextSpan buildTextSpan(
{required BuildContext context,
TextStyle? style,
required bool withComposing}) {
TextRange? matchedRange;
if (text.contains('\uffff')) {
matchedRange = _findMatchedRange(text);
}
if (matchedRange != null) {
return TextSpan(
children: [
TextSpan(text: matchedRange.textBefore(text)),
WidgetSpan(
child: IconButton(
onPressed: () => ScaffoldMessenger.of(context)
.showSnackBar(const SnackBar(content: Text('Pressed!'), duration: Durations.short2)),
icon: const Icon(Icons.bug_report_outlined),
),
),
TextSpan(text: matchedRange.textAfter(text)),
],
style: style,
);
}
return TextSpan(text: text, style: style);
}
TextRange _findMatchedRange(String text) {
final RegExp matchPattern = RegExp(RegExp.escape('\uffff'));
late TextRange matchedRange;
for (final Match match in matchPattern.allMatches(text)) {
matchedRange = TextRange(start: match.start, end: match.end);
}
return matchedRange;
}
}Screenshots or Video
Screenshots / Video demonstration
[Upload media here]
Logs
Doctor output
Flutter Doctor output
Doctor output
% flutter doctor -v
[✓] Flutter (Channel master, 3.13.0-15.0.pre.18, on macOS 13.4.1 22F770820d darwin-arm64, locale en-ES)
• Flutter version 3.13.0-15.0.pre.18 on channel master at /Users/tgucio/Library/Frameworks/flutter
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision de5b9670dd (78 minutes ago), 2023-08-01 09:18:27 -0400
• Engine revision f1c80ce984
• Dart version 3.2.0 (build 3.2.0-19.0.dev)
• DevTools version 2.25.0
[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.2)
• Android SDK at /Users/tgucio/Library/Android/sdk
• Platform android-33, build-tools 33.0.2
• Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694)
• All Android licenses accepted.
[✓] Xcode - develop for iOS and macOS (Xcode 14.3)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Build 14E222b
• CocoaPods version 1.12.1
[✓] Chrome - develop for the web
• Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
[✓] Android Studio (version 2022.2)
• Android Studio at /Applications/Android Studio.app/Contents
• Flutter plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/9212-flutter
• Dart plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/6351-dart
• Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694)
[✓] VS Code (version 1.80.2)
• VS Code at /Applications/Visual Studio Code.app/Contents
• Flutter extension version 3.68.0
[✓] Connected device (2 available)
• macOS (desktop) • macos • darwin-arm64 • macOS 13.4.1 22F770820d darwin-arm64
• Chrome (web) • chrome • web-javascript • Google Chrome 115.0.5790.114
[✓] Network resources
• All expected network resources are available.
• No issues found!
% Metadata
Metadata
Assignees
Labels
found in release: 3.10Found to occur in 3.10Found to occur in 3.10found in release: 3.13Found to occur in 3.13Found to occur in 3.13frameworkflutter/packages/flutter repository. See also f: labels.flutter/packages/flutter repository. See also f: labels.has reproducible stepsThe issue has been confirmed reproducible and is ready to work onThe issue has been confirmed reproducible and is ready to work onr: fixedIssue is closed as already fixed in a newer versionIssue is closed as already fixed in a newer versionteam-frameworkOwned by Framework teamOwned by Framework team
