Skip to content

Commit e5d7873

Browse files
committed
lancode in FeedModel to reduce google translates
1 parent eef5e8b commit e5d7873

File tree

4 files changed

+23
-31
lines changed

4 files changed

+23
-31
lines changed

lib/model/feedModel.dart

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ class FeedModel {
1616
String? imagePath;
1717
List<String>? tags;
1818
List<String?>? replyTweetKeyList;
19+
String?
20+
lanCode; //Saving the language of the tweet so to not translate to check which language
1921
UserModel? user;
2022
FeedModel(
2123
{this.key,
@@ -31,6 +33,7 @@ class FeedModel {
3133
this.user,
3234
this.replyTweetKeyList,
3335
this.parentkey,
36+
this.lanCode,
3437
this.childRetwetkey});
3538
toJson() {
3639
return {
@@ -46,6 +49,7 @@ class FeedModel {
4649
"replyTweetKeyList": replyTweetKeyList,
4750
"user": user == null ? null : user!.toJson(),
4851
"parentkey": parentkey,
52+
"lanCode": lanCode,
4953
"childRetwetkey": childRetwetkey
5054
};
5155
}
@@ -62,6 +66,7 @@ class FeedModel {
6266
imagePath = map['imagePath'];
6367
createdAt = map['createdAt'];
6468
imagePath = map['imagePath'];
69+
lanCode = map['lanCode'];
6570
// username = map['username'];
6671
user = UserModel.fromJson(map['user']);
6772
parentkey = map['parentkey'];

lib/ui/page/feed/composeTweet/composeTweet.dart

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import 'package:flutter_twitter_clone/widgets/customWidgets.dart';
1919
import 'package:flutter_twitter_clone/widgets/url_text/customUrlText.dart';
2020
import 'package:flutter_twitter_clone/widgets/newWidget/title_text.dart';
2121
import 'package:provider/provider.dart';
22+
import 'package:translator/translator.dart';
2223

2324
class ComposeTweetPage extends StatefulWidget {
2425
const ComposeTweetPage(
@@ -92,7 +93,7 @@ class _ComposeTweetReplyPageState extends State<ComposeTweetPage> {
9293
var state = Provider.of<FeedState>(context, listen: false);
9394
kScreenloader.showLoader(context);
9495

95-
FeedModel tweetModel = createTweetModel();
96+
FeedModel tweetModel = await createTweetModel();
9697
late String tweetId;
9798

9899
/// If tweet contain image
@@ -160,7 +161,7 @@ class _ComposeTweetReplyPageState extends State<ComposeTweetPage> {
160161
/// If tweet is new tweet then `parentkey` and `childRetwetkey` should be null
161162
/// IF tweet is a comment then it should have `parentkey`
162163
/// IF tweet is a retweet then it should have `childRetwetkey`
163-
FeedModel createTweetModel() {
164+
Future<FeedModel> createTweetModel() async {
164165
var state = Provider.of<FeedState>(context, listen: false);
165166
var authState = Provider.of<AuthState>(context, listen: false);
166167
var myUser = authState.userModel;
@@ -176,6 +177,10 @@ class _ComposeTweetReplyPageState extends State<ComposeTweetPage> {
176177
var tags = Utility.getHashTags(_textEditingController.text);
177178
FeedModel reply = FeedModel(
178179
description: _textEditingController.text,
180+
lanCode:
181+
(await GoogleTranslator().translate(_textEditingController.text))
182+
.sourceLanguage
183+
.code,
179184
user: commentedUser,
180185
createdAt: DateTime.now().toUtc().toString(),
181186
tags: tags,

lib/widgets/tweet/tweet.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,7 @@ class _TweetBody extends StatelessWidget {
261261
urlStyle: urlStyle,
262262
),
263263
TweetTranslation(
264+
languageCode: model.lanCode,
264265
tweetKey: model.key!,
265266
description: model.description!,
266267
textStyle: textStyle,
@@ -387,6 +388,7 @@ class _TweetDetailBody extends StatelessWidget {
387388
style: textStyle,
388389
urlStyle: urlStyle),
389390
TweetTranslation(
391+
languageCode: model.lanCode,
390392
tweetKey: model.key!,
391393
description: model.description!,
392394
textStyle: textStyle,

lib/widgets/tweet/widgets/tweetTranslation.dart

Lines changed: 9 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -12,20 +12,26 @@ class TweetTranslation extends StatelessWidget {
1212
final String tweetKey;
1313
final TextStyle? textStyle;
1414
final TextStyle? urlStyle;
15+
final String? languageCode;
1516
const TweetTranslation(
1617
{Key? key,
1718
required this.tweetKey,
1819
required this.description,
20+
required this.languageCode,
1921
this.textStyle,
2022
this.urlStyle})
2123
: super(key: key);
2224

2325
@override
2426
Widget build(BuildContext context) {
25-
String lan = Utility.getLocale(context).toLanguageTag();
27+
String localeLanguageTag = Utility.getLocale(context).toLanguageTag();
28+
String localeLanguageCode = localeLanguageTag.split('-')[0];
2629
var state = Provider.of<FeedState>(context, listen: false);
2730

2831
try {
32+
if (/*languageCode == null ||*/ languageCode == localeLanguageCode)
33+
return SizedBox.shrink();
34+
2935
if (state.tweetsTranslations.containsKey(tweetKey)) {
3036
if (state.tweetsTranslations[tweetKey] != null) {
3137
return _translation(state.tweetsTranslations[tweetKey]!, context,
@@ -35,8 +41,8 @@ class TweetTranslation extends StatelessWidget {
3541
}
3642
} else {
3743
return FutureBuilder<Translation>(
38-
future: GoogleTranslator()
39-
.translate(description.removeSpaces, to: lan.split('-')[0]),
44+
future: GoogleTranslator().translate(description.removeSpaces,
45+
from: languageCode ?? 'auto', to: localeLanguageCode),
4046
builder: (BuildContext context, AsyncSnapshot<Translation> snapshot) {
4147
if (snapshot.hasData) {
4248
if (snapshot.data!.text == snapshot.data!.source.trim()) {
@@ -103,29 +109,3 @@ Widget _translation(Translation translation, BuildContext context,
103109
],
104110
);
105111
}
106-
107-
// Padding(
108-
// padding: const EdgeInsets.symmetric(vertical: 10.0),
109-
// child: Row(
110-
// children: [
111-
// Expanded(
112-
// child: const Divider(
113-
// thickness: 1,
114-
// )),
115-
// Text(
116-
// "Translated from ${snapshot.data!.sourceLanguage} by ",
117-
// style: TextStyle(
118-
// color: AppColor.lightGrey,
119-
// fontWeight: FontWeight.bold),
120-
// ),
121-
// customIcon(context,
122-
// icon: Icons.g_translate,
123-
// paddingIcon: 0,
124-
// iconColor: AppColor.lightGrey),
125-
// Expanded(
126-
// child: const Divider(
127-
// thickness: 1,
128-
// )),
129-
// ],
130-
// ),
131-
// ),

0 commit comments

Comments
 (0)