332 {
333
334std::once_flag g_dispatchers_init_flag;
335std::unordered_map<std::string_view, void*> g_function_dispatchers;
336
337void* ResolveFfiNativeFunction(
const char*
name, uintptr_t
args) {
338 auto it = g_function_dispatchers.find(
name);
339 return (it != g_function_dispatchers.end()) ? it->second : nullptr;
340}
341
342void InitDispatcherMap() {
345}
346
347}
348
349void DartUI::InitForIsolate(const Settings& settings) {
350 std::call_once(g_dispatchers_init_flag, InitDispatcherMap);
351
352 auto dart_ui = Dart_LookupLibrary(
ToDart(
"dart:ui"));
353 if (Dart_IsError(dart_ui)) {
354 Dart_PropagateError(dart_ui);
355 }
356
357
358 Dart_Handle result =
359 Dart_SetFfiNativeResolver(dart_ui, ResolveFfiNativeFunction);
360 if (Dart_IsError(result)) {
361 Dart_PropagateError(result);
362 }
363
364 if (settings.enable_impeller) {
365 result = Dart_SetField(dart_ui,
ToDart(
"_impellerEnabled"), Dart_True());
366 if (Dart_IsError(result)) {
367 Dart_PropagateError(result);
368 }
369 }
370
371 if (settings.enable_platform_isolates) {
372 result =
373 Dart_SetField(dart_ui,
ToDart(
"_platformIsolatesEnabled"), Dart_True());
374 if (Dart_IsError(result)) {
375 Dart_PropagateError(result);
376 }
377 }
378
379 result = Dart_SetField(dart_ui,
ToDart(
"_implicitViewId"),
380 Dart_NewInteger(kFlutterImplicitViewId));
381 if (Dart_IsError(result)) {
382 Dart_PropagateError(result);
383 }
384}
385
386}
#define FFI_FUNCTION_LIST(V)
#define FFI_FUNCTION_INSERT(FUNCTION)
#define FFI_METHOD_LIST(V)
#define FFI_METHOD_INSERT(CLASS, METHOD)
G_BEGIN_DECLS G_MODULE_EXPORT FlValue * args
Dart_Handle ToDart(const T &object)