profile
viewpoint
Eric Seidel eseidelGoogle Google Mountain View, California https://www.google.com/+EricSeidelGoogle I lead the Flutter team at Google, helping developers write better mobile applications, faster.

eseidelGoogle/game 9

A game that uses Flutter

eseidelGoogle/crashy 7

Sample Flutter app that demonstrates how to capture and report errors

eseidelGoogle/github_activity 4

Scripts for collecting per-user github activity metrics

eseidelGoogle/gn_sublime 2

GN package for Sublime (and other tmLanguage compatible editors)

eseidelGoogle/charted 1

Visualization toolkit for Dart language

eseidelGoogle/ios_text 1

Playing around with match iOS fonts in Flutter

eseidelGoogle/posse_gallery 1

Posse's fancy new gallery for Flutter.

issue commentflutter/flutter

[webview_flutter] does not load relative file URLs on a real iOS device

FYI @mvanbeusekom who was last to touch this callback and may have thoughts.

ghowen

comment created time in 11 days

issue commentflutter/flutter

[webview_flutter] does not load relative file URLs on a real iOS device

This is likely the line causing you grief: https://github.com/flutter/plugins/blob/master/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FlutterWebView.m#L245

The quick fix is to move the assets you need deeper in the path hierarchy, rather than as parent directories to your initial index.html.

Alternatively, Flutter's WebView would need to give you ability to control what the "root" url iOS restricts loads to.

ghowen

comment created time in 11 days

issue commentflutter/flutter

[webview_flutter] does not load relative file URLs on a real iOS device

My guess is this has to do with sandboxing being different for WebView on an iOS device vs. simulator. I suspect WebView has callbacks we could hook into to log and see what path it's trying to load.

I'd probably try comparing things discussed here https://stackoverflow.com/questions/6420925/load-resources-from-relative-path-using-local-html-in-uiwebview or in Apple's docs, to how the WebView plugin implements.

For example: WebView( initialUrl: 'file://' + documentsDirectory.path + '/assets/www/text/index.html', javascriptMode: JavascriptMode.unrestricted, onWebResourceError: (error) {

It's not clear to me (without looking at the plugin code) where the "root directory" being served is from that call. If it's just the parent of index.html, I could understand that the OS might not let you escape that root with ../../.

ghowen

comment created time in 11 days

issue commentflutter/flutter

HttpServer crashes on iOS app in TestFlight when coming back from standby

Re-reading this now. As @lukepighetti suggests, HTTPServer has no code in it to re-start itself when the process is killed (as it may be when the phone is turned off). It's also possible that the OS just simply revokes the port bindings when the application is put into background (not killing the http server or process, just making it not work).

The example code only starts the HTTP server once, when the main() is called, and thus presumably lifecycle actions from the OS may be breaking it.

I believe the correct resolution to this bug is to use WidgetsBindingObserver or similar to watch for lifecycle notifications and start/stop the HTTP server.

It also may be possible to feed the data directly into the WebView without going through a locally running http server, but an http server respecting lifetimes seems like a fine solution too.

I believe the only work here for Flutter would be to ideally make sure HTTPServer is logging in this case? e.g. do we know why HTTPServer breaks @lukepighetti? It seems like when it's in this broken state, it would be better for users to be able to detect that some way?

ghowen

comment created time in 11 days

issue commentflutter/flutter

Possibility to give Widgets a name in the view hierarchy (so the Play Store "Pre-launch report" Sign-in credentials can be configured)

No updates. My understanding is that Pre-launch Report (PLR) is many tools all working together under an umbrella framework. Some of those tools are designed around assumptions of working with Android Views/Espresso. We should probably be clear which of the PLR tools do/don't work well with Flutter. I've also put @blasten in touch with a member of the Pre-Launch Report team in case there are some easy wins here.

hugovangalen

comment created time in 17 days

push eventflutter/website

Eric Seidel

commit sha 05b1ff32230742e500723bc22b81f1a50c808764

Remote TPM and DRE postings (#6535) Both roles have been filled.

view details

push time in a month

delete branch flutter/website

delete branch : remove-tpm-dre

delete time in a month

PR merged flutter/website

Reviewers
Remote TPM and DRE postings

Both roles have been filled.

Presubmit checklist

+0 -295

0 comment

3 changed files

eseidelGoogle

pr closed time in a month

push eventeseidelGoogle/website

Eric Seidel

commit sha 525d2babf5ea06b76497d15570db93cf73105d6e

Add a posting for Senior Technical Program Manager (#5505)

view details

Shams Zakhour (ignore Sfshaza)

commit sha 8b4d52217a20abb19301af496ea0be8eb37118d6

Super trivial formatting stuff (#5506)

view details

Marcus Tomlinson

commit sha b4c7adbd2817f146edfc402a5ce38735270d41b2

Revert "Add libblkid / liblzma / libgcrypt to Linux requirements" (#5504) * Revert "Add libgcrypt to Linux requirements" * libblkid & liblzma not explicitly required either

view details

Miguel Beltran

commit sha ac6a930e3f99a99f0a12f8b4919a1b0e3f7d36b7

Migrated "mocking" cookbook to null-safety (#5492) * Migrated "mocking" cookbook to null-safety - Fixes the issues reported in #5488 - Upgrades the example to null safety - Also uses the latest version of Mockito with code generation * add http.Client creation note * add complete example * add skip tags * add terminal formatting to the generate command * fix headings * moved full example to null_safety_examples * extracted code exceprts

view details

Oláh Attila

commit sha 3aed975ad4ec3285c3610710c91cbf7999f18b8b

Update fetch-data.md (#5508)

view details

Shams Zakhour (ignore Sfshaza)

commit sha 94a1b7ccf37d77bf47c39f383de91b7c91aa6ebb

Syncing submodule (#5510)

view details

Miguel Beltran

commit sha 3a6fc9f05f4f78dc4e02492447c88cae3a00e78c

updated code excerpts from animation tutorial (#5514)

view details

Miguel Beltran

commit sha b2cec2f645aeb836dab473b170ac8bc064bdcf2f

enable null safety dart pad nav basics (#5513)

view details

Shams Zakhour (ignore Sfshaza)

commit sha 71e6295b45637e02c0ac842ee13c9848a6c1998a

Syncing submodule (#5519)

view details

Chris Bracken

commit sha 4909159a927ccb77c52c3f5a19603a5c8c38f2ad

Correct PATH modification instructions (#5520) Previously we asked users to modify their path as follows: export PATH="$PATH:[PATH_TO_FLUTTER_GIT_DIRECTORY]/flutter/bin" The correct location is just `bin` relative to the main Flutter directory, so the correct instructions should be: export PATH="$PATH:[PATH_TO_FLUTTER_GIT_DIRECTORY]/bin" I've also made some minor wording changes to remove any ambiguity that `PATH_TO_FLUTTER_GIT_DIRECTORY` is actually the path of the cloned `flutter` repo and not the path into which the clone was landed. This was a potential source of confusion/ambiguity since the initial install instructions do suggest they run the following command to temporarily add Flutter to their PATH after the initial install. export PATH="$PATH:`pwd`/flutter/bin" Credit for spotting this error goes to christiannc on StackOverflow: https://stackoverflow.com/questions/66713077/setting-up-flutter-in-terminal-yields-a-command-not-found-message/66716562#66716562

view details

Miguel Beltran

commit sha 9974196e203cde271b680f431b270803aab9ec71

Migrate themes cookbook to null safety (#5516)

view details

Shams Zakhour (ignore Sfshaza)

commit sha 92ed15a57bca178ad5899f7b2776d1928bebbad3

Adding a "pubspec for Flutter" page (#5517) * Stashing * Adding a pubspec page for Flutter * Fixing some broken anchors. * Incorporating feedback

view details

Jacob Richman

commit sha 8ace5bfeb1ff8a91e88a4826a5f5fe7432372aa9

Update overview.md (#5523) Devtools is now stable not preview.

view details

Jonas Uekötter

commit sha f86ae658270c16d86774837199a8d22997af91b9

Fix broken link on Performance metrics page (#5522) See https://flutter.dev/docs/perf/metrics

view details

Miguel Beltran

commit sha 195b2270a3f7f4c85eb11aaeb033e6e53042714e

Migrated forms validation cookbook to null safety (#5515) * Migrated forms validation cookbook * remove unused deps * simplified code sample project * Update null_safety_examples/cookbook/forms/validation/lib/main.dart Co-authored-by: John Ryan <ryjohn@google.com> * Revert "Update null_safety_examples/cookbook/forms/validation/lib/main.dart" This reverts commit d1fba813317586616afc9e3e1863fc3199498ed4. Co-authored-by: Shams Zakhour (ignore Sfshaza) <44418985+sfshaza2@users.noreply.github.com> Co-authored-by: John Ryan <ryjohn@google.com>

view details

Miguel Beltran

commit sha 7b76e44675b191cebd3f58eddb7d920e0cdd7e74

Fix broken markdown (#5528)

view details

Tapaswi Satyapanthi

commit sha b856c5a978de7ce38e92d2f32cea7c8619c2e1bb

changed '&lt;' text to '<' in github URL (#5527) Co-authored-by: Tapaswi-AksharMine <tapaswi@aksharminechem.com>

view details

Miguel Beltran

commit sha cb4d38787abe445df2f7309d947e1448ecc7e48a

migrate drawer cookbook to null safety (#5529)

view details

geisterfurz007

commit sha c8a5f8542cf1d389d61ce2101cc14b1e8152228f

Update plugin-api-migration.md (#5531)

view details

Miguel Beltran

commit sha d72b9c1b189a9acff491047c5222c928136de1fb

use null_safety_examples in layout/index (#5537)

view details

push time in a month

PR opened flutter/website

Remote TPM and DRE postings

Both roles have been filled.

Presubmit checklist

+0 -295

0 comment

3 changed files

pr created time in a month

create barnchflutter/website

branch : remove-tpm-dre

created branch time in a month

issue commentdart-lang/linter

prefer_initializing_formals: handle case where ctor param is non-nullable, but field is nullable

Hmm, I just hit this issue on the latest Flutter beta. Dart 2.14.4

class Bid {
 final int? amount;
 Bid(int amount) : amount = amount;
 Bid.pass() : amount = null;
}

I guess my solution is I'm supposed to type Bid(int this.amount); instead?

That's not mentioned in the docs: https://dart-lang.github.io/linter/lints/prefer_initializing_formals.html

kevmoo

comment created time in 2 months

issue commentflutter/website

Would like an article which explains how to reduce APK size

There has been some progress on this. We now have better tooling around understanding APK size: https://docs.flutter.dev/development/tools/devtools/app-size

There was also a detailed analysis of Flutter's current APK size done internally in 2019 (go/flutter-apk-size), we unfortunately don't currently have a public (or 2021 updated) version of that, but I leave that here for later Googlers looking at this bug.

eseidelGoogle

comment created time in 2 months

push eventeseidelGoogle/keyboard_crash

Eric Seidel

commit sha 86c36d10c7cc8125501832a9e7e803a9b4aa3e29

Update main.dart

view details

push time in 2 months

issue commentflutter/flutter

[iOS] TextField causing system keyboard freezing

Here is a provider flavored reproduction: https://github.com/eseidelGoogle/keyboard_crash/blob/8dff8c5097299a4beb3825d496b1694c994cbb46/lib/main.dart which again, if we decide there is also a bug in provider (that it shouldn't make it so easy to constantly rebuild text fields), we should let them know. :)

ahetawal-p

comment created time in 2 months

issue commentflutter/flutter

[iOS] TextField causing system keyboard freezing

OK. I lied. I had too much fun reducing, so I finished. This is as small as I think I can get it.

If we decide that the constant rebuilds of the TextField are a bad thing, we should figure out why it's so easy to have Provider do that, and if we need to offer guidance to the provider package.

import 'package:flutter/material.dart';

// https://github.com/flutter/flutter/issues/90238
// Reproduction instructions
// Launch in iOS simulator
// Click on the top FormField, type "www😄😄😄", will require clicking on
// soft keyboard for ascii, switching to emoji, then clicking there.
// Click on the second field, type "www😄" and iOS keyboard will hang!

void main() async {
  runApp(MaterialApp(
    home: Scaffold(
      appBar: AppBar(),
      body: Column(
        children: [TextFormField(), const NodeItem()],
      ),
    ),
  ));
}

class NodeItem extends StatefulWidget {
  const NodeItem({
    Key? key,
  }) : super(key: key);

  @override
  State<NodeItem> createState() => _NodeItemState();
}

class _NodeItemState extends State<NodeItem> {
  // This text seems to be required, unclear why:
  late final controller = TextEditingController(text: '\u0000');

  @override
  Widget build(BuildContext context) {
    return TextField(
      controller: controller,
      // Originally Provider was causing the rebuilds, but this seem to
      // work too:
      onChanged: (_) => setState(() {}),
    );
  }
}
ahetawal-p

comment created time in 2 months

push eventeseidelGoogle/keyboard_crash

Eric Seidel

commit sha 18de86ff22545a9e9b9980d466f7e789dd7922d8

Update pubspec.lock

view details

push time in 2 months

push eventeseidelGoogle/keyboard_crash

Eric Seidel

commit sha f829f147e58494c69c5f8ee8361bb11bd68f7829

as small as I can get it

view details

Eric Seidel

commit sha 7f17c2ecad5aa0dd93b3c819dfb8223fa8c4ae73

remove provider

view details

push time in 2 months

push eventeseidelGoogle/keyboard_crash

Eric Seidel

commit sha 8dff8c5097299a4beb3825d496b1694c994cbb46

remove focus node

view details

push time in 2 months

push eventeseidelGoogle/keyboard_crash

Eric Seidel

commit sha bd8ff9514513ddfc5f33f5983ce468a61a64102e

more reduction

view details

push time in 2 months

push eventeseidelGoogle/keyboard_crash

Eric Seidel

commit sha ef9a47895d180c2254fb2cafee544f6c26b3fa27

Further reduction

view details

push time in 2 months

push eventeseidelGoogle/keyboard_crash

Eric Seidel

commit sha 2be2bd04d37f084cff756128370e972b5d179e18

More reduction

view details

push time in 2 months

push eventeseidelGoogle/keyboard_crash

Eric Seidel

commit sha 1cc45caea7db5d96d287a1140e7404897bc13f56

Further reduction

view details

push time in 2 months

push eventeseidelGoogle/keyboard_crash

Eric Seidel

commit sha 47ea836a881e03909911351e59be25303f1a825a

Further reduction

view details

push time in 2 months

push eventeseidelGoogle/keyboard_crash

Eric Seidel

commit sha da0556caf9a3756ccfd7e50151c81a4ab963d366

Further reduction

view details

push time in 2 months

push eventeseidelGoogle/keyboard_crash

Eric Seidel

commit sha f06d018bab44672b6cfb606bd00b3e602688fc6e

Further reduction

view details

push time in 2 months

push eventeseidelGoogle/keyboard_crash

Eric Seidel

commit sha 863bbdc124353382e5c4876c33218a3060199c05

Further reduction

view details

push time in 2 months

push eventeseidelGoogle/keyboard_crash

Eric Seidel

commit sha 80b83259cfc2bd897e5d9f9e8a1407088a9bcca1

Remove multi-line support Marker seems required? I tried removing the marker code and it stopped reproducing!

view details

push time in 2 months

push eventeseidelGoogle/keyboard_crash

Eric Seidel

commit sha d061df184f9c2229880e66760472e4030cfbed21

Further reduction

view details

push time in 2 months

push eventeseidelGoogle/keyboard_crash

Eric Seidel

commit sha ae73320e47a6c192a8817eb72225db4c063a0521

Further reduction.

view details

push time in 2 months

more