import 'dart:html' as html; import 'dart:js' as js; import 'dart:typed_data'; import 'package:flutter/foundation.dart'; import 'package:flutter/services.dart'; bool _loadRequested = false; /// When Google CDNs are unreachable, `index.html` sets /// `window.rustdeskLocalFonts` and `GoogleFonts.robotoMono()` cannot download /// the terminal font. Load the copy bundled with the web app instead, /// registered under the family name google_fonts gives the terminal's /// TextStyle ('RobotoMono_regular'). Future loadLocalTerminalFontIfNeeded() async { if (_loadRequested || js.context['rustdeskLocalFonts'] != true) { return; } _loadRequested = true; try { final req = await html.HttpRequest.request( 'fonts/RobotoMono-Regular.ttf', responseType: 'arraybuffer', ); final data = ByteData.view(req.response as ByteBuffer); final loader = FontLoader('RobotoMono_regular') ..addFont(Future.value(data)); await loader.load(); } catch (e) { _loadRequested = false; debugPrint('Failed to load bundled Roboto Mono: $e'); } }