【问题标题】:Instance of '_Future<dynamic>' instead of input value in Translator package from Flutter'_Future<dynamic>' 的实例,而不是 Flutter 的 Translator 包中的输入值
【发布时间】:2021-11-10 11:33:10
【问题描述】:

这个范围给了我 _Future 的实例,但我想得到那个翻译后的文本。

Future<dynamic> translate(String input) async {
final translator = GoogleTranslator();
var result;
var translation = await translator
    .translate(input, to: 'tr')
    .then((value) => {result = value});
  return result;
}

【问题讨论】:

  • 您是如何尝试访问函数返回的值的?
  • ' var 结果 = arabicBuyer.translate("sentence");打印(结果。toString()); ' @X2
  • translate 返回一个 Future,因此您需要等待结果。要么像这样使用 await 关键字 var result = await arabicBuyer.translate("sentence");或使用 .then 像这样 arabicBuyer.translate("sentence").then((result) => print(result));
  • 谢谢。这解决了我的问题。

标签: flutter input flutter-packages translators flutter-future


【解决方案1】:

这行得通吗?我猜.translate 函数返回一个Translate 实例。您需要text 属性才能获得String

以下代码错误!

Future<String> translate(String input) async {
  final translator = GoogleTranslator();
  var result;
  var translation = await translator
      .translate(input, to: 'tr')
      .then((value) => {result = value});
  return result.text;
}

您还使用then 子句并将翻译结果转换为value,因此在这种情况下您不需要使用await 并设置变量translation。或者您可以使用await 并删除then。但是你不应该同时使用 awaitthen 来实现同一个异步方法。

所以应该使用下面的代码:

Future<String> translate(String input) async {
  final translator = GoogleTranslator();
  var translation = await translator
      .translate(input, to: 'tr');
  return translation.text;
}

【讨论】:

  • 您提到的范围似乎不对,至少不适合我的代码。除了 . 我得到同样的错误
猜你喜欢
  • 2021-11-25
  • 2021-11-02
  • 2019-09-08
  • 1970-01-01
  • 1970-01-01
  • 2021-10-05
  • 2020-07-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多