首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >参数类型'Future<String>函数()‘不能分配给参数类型'double?’

问参数类型'Future<String>函数()‘不能分配给参数类型'double?’
EN

Stack Overflow用户
提问于 2022-04-28 08:29:52
回答 2查看 79关注 0票数 0

我正在尝试使用runJavascriptReturningResult获取webview高度

代码语言:javascript
复制
child: Container(
         height: () async => await webViewController.runJavascriptReturningResult("document.body.scrollHeight"),
 ...
)

总是得到错误的The argument type 'Future<String> Function()' can't be assigned to the parameter type 'double?'.,我如何才能在容器中获得这个网页的高度?

EN

回答 2

Stack Overflow用户

发布于 2022-04-28 08:45:10

我认为runJavascriptReturningResult函数返回一个字符串值。首先,通过将其写入控制台或调试来检查它返回的内容。如果是正确的字符串值,则转换为双值。那么,您应该将其解析为:

代码语言:javascript
复制
String retVal = await webViewController.runJavascriptReturningResult("document.body.scrollHeight").then(),

double val = double.parse(retVal);
票数 0
EN

Stack Overflow用户

发布于 2022-04-28 10:14:36

您需要提取您的方法:

代码语言:javascript
复制
Future<double> getHeight() async {
    String retVal = await webViewController
        .runJavascriptReturningResult("document.body.scrollHeight");
    // 0.0 is a fallback value in case it doesn't parse your string, you can set it whatever you want
    double height = double.tryParse(retVal) ?? 0.0;
    return height;
  }

因此,您可以像这样在FutureBuilder中使用它:

代码语言:javascript
复制
FutureBuilder(
  future: getHeight(),
  builder: (context, snap) {
    return SizedBox(
      height: snap.data as double?,
    );
  },
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72040402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档