snapshot.data在颤音中ret。在翻译包中使用

发布于 2025-02-05 18:04:54 字数 1176 浏览 3 评论 0原文

我正在使用 translator for for for for for自动将字符串值转换为文本窗口中的字符串,但是我的代码不起作用,但是..只是返回 null

代码:

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

class TranslatedText extends StatefulWidget {
  String data;
  String to;
  TranslatedText({Key? key, required this.data, required this.to}) : super(key: key);

  @override
  State<TranslatedText> createState() => _TranslatedTextState();
}

class _TranslatedTextState extends State<TranslatedText> {
  @override
  Widget build(BuildContext context) {
    return FutureBuilder(
        future: MainController().translate(widget.data, widget.to),
        builder: (BuildContext c, AsyncSnapshot<String> snapshot) {
          return Text('${snapshot.data}');
        });
  }
}

TranslatedText(data: "Egg", to: "es"),

I am using translator package for automatically translate the String value in the Text widget, but my codes are not working.. just returning null.

Codes:

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

class TranslatedText extends StatefulWidget {
  String data;
  String to;
  TranslatedText({Key? key, required this.data, required this.to}) : super(key: key);

  @override
  State<TranslatedText> createState() => _TranslatedTextState();
}

class _TranslatedTextState extends State<TranslatedText> {
  @override
  Widget build(BuildContext context) {
    return FutureBuilder(
        future: MainController().translate(widget.data, widget.to),
        builder: (BuildContext c, AsyncSnapshot<String> snapshot) {
          return Text('${snapshot.data}');
        });
  }
}

TranslatedText(data: "Egg", to: "es"),

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

吾家有女初长成 2025-02-12 18:04:54

这是FutureBuilder的共同行为。一段时间后,它将在将来解决并返回响应(快照),因此您需要先检查快照并相应地构建代码。喜欢:

  FutureBuilder(
      future: MainController().translate(widget.data, widget.to),
      builder: (BuildContext c, AsyncSnapshot<String> snapshot) {
        if (snapshot.connectionState == ConnectionState.waiting) {
          return Center(
            child: CircularProgressIndicator(),
          );
        } else {
          if (snapshot.hasData) {
            var result = snapshot.data as String;
            return Text(result);
          } else if (snapshot.hasError) {
            return Text('An error occurred');
          } else {
            return Text('No data returned from API');
          }
        }
      });

futornbuilder doc doc

It's a common behavior for FutureBuilder. It resolves in the future and returns a response (snapshot) after a while, so you need to check the snapshot first and structure your code accordingly. Like:

  FutureBuilder(
      future: MainController().translate(widget.data, widget.to),
      builder: (BuildContext c, AsyncSnapshot<String> snapshot) {
        if (snapshot.connectionState == ConnectionState.waiting) {
          return Center(
            child: CircularProgressIndicator(),
          );
        } else {
          if (snapshot.hasData) {
            var result = snapshot.data as String;
            return Text(result);
          } else if (snapshot.hasError) {
            return Text('An error occurred');
          } else {
            return Text('No data returned from API');
          }
        }
      });

FutureBuilder doc

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文