Flutter 3.38.0
- https://blog.flutter.dev/whats-new-in-flutter-3-38-3f7b258f7228
- https://developer.android.com/guide/navigation/custom-back/predictive-back-gesture
Rendering performance
https://api.flutter.dev/flutter/rendering/CustomPainter-class.html
https://docs.flutter.dev/perf/rendering-performance https://docs.flutter.dev/tools/devtools/performance https://docs.flutter.dev/perf/ui-performance
Skia deprecated flutter why and how
- Skia is a 2D graphics engine used in Chrome and Android
- It’s quite mature and performant, but there is shader compilation jank on Apple devices due to regulations in how iOS handles runtime compilation of shaders
- Since Skia is a separate product team at Google, the Flutter team decided to work on Impeller, a rendering engine for Flutter, to be able to work on issues that might take much longer to fix due to the external dependency
- Impeller is much more future proof compared to Skia, since it is Metal based and Apple is slowly removing support for OpenGL, the backend for Skia
Impeller performs worse than skia in power consumption https://github.com/flutter/flutter/issues/156681
[!guess what!]
Things older than the iPhone in 2007 📓
RenderMan 1988 (very obviously) Linux 1991 (obviously) OpenGL 1992 JavaScript 1995 (that makes sense) QuickTime 1995 (omg really?!) Flash 1996 (whattt) MP4 2001 GLSL 2002 Skia 2005
yumemi
https://github.com/yumemi-inc/flutter-mobile-project-template/tree/main
https://pub.dev/packages/pigeon
RenderObject とは何か?animated_to に学ぶレイアウト計算と描画の仕組み
AnimationController & AnimationContainer
Widget → Element → RenderObject
RenderObject Layout and Paint
Custom RenderObject
DartASTとその活用
analyser AST → used during dart analyze in analyzer package
Kernal AST → front_end package
_fe_analyser_shared → shared between both
Parse trees generated by a parser CST concrete syntax tree, AST abstract syntax tree
Visitor pattern used by RecursiveASTVisitor
アクセシビリティ、まだ完璧じゃないけど──“今から”できること
WCAG Web Content Accessibility Guidelines Perceivable Operable Understandable Robust
Flutter Accessibility release checklist
- Active interactions
- Screen reader testing (TalkBack Android and VoiceOver iOS
- Do people really use Screen readers
- Contrast ratios 4.5:1
- Context switching
- Tappable targets
- 48 x 48 px
- Errors
- Color vision deficiency testing
- Scale factors
Can set semantics for each widget, SemanticTree
- Why is semantics / accessibility always an afterthought? Like for example why can’t a widget itself hold semantics information instead of wrapping it with a
Semanticswidget Semanticswidget is used internally by Flutter widgets for exampleIconButton-
But when using things like
GestureDetector, semantics is not properly set ofc. So what to do in these scenarios?