New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Web - total screen corruption when keyboard opens and scrolling up - iOS 13.4.1 and 14.3, iPad Pro #58528
Comments
Reproduced with iOS 12.0 https://flkb.netlify.app/ - built with current master https://flkb-beta.netlify.app/ - The same code sample built with current beta Code sample
Related to #58244 |
Thanks for filing the issue. @VladyslavBondarenko thanks for the detailed comments. I'll have a look tomorrow. |
I tried a lot of different combinations to test the issue. Including (13.1, 13.5, 12.1) simulators, IOS13 device and Chrome on Pixel 3. I used flutter master channel and the provided links (https://flkb-beta.netlify.app/ and https://flkb.netlify.app/, thanks @VladyslavBondarenko for providing these). I was only able to produce the issue on iOS 12.1 Simulator. The area under the virtual keyboard corrupted as suggested in the description. @slavap You see the issue on iOS 13 on the current master channel, right? I have a few questions:
|
One more thing to add - if I continue to "play" with corrupted screen. i.e. scroll it up and down, after short period of time application is crashing and automatically reloaded by Safari. |
Hi @slavap, There was an issue I fixed lately: flutter/engine#18328 It went into flutter framework with engine roll: #57402 Can you check your flutter framework has this commit? I'll try to generate it on an iOS13, iPad once you confirm. Having said that I'll try to fix the issue in iOS12: #58705 I created a new issue since iOS12 has a different codepath. it does not support viewport API. (Edit: I see iOS12 already had an issue filed: #58244) |
@nturgut I’m not sure how to check it. But dev channel is just few steps behind of master, so I think your commit in dev channel already. I’ll try to make demo project with minimal code to reproduce. |
You are right, I just thought as 'beta' for a second. If it is in dev it means, flutter/engine#18328 didn't fixed it. I'm changing the issue title as iPad and Webkit engine. Thanks again for filing the issue. |
@nturgut Hope it will help to reproduce problem for you. |
Thank you @slavap , I am able to generate the issue using your example. |
Hi @slavap I tried to reproduce using Flutter form example on iPad in Safari, I can't experience any issues code sampleimport 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
final appTitle = 'Form Validation Demo';
return MaterialApp(
title: appTitle,
home: Scaffold(
appBar: AppBar(
title: Text(appTitle),
),
body: MyCustomForm(),
),
);
}
}
// Create a Form widget.
class MyCustomForm extends StatefulWidget {
@override
MyCustomFormState createState() {
return MyCustomFormState();
}
}
// Create a corresponding State class.
// This class holds data related to the form.
class MyCustomFormState extends State<MyCustomForm> {
// Create a global key that uniquely identifies the Form widget
// and allows validation of the form.
//
// Note: This is a GlobalKey<FormState>,
// not a GlobalKey<MyCustomFormState>.
final _formKey = GlobalKey<FormState>();
@override
Widget build(BuildContext context) {
// Build a Form widget using the _formKey created above.
return Form(
key: _formKey,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
TextFormField(
validator: (value) {
if (value.isEmpty) {
return 'Please enter some text';
}
return null;
},
),
TextFormField(
validator: (value) {
if (value.isEmpty) {
return 'Please enter some text';
}
return null;
},
),
TextFormField(
validator: (value) {
if (value.isEmpty) {
return 'Please enter some text';
}
return null;
},
),
TextFormField(
validator: (value) {
if (value.isEmpty) {
return 'Please enter some text';
}
return null;
},
),
TextFormField(
validator: (value) {
if (value.isEmpty) {
return 'Please enter some text';
}
return null;
},
),
Padding(
padding: const EdgeInsets.symmetric(vertical: 16.0),
child: ElevatedButton(
onPressed: () {
// Validate returns true if the form is valid, or false
// otherwise.
if (_formKey.currentState.validate()) {
// If the form is valid, display a Snackbar.
Scaffold.of(context)
.showSnackBar(SnackBar(content: Text('Processing Data')));
}
},
child: Text('Submit'),
),
),
],
),
);
}
} flutter doctor -v[✓] Flutter (Channel beta, 1.25.0-8.3.pre, on macOS 11.1 20C69 darwin-x64, locale en-GB)
• Flutter version 1.25.0-8.3.pre at /Users/tahatesser/Code/flutter_beta
• Framework revision 5d36f2e7f5 (5 days ago), 2021-01-14 15:57:49 -0800
• Engine revision 7a8f8ca02c
• Dart version 2.12.0 (build 2.12.0-133.7.beta)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
• Android SDK at /Volumes/Extreme/SDK
• Platform android-30, build-tools 30.0.3
• ANDROID_HOME = /Volumes/Extreme/SDK
• Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)
• All Android licenses accepted.
[✓] Xcode - develop for iOS and macOS
• Xcode at /Volumes/Extreme/Xcode.app/Contents/Developer
• Xcode 12.3, Build version 12C33
• CocoaPods version 1.10.1
[✓] Chrome - develop for the web
• Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
[✓] Android Studio (version 4.1)
• 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 1.8.0_242-release-1644-b3-6915495)
[✓] VS Code (version 1.52.1)
• VS Code at /Applications/Visual Studio Code.app/Contents
• Flutter extension version 3.18.1
[✓] Connected device (3 available)
• Android SDK built for x86 (mobile) • emulator-5554 • android-x86 • Android 10 (API 29) (emulator)
• Taha’s iPad (mobile) • 00008020-000255113EE8402E • ios • iOS 14.3
• Chrome (web) • chrome • web-javascript • Google Chrome 87.0.4280.141
• No issues found! [✓] Flutter (Channel master, 1.26.0-2.0.pre.402, on macOS 11.1 20C69 darwin-x64, locale en-GB)
• Flutter version 1.26.0-2.0.pre.402 at /Users/tahatesser/Code/flutter_master
• Framework revision 2a188eeca3 (33 hours ago), 2021-01-17 19:27:00 -0800
• Engine revision 609036f2bf
• Dart version 2.12.0 (build 2.12.0-236.0.dev)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
• Android SDK at /Volumes/Extreme/SDK
• Platform android-30, build-tools 30.0.3
• ANDROID_HOME = /Volumes/Extreme/SDK
• Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)
• All Android licenses accepted.
[✓] Xcode - develop for iOS and macOS
• Xcode at /Volumes/Extreme/Xcode.app/Contents/Developer
• Xcode 12.3, Build version 12C33
• CocoaPods version 1.10.1
[✓] Chrome - develop for the web
• Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
[✓] Android Studio (version 4.1)
• 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 1.8.0_242-release-1644-b3-6915495)
[✓] VS Code (version 1.52.1)
• VS Code at /Applications/Visual Studio Code.app/Contents
• Flutter extension version 3.18.1
[✓] Connected device (4 available)
• Android SDK built for x86 (mobile) • emulator-5554 • android-x86 • Android 10 (API 29) (emulator)
• Taha’s iPad (mobile) • 00008020-000255113EE8402E • ios • iOS 14.3
• macOS (desktop) • macos • darwin-x64 • macOS 11.1 20C69 darwin-x64
• Chrome (web) • chrome • web-javascript • Google Chrome 87.0.4280.141
• No issues found! Can you please provide a minimal complete reproducible code sample without using party packages |
@TahaTesser import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(primarySwatch: Colors.blue),
//home: MyHomePage(title: 'Flutter Demo Home Page'),
builder: (BuildContext context, Widget child) {
final MediaQueryData data = MediaQuery.of(context);
var horzOffset = 100.0;
var d = data.copyWith(
padding: EdgeInsets.fromLTRB(horzOffset, data.padding.top, horzOffset, data.padding.bottom));
return MediaQuery(
data: d,
child: Navigator(
pages: [
MaterialPage(
key: ValueKey('Page1'),
child: SafeArea(
child: MyHomePage(title: 'Flutter Demo Home Page'),
),
)
],
onPopPage: (route, result) => route.didPop(result),
),
);
});
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text(widget.title)),
body: Column(children: [
Expanded(
child: Scrollbar(
child: SingleChildScrollView(
child: Column(
children: [
Container(padding: EdgeInsets.all(16), child: TextFormField()),
Container(padding: EdgeInsets.all(16), child: TextFormField()),
Container(padding: EdgeInsets.all(16), child: TextFormField()),
Container(padding: EdgeInsets.all(16), child: TextFormField()),
Container(padding: EdgeInsets.all(16), child: TextFormField()),
Container(padding: EdgeInsets.all(16), child: TextFormField()),
Container(padding: EdgeInsets.all(16), child: TextFormField()),
Container(padding: EdgeInsets.all(16), child: TextFormField()),
Container(padding: EdgeInsets.all(16), child: TextFormField()),
Container(padding: EdgeInsets.all(16), child: TextFormField()),
Container(padding: EdgeInsets.all(16), child: TextFormField()),
Container(padding: EdgeInsets.all(16), child: TextFormField()),
],
),
),
),
),
]),
);
}
} Testing in landscape orientation. After app is opened just put cursor to any text field.
iOS and Safari versions are the same on all three devices. Bug on iPads Pro looks like: |
Hi @slavap flutter doctor -v[✓] Flutter (Channel beta, 1.25.0-8.3.pre, on macOS 11.1 20C69 darwin-x64, locale en-GB)
• Flutter version 1.25.0-8.3.pre at /Users/tahatesser/Code/flutter_beta
• Framework revision 5d36f2e7f5 (5 days ago), 2021-01-14 15:57:49 -0800
• Engine revision 7a8f8ca02c
• Dart version 2.12.0 (build 2.12.0-133.7.beta)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
• Android SDK at /Volumes/Extreme/SDK
• Platform android-30, build-tools 30.0.3
• ANDROID_HOME = /Volumes/Extreme/SDK
• Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)
• All Android licenses accepted.
[✓] Xcode - develop for iOS and macOS
• Xcode at /Volumes/Extreme/Xcode.app/Contents/Developer
• Xcode 12.3, Build version 12C33
• CocoaPods version 1.10.1
[✓] Chrome - develop for the web
• Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
[✓] Android Studio (version 4.1)
• 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 1.8.0_242-release-1644-b3-6915495)
[✓] VS Code (version 1.52.1)
• VS Code at /Applications/Visual Studio Code.app/Contents
• Flutter extension version 3.18.1
[✓] Connected device (3 available)
• RMX2001 (mobile) • EUYTFEUSQSRGDA6D • android-arm64 • Android 10 (API 29)
• Taha’s iPad (mobile) • 00008020-000255113EE8402E • ios • iOS 14.3
• Chrome (web) • chrome • web-javascript • Google Chrome 87.0.4280.141
• No issues found! |
@TahaTesser My guess is that this bug clearly related to absence of physical Home button, i.e. occurs on devices with onscreen "swipe up" functionality. |
@slavap |
I can't seem to reproduce this on the latest version of flutter stable using the code sample in #58528 (comment) on iOS 17.4 on an iPad Air (M1) [It doesn't have a home-button, which seems to be the type of device that reproduces the issue]. See the recording below. RPReplay_Final1711017633.MP4I'll be closing this as fixed since we haven't seen any reports or updates on this issue in a few years and I can't seem to reproduce it. If anyone is still running into this issue, please file a new issue and provide all the relevant steps required to reproduce the issue so that it can be properly investigated. Thank you flutter doctor (stable)
|
This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new bug, including the output of |
Steps to Reproduce
_buildChildren constructs Form with editing fields.
Just press on TextField to open on-screen keyboard.
Screen is getting corrupted, all items under opened keyboard are becoming "white blank"
The text was updated successfully, but these errors were encountered: