原文在翻译后有改动

问题描述 投票:0回答:1

我正在发送 对象FirstPageSecondPage. 在 SecondPage 有一个选项来翻译 String 的对象。翻译后,如果我回到 FirstPage 然后再次导航到 SecondPage它显示了之前翻译的 String 代替原来 String. 但我希望得到原始的字符串。这是我的代码。

class PostDetailsPage extends StatefulWidget {

  final Post post;

  PostDetailsPage({
    @required this.post,
  });

  @override
  _PostDetailsPageState createState() => _PostDetailsPageState();
}

class _PostDetailsPageState extends State<PostDetailsPage> {

  Post _post;

  @override
  void initState() {
    super.initState();
    _post = widget.post;
  }

  // for translation
  var translatedPost = await TranslationService.translatePost(languageCode, _post);
  setState(() {
    _post = translatedPost;
  });

  // inside build()
  @override
  Widget build(BuildContext context) {
    ...
    Container(
      padding: const EdgeInsets.only(top: 20.0, left: 20.0),
      child: Text(_post.title),
    ),
    Container(
      padding: const EdgeInsets.only(top: 20.0, left: 20.0),
      child: Text(_post.description),
    ),
  }

这里是翻译的函数。

  static Future<Post> translatePost(
      String languageCode, Post post) async {
    var translator = GoogleTranslator();
    String title = await translator.translate(post.title, to: languageCode);
    String description =
        await translator.translate(post.description, to: languageCode);
    post.title = title;
    post.description = description;
    return post;
  }
flutter dart google-translate
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.