Esempio n. 1
0
        IEnumerator _loadCoroutine(string key, Completer completer, Isolate isolate)
        {
            var url = new Uri(key);

            using (var www = UnityWebRequest.Get(url)) {
                if (headers != null)
                {
                    foreach (var header in headers)
                    {
                        www.SetRequestHeader(header.Key, header.Value);
                    }
                }

                yield return(www.SendWebRequest());

                if (www.isNetworkError || www.isHttpError)
                {
                    completer.completeError(new Exception($"Failed to load from url \"{url}\": {www.error}"));
                    yield break;
                }

                var data = www.downloadHandler.data;

                using (Isolate.getScope(isolate)) {
                    completer.complete(data);
                }
            }
        }
        IEnumerator _loadCoroutine(string key, Completer completer, Isolate isolate)
        {
            var url = _urlFromKey(key);

            using (var www = UnityWebRequest.Get(url)) {
                if (headers != null)
                {
                    foreach (var header in headers)
                    {
                        www.SetRequestHeader(header.Key, header.Value);
                    }
                }

                yield return(www.SendWebRequest());

                if (www.isNetworkError || www.isHttpError)
                {
                    completer.completeError(new UIWidgetsError(new List <DiagnosticsNode>()
                    {
                        new ErrorSummary($"Unable to load asset: {key}"),
                        new StringProperty("HTTP status code", www.error)
                    }));
                    yield break;
                }

                var data = www.downloadHandler.data;

                using (Isolate.getScope(isolate)) {
                    completer.complete(data);
                }
            }
        }
Esempio n. 3
0
        void _handleMethodCall(string method, List <JSONNode> args)
        {
            if (TextInput._currentConnection == null)
            {
                return;
            }
            int client = args[0].AsInt;

            if (client != TextInput._currentConnection._id)
            {
                return;
            }

            using (Isolate.getScope(TextInput._currentConnection.isolate)) {
                switch (method)
                {
                case "TextInputClient.updateEditingState":
                    TextInput._updateEditingState(client, TextEditingValue.fromJSON(args[1].AsObject));
                    break;

                case "TextInputClient.performAction":
                    TextInput._performAction(client, TextInputUtils._toTextInputAction(args[1].Value));
                    break;

                default:
                    throw new UIWidgetsError($"unknown method ${method}");
                }
            }
        }
Esempio n. 4
0
        public static Future <R> compute <Q, R>(ComputeCallback <Q, R> callback, Q message, string debugLabel = null)
        {
            var completer = Completer.create();
            var isolate   = Isolate.current;

            var backgroundWorker = new BackgroundWorker();

            backgroundWorker.DoWork             += (sender, args) => { args.Result = callback((Q)args.Argument); };
            backgroundWorker.RunWorkerCompleted += (o, a) => {
                if (!isolate.isValid)
                {
                    return;
                }

                using (Isolate.getScope(isolate)) {
                    if (a.Error != null)
                    {
                        completer.completeError(a.Error);
                    }
                    else
                    {
                        completer.complete(FutureOr.value((R)a.Result));
                    }
                }
            };
            backgroundWorker.RunWorkerAsync(message);
            return(completer.future.to <R>());
        }
Esempio n. 5
0
 void _handleViewMetricsChanged(string method, List <JSONNode> args)
 {
     using (Isolate.getScope(anyIsolate)) {
         _wrapper.displayMetrics.onViewMetricsChanged();
         Window.instance.updateSafeArea();
         Window.instance.onMetricsChanged?.Invoke();
     }
 }
Esempio n. 6
0
 void _handleStateChanged(State state)
 {
     if (Window.instance._panel != null)
     {
         _innerStateChanged(state: state);
     }
     else
     {
         var isolate = Isolate.current;
         using (Isolate.getScope(isolate: isolate)) {
             _innerStateChanged(state: state);
         }
     }
 }
Esempio n. 7
0
        public override Widget build(BuildContext context)
        {
            var isolate = Isolate.current;

            return(new Column(
                       crossAxisAlignment: CrossAxisAlignment.start,
                       children: new List <Widget>()
            {
                new FlatButton(child: new Text("Click To Get Time"), onPressed: () =>
                {
                    UnityWebRequest www = UnityWebRequest.Get("http://worldclockapi.com/api/json/est/now");
                    var asyncOperation = www.SendWebRequest();
                    asyncOperation.completed += operation =>
                    {
                        var timeData = JsonUtility.FromJson <TimeData>(www.downloadHandler.text);
                        using (Isolate.getScope(isolate))
                        {
                            this.setState(() => { this._fileTime = timeData.currentFileTime; });
                        }
                    };
                }),
                new Text($"current file time: {this._fileTime}")
            }));
        }