فهرست منبع

Fix eval provider

Jonathan Kelley 1 سال پیش
والد
کامیت
729bfa3be1
1فایلهای تغییر یافته به همراه6 افزوده شده و 2 حذف شده
  1. 6 2
      packages/desktop/src/webview.rs

+ 6 - 2
packages/desktop/src/webview.rs

@@ -9,6 +9,7 @@ use crate::{
     Config, DesktopContext, DesktopService,
 };
 use dioxus_core::VirtualDom;
+use dioxus_html::prelude::EvalProvider;
 use futures_util::{pin_mut, FutureExt};
 use std::{rc::Rc, task::Waker};
 use wry::{RequestAsyncResponder, WebContext, WebViewBuilder};
@@ -151,8 +152,11 @@ impl WebviewInstance {
         dom.base_scope().provide_context(desktop_context.clone());
 
         // Also set up its eval provider
-        dom.base_scope()
-            .provide_context(Rc::new(DesktopEvalProvider::new(desktop_context.clone())));
+        // It's important that we provide as dyn EvalProvider - using the concrete type has
+        // a different TypeId.
+        let provider: Rc<dyn EvalProvider> =
+            Rc::new(DesktopEvalProvider::new(desktop_context.clone()));
+        dom.base_scope().provide_context(provider);
 
         WebviewInstance {
             waker: tao_waker(shared.proxy.clone(), desktop_context.window.id()),