Я отправляю объект с FirstPage
на SecondPage
. В SecondPage
есть возможность перевести String
объекта. Если после перевода я go вернусь к FirstPage
, а затем снова перейду к SecondPage
, он покажет ранее переведенный String
вместо исходного 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;
}