Matej Knopp Profile
Matej Knopp

@MatejKnopp

Followers
826
Following
424
Statuses
531

Developing desktop apps (mostly). Hacking on Flutter Engine. https://t.co/tuT3IQqf37 https://t.co/9FbeHXkNGJ

Prague
Joined November 2009
Don't wanna be here? Send us removal request.
@MatejKnopp
Matej Knopp
2 years
Yesterday we open-sourced and It's an early preview, be gentle with it :) Anyone wants to ask me about it in person I'll be at #fluttervikings.
4
9
98
@MatejKnopp
Matej Knopp
1 day
@SuprDeclarative Wish somebody added material to that :)
1
0
9
@MatejKnopp
Matej Knopp
1 day
@OrestesGaolin I'm not sure what you mean by frame skipping gestures? I don't think this will affect that in any way. Do you have a specific Flutter issue in mind?
0
0
0
@MatejKnopp
Matej Knopp
2 days
@mraleph @SuprDeclarative @jezell @dart_lang I think the initial buffering is in network stack, because it completely disappears when using network link conditioner. Probably not something we can do anything about.
0
0
0
@MatejKnopp
Matej Knopp
2 days
@SuprDeclarative @mraleph @jezell @dart_lang In the end multipart request is a stream piped to a socket which reads from it. Is there a straightforward way to run your example?
1
0
0
@MatejKnopp
Matej Knopp
3 days
@SuprDeclarative @jezell @mraleph @dart_lang I think pipe() calls _HttpOutgoing.addStream (dart sdk, http_impl.dart), which then wraps it and passes the controller to _SocketStreamConsumer (socket_patch.dart), which should do the right thing and pause the stream as needed. But maybe I got lost somewhere on the way.
0
0
0
@MatejKnopp
Matej Knopp
3 days
@SuprDeclarative @jezell @mraleph @dart_lang It shouldn't be. You might want to debug it to see what is causing the eager reading. Default dart http client shouldn't, neither should cupertino_http. Cronet buffers the request eagerly, and it also happened for me with proxyman enabled.
1
0
1
@MatejKnopp
Matej Knopp
3 days
@SuprDeclarative @jezell @mraleph @dart_lang No. Your ReadProgressMonitor will eagerly read entire stream and write it to sink, which will likely buffer the entire contents. Again, there's no back pressure. Dart streams are bit tricky to work with. You can use to track the number of bytes sent.
1
0
0
@MatejKnopp
Matej Knopp
4 days
Android developer friends, maybe you can help me here. I'm writing a custom ContentProvider that generates PDF files on fly. Works with any PDF viewer I throw at it, except the Google Drive app. It fails with an error, before I even write anything to the pipe. Any ideas?
Tweet media one
0
0
3
@MatejKnopp
Matej Knopp
4 days
@jezell @SuprDeclarative @mraleph @dart_lang No blobs, just file objects received during drop.
1
0
0
@MatejKnopp
Matej Knopp
4 days
@SuprDeclarative @jezell @mraleph @dart_lang I was actually using package:http instead of raw dart:io, my bad. Extend http.BaseRequest, return multipart stream from finalize. The read progress of the stream should match upload progress. You can't be "adding" anything anywhere, there's no back pressure, it needs to be pull.
2
0
1
@MatejKnopp
Matej Knopp
4 days
@SuprDeclarative @jezell @mraleph @dart_lang Cronet is broken (reads the entire stream upfront), and so is dio. It tracks the read progress of the stream, but then it copies it to another when constructing multipart request essentially buffering everything in memory. So the only way is to assemble the request yourself.
2
0
1
@MatejKnopp
Matej Knopp
5 days
@daniel_kiing3 Not sure what you used for drag & drop, but super_drag_and_drop will do the trick (including multi item drag & drop on iOS).
1
1
10
@MatejKnopp
Matej Knopp
7 days
Nevermind, I can log it, I thought the private field was blacklisted. Turns out it's just that android developers, in their infinite wisdom, renamed the field from "fd" to "descriptor".
1
0
5
@MatejKnopp
Matej Knopp
8 days
@vatsal_manot I honestly don't know enough about SwiftUI to argue with this, so I'll take your word for it :) Tbf, my biggest problem with SwiftUI probably is not the performance, but how opaque it is.
1
0
2
@MatejKnopp
Matej Knopp
8 days
Building #flutter engine on arm64 windows VM on a M1 MAX is not for the inpatient. Nonetheless, it's pretty impressive that it actually works.
1
0
7