Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart2&x27;s的大小调整观察员被省道缩小器破坏_Dart - Fatal编程技术网

Dart2&x27;s的大小调整观察员被省道缩小器破坏

Dart2&x27;s的大小调整观察员被省道缩小器破坏,dart,Dart,我有以下Dart2代码片段(Dart 2.7),它在开发模式下运行时100%有效,但在生产模式下运行时失败 ResizeObserver rowObserver; 当建筑完成时 pub global run webdev build --output=web:build --release 我尝试过将--release改为--no release,但不确定如何在该模式下运行它 更改为dynamic,我得到了与缩小完全相同的问题: final ResizeObserverCallback

我有以下Dart2代码片段(Dart 2.7),它在开发模式下运行时100%有效,但在生产模式下运行时失败

  ResizeObserver rowObserver;
当建筑完成时

pub global run webdev build --output=web:build --release
我尝试过将--release改为--no release,但不确定如何在该模式下运行它

更改为
dynamic
,我得到了与缩小完全相同的问题:

final ResizeObserverCallback rowObserverCallback = (dynamic blah1, dynamic blah2){
更改为Object,至少我进入了resize回调:

    final ResizeObserverCallback rowObserverCallback = (Object blah1, Object blah2){
      print("inside row observer callback");
      print(blah1.runtimeType);
      print(blah2.runtimeType);
      print(blah1 is List<ResizeObserverEntry>);
试图在黑暗中射击,但没有击中任何东西

    final ResizeObserverCallback rowObserverCallback = (Object blah1, Object blah2){
      print("inside row observer callback");
      print(blah1.runtimeType);
      print(blah2.runtimeType);
      print(blah1 is List<ResizeObserverEntry>);
      print(blah1 is ResizeObserverEntry);
      print(blah1 is TableRowElement);
      print(blah1 is List<TableRowElement>);
      print(blah1 is JsArray);
      print(blah1 is NumToArrayPipe);
      print(blah1 == null);
      print(blah1 is Function);
      print(blah1 is ResizeObserver);
最后一个按预期打印为真

EDIT2:

使用JS Interopt,我正在执行
console.log
以查看blah1的实际类型,结果发现它是一个包含数组的DartObject

      context["console"].callMethod("log", [blah1]);

为了访问ResizeObserverEntry列表,我应该将blah1强制转换为什么

EDIT3

我制作了一个可以重现错误的演示:
bug\u resize\u observer.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div class="div1" style="background-color: red">
        <textarea style="padding: 10px; margin: 10px;">
            TESTING
        </textarea>
    </div>
    <div class="div2" style="background-color: blue">
        .
    </div>
    <script defer src="bug_resize_observer.dart.js"></script>
</body>
</html>
在开发模式下,调整文本区域大小时,蓝色div模仿红色div的高度:

在发布模式下,您只会收到以下错误:

EDIT4:

在此处记录错误:

ResizeObserver问题已在2.8.dev-13中修复,ResizeObserver条目仍然损坏:
    final ResizeObserverCallback rowObserverCallback = (Object blah1, Object blah2){
      print("inside row observer callback");
      print(blah1.runtimeType);
      print(blah2.runtimeType);
      print(blah1 is List<ResizeObserverEntry>);

      for (ResizeObserverEntry entry in [blah1 as ResizeObserverEntry]) {
        print(" ... entry is ${entry.runtimeType} and entry.target is ${entry.target.runtimeType}");
        //resizeRow(entry.target as TableRowElement);
      }
    };
name: blah
version: 0.0.2
description: Blah Blah

environment:
    sdk: ">=2.6.0 <3.0.0"

dependencies:
    angular: ^5.3.1
    angular_forms: ^2.1.2
    http: any
    js: ^0.6.0
    logging: "^0.11.3+1"
    html: any
    json_serializable: any

    blahvo:
        path: ../blah-vo

dev_dependencies:
    angular_test: 2.3.0
    build_runner: ^1.5.2
    build_test: ^0.10.2
    build_web_compilers: ^2.0.0
    test: ^1.0.0
J.c1.prototype={
k:function(a,b){H.p(b,H.j(a,0))
if(!!a.fixed$length)H.a7(P.E("add"))
a.push(b)},
u.c1=new ResizeObserver(H.aU(new L.j6(),2))},
this.a.c1.unobserve(a)},
r.c1.observe(a)},
if(a.constructor==Array)return J.c1.prototype
c1:function c1(a){this.$ti=a},
_.f3=_.c1=_.bg=_.c0=_.f2=null},
    final ResizeObserverCallback rowObserverCallback = (Object blah1, Object blah2){
      print("inside row observer callback");
      print(blah1.runtimeType);
      print(blah2.runtimeType);
      print(blah1 is List<ResizeObserverEntry>);
      print(blah1 is ResizeObserverEntry);
      print(blah1 is TableRowElement);
      print(blah1 is List<TableRowElement>);
      print(blah1 is JsArray);
      print(blah1 is NumToArrayPipe);
      print(blah1 == null);
      print(blah1 is Function);
      print(blah1 is ResizeObserver);
    final ResizeObserverCallback rowObserverCallback = (Object blah1, Object blah2){
      print("inside row observer callback");
      print(blah1.runtimeType);
      print(blah2.runtimeType);
      print(blah2 is List<ResizeObserverEntry>);
      print(blah2 is ResizeObserverEntry);
      print(blah2 is TableRowElement);
      print(blah2 is List<TableRowElement>);
      print(blah2 is JsArray);
      print(blah2 is NumToArrayPipe);
      print(blah2 == null);
      print(blah2 is Function);
      print(blah2 is ResizeObserver);
      context["console"].callMethod("log", [blah1]);
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div class="div1" style="background-color: red">
        <textarea style="padding: 10px; margin: 10px;">
            TESTING
        </textarea>
    </div>
    <div class="div2" style="background-color: blue">
        .
    </div>
    <script defer src="bug_resize_observer.dart.js"></script>
</body>
</html>
import "dart:html";

void main() {
  final DivElement div1 = querySelector("div.div1");
  final DivElement div2 = querySelector("div.div2");

  final ResizeObserver divResizeObserver = ResizeObserver((List<ResizeObserverEntry> blah1, ResizeObserver blah2) {
    print("inside divResizeObserverCallback");
    for (ResizeObserverEntry entry in blah1) {
        div2.style.height = "${entry.target.clientHeight}px";
    }
  });
  divResizeObserver.observe(div1);
}