Skip to content

Instantly share code, notes, and snippets.

View yjbanov's full-sized avatar
💭
Building a Web runtime for Flutter: http://bit.ly/flutter-web

Yegor yjbanov

💭
Building a Web runtime for Flutter: http://bit.ly/flutter-web
View GitHub Profile
@yjbanov
yjbanov / main.dart
Created January 19, 2024 23:17
hollow-durian-8275
import 'dart:ui' as ui;
void main() {
// Create a paragraph
var paragraphStyle = ui.ParagraphStyle(
fontFamily: 'Roboto',
textDirection: ui.TextDirection.ltr,
maxLines: 10,
);
var paragraphBuilder = ui.ParagraphBuilder(paragraphStyle);
@yjbanov
yjbanov / main.dart
Created January 19, 2024 00:24
astonishing-zephyr-8054
import 'dart:ui' as ui;
Future<void> main() async {
var dispatcher = ui.PlatformDispatcher.instance;
dispatcher.onDrawFrame = () {
var sb = ui.SceneBuilder();
var scene = sb.build();
dispatcher.implicitView!.render(scene);
};
@yjbanov
yjbanov / main.dart
Created January 18, 2024 23:23
solar-marsh-4778
import 'dart:async';
import 'dart:ui' as ui;
Future<void> main() async {
// This completer is only used to make the test wait until the frame is done.
var frameCompleter = Completer<void>();
// The concept of "dispatcher" is likely irrelevant to the WebText proposal.
// It's just part of Flutter's structure of the rendering API.
var dispatcher = ui.PlatformDispatcher.instance;
@yjbanov
yjbanov / main.dart
Created January 18, 2024 22:47
solar-marsh-4778
import 'dart:async';
import 'dart:ui' as ui;
Future<void> main() async {
// This completer is only used to make the test wait until the frame is done.
var frameCompleter = Completer<void>();
// The concept of "dispatcher" is likely irrelevant to the WebText proposal.
// It's just part of Flutter's structure of the rendering API.
var dispatcher = ui.PlatformDispatcher.instance;
@yjbanov
yjbanov / flutter_view_focus.dart
Created December 8, 2023 22:09
A sketch for a FlutterView focus API
abstract interface class FlutterView {
FlutterViewFocusState get focusState;
/// The timing of these events relative to keyboard events
/// is such and such.
FlutterViewFocusStateChanged get onFocusStateChanged;
set onFocusStateChanged(FlutterViewFocusStateChanged callback);
}
typedef FlutterViewFocusStateChanged = Function(
interface class ui.FlutterView
|
base class EngineFlutterView
/ |
/ |
/ |
base class ui.SingletonFlutterWindow final class _EngineFlutterViewImpl
|
final class EngineFlutterWindow
@yjbanov
yjbanov / focusable_platform_view.dart
Last active August 2, 2023 21:23
Demonstrates an issue in semantic node focusability
import 'dart:ui_web' as ui_web;
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:web/web.dart' as web;
void main() async {
_registerFactory();
runApp(const MyApp());
@yjbanov
yjbanov / serve_skwasm
Created August 2, 2023 18:12
Serves Flutter Web apps compiled for Skwasm
#!/usr/bin/env python3
from http.server import HTTPServer, SimpleHTTPRequestHandler, test
import sys
import os
class CORSRequestHandler (SimpleHTTPRequestHandler):
def end_headers (self):
self.send_header('Cross-Origin-Opener-Policy', 'same-origin')
self.send_header('Cross-Origin-Embedder-Policy', 'require-corp')
SimpleHTTPRequestHandler.end_headers(self)
@yjbanov
yjbanov / flutter_test_error.txt
Created December 5, 2022 18:31
flutter test --platform=chrome Windows error
[ +11 ms] C:\code\flutter\flutter\bin\cache\dart-sdk\bin\dart.exe --disable-dart-dev
C:\code\flutter\flutter\bin\cache\dart-sdk\bin\snapshots\frontend_server.dart.snapshot --sdk-root C:\code\flutter\flutter\bin\cache\flutter_web_sdk/
--incremental --target=dartdevc --experimental-emit-debug-metadata -DFLUTTER_WEB_AUTO_DETECT=true --output-dill
C:\Users\FLUTTE~1\AppData\Local\Temp\flutter_tools.57bf1561\flutter_test.7cb2f1fe\out --packages
C:\code\flutter\flutter\packages\flutter\.dart_tool\package_config.json -Ddart.vm.profile=false -Ddart.vm.product=false --enable-asserts
--track-widget-creation --filesystem-root C:\code\flutter\flutter\packages\flutter\test --filesystem-root
C:\Users\FLUTTE~1\AppData\Local\Temp\flutter_tools.57bf1561\flutter_test.7cb2f1fe\ --filesystem-scheme org-dartlang-app --initialize-from-dill
build\c7922d95bf4a2462b75c84a97c312edb.cache.dill.track.dill --platform C:\code\flutter\flutter\bin\cache\flutter_web_sdk\kernel\ddc_outline.dill
--verbosity=error --no-sound-null-safety
[ +125
class CapturedAccessibilityAnnouncement {
const CapturedAccessibilityAnnouncement(this.message, this.textDirection, {this.assertiveness = Assertiveness.polite});
final String message;
final TextDirection textDirection;
final Assertiveness? assertiveness;
void matches({
Matcher? message,
Matcher? textDirection,
Matcher? assertiveness,