Flutter 颤振-显示单词对的翻译结果
这个应用程序创建了2个单词的混合物,到目前为止效果非常好(我使用了官方的颤振教程代码) 但是我想将英语单词包中的单词剪切成它们的组成部分,然后将它们翻译成德语,这样屏幕上就只有德语翻译了 我很难组合所需的函数,因为我是一个绝对的初学者。我已经尝试用join(“”)分隔单词,让它翻译并将结果保存在“data”中,并用它替换“suggestions”,但它说“参数类型‘String’不能指定给参数类型‘WordPair’。” 有一个聪明的解决办法吗Flutter 颤振-显示单词对的翻译结果,flutter,dart,language-translation,Flutter,Dart,Language Translation,这个应用程序创建了2个单词的混合物,到目前为止效果非常好(我使用了官方的颤振教程代码) 但是我想将英语单词包中的单词剪切成它们的组成部分,然后将它们翻译成德语,这样屏幕上就只有德语翻译了 我很难组合所需的函数,因为我是一个绝对的初学者。我已经尝试用join(“”)分隔单词,让它翻译并将结果保存在“data”中,并用它替换“suggestions”,但它说“参数类型‘String’不能指定给参数类型‘WordPair’。” 有一个聪明的解决办法吗 // Copyright 2018 The Flu
// Copyright 2018 The Flutter team. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'package:flutter/material.dart';
import 'package:english_words/english_words.dart';
import 'package:translator/translator.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Wordmix',
theme: ThemeData(
primaryColor: Colors.tealAccent,
),
home: RandomWords(),
);
}
}
class RandomWords extends StatefulWidget {
@override
_RandomWordsState createState() => _RandomWordsState();
}
class _RandomWordsState extends State<RandomWords> {
String data = "";
getFileData() async {
String responseText;
data = responseText;
setState(() {});
}
@override
void initState() {
super.initState();
getFileData();
}
GoogleTranslator translator = GoogleTranslator();
final _biggerFont = TextStyle(fontSize:20.0);
final _suggestions = <WordPair>[];
final _saved = Set<WordPair>();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('word mixing generator'),
actions: [
IconButton(icon: Icon(Icons.list), onPressed: _pushSaved),
],
),
body: _buildSuggestions(),
);
final wordPair = WordPair.random();
return Text(wordPair.asUpperCase);
}
Widget _buildSuggestions() {
const bool safeOnlyDefault = false;
return ListView.builder(
padding: EdgeInsets.all(16.0),
itemBuilder: /*1*/ (context, i) {
if (i.isOdd) return Divider(); /*2*/
final index = i ~/ 2; /*3*/
if (index >= _suggestions.length) {
_suggestions.addAll(generateWordPairs().take(10)); /*4*/
}
data = new WordPair.random(safeOnly: false).join(' '); //HERE IS MY ATTEMPT
String out;
textTranslate() async {
var output = await translator.translate(data, to: "de");
data = output.text;
setState(() {});
print(output.text);
}
return _buildRow(_suggestions[index]);
});
}
Widget _buildRow(WordPair pair) {
final alreadySaved = _saved.contains(pair);
return ListTile(
title: Text(
pair.asUpperCase,
style: _biggerFont,
),
trailing: Icon(
alreadySaved ? Icons.favorite : Icons.favorite_border,
color: alreadySaved ? Colors.red : null,
),
onTap: () {
setState(() {
if (alreadySaved) {
_saved.remove(pair);
} else {
_saved.add(pair);
}
});
}, // onTap
);
}
void _pushSaved() {
Navigator.of(context).push(
MaterialPageRoute<void>(
builder: (BuildContext context) {
final tiles = _saved.map(
(WordPair pair) {
return ListTile(
title: Text(
pair.asUpperCase,
style: _biggerFont,
),
);
},
);
final divided = ListTile.divideTiles(
context: context,
tiles: tiles,
).toList();
return Scaffold(
appBar: AppBar(
title: Text('saved'),
),
body: ListView(children: divided),
);
},
),
);
}
}
//版权所有2018颤振团队。版权所有。
//此源代码的使用受BSD样式许可证的约束,该许可证可以
//在许可证文件中找到。
进口“包装:颤振/材料.省道”;
导入“package:english_words/english_words.dart”;
导入“package:translator/translator.dart”;
void main()=>runApp(MyApp());
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
标题:“Wordmix”,
主题:主题数据(
primaryColor:Colors.tealacent,
),
home:RandomWords(),
);
}
}
类RandomWords扩展了StatefulWidget{
@凌驾
_RandomWordsState createState()=>\u RandomWordsState();
}
类_RandomWordsState扩展状态{
字符串数据=”;
getFileData()异步{
字符串响应文本;
数据=响应文本;
setState((){});
}
@凌驾
void initState(){
super.initState();
getFileData();
}
GoogleTranslator=GoogleTranslator();
最终_biggerFont=TextStyle(字体大小:20.0);
最终建议=[];
最终保存=设置();
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(“单词混合生成器”),
行动:[
图标按钮(图标:图标(Icons.list),ON按下:_pushSaved),
],
),
正文:_buildSuggestions(),
);
final wordPair=wordPair.random();
返回文本(wordPair.asUpperCase);
}
小部件_buildSuggestions(){
const bool safeOnlyDefault=false;
返回ListView.builder(
填充:所有边缘设置(16.0),
itemBuilder:/*1*/(上下文,i){
if(i.isOdd)返回分隔符();/*2*/
最终指数=i~/2;/*3*/
如果(索引>=\u建议长度){
_建议.addAll(generateWordPairs().take(10));/*4*/
}
data=newwordpair.random(safeOnly:false).join(“”);//这是我的尝试
串出;
textTranslate()异步{
var output=wait translator.translate(数据,转换为“de”);
数据=output.text;
setState((){});
打印(输出文本);
}
返回_buildRow(_建议[索引]);
});
}
小部件构建行(字对){
final alreadySaved=\u saved.contains(对);
返回列表块(
标题:正文(
一对,一对,
风格:_biggerFont,
),
尾随:图标(
alreadySaved?Icons.favorite:Icons.favorite_边框,
颜色:已保存?颜色。红色:空,
),
onTap:(){
设置状态(){
如果(已保存){
_保存。删除(对);
}否则{
_保存。添加(对);
}
});
},//onTap
);
}
作废(){
导航器.of(上下文).push(
材料路线(
生成器:(BuildContext上下文){
最终分幅=\u已保存.map(
(字对){
返回列表块(
标题:正文(
一对,一对,
风格:_biggerFont,
),
);
},
);
最终分割=ListTile.divideTiles(
上下文:上下文,
瓷砖:瓷砖,
).toList();
返回脚手架(
appBar:appBar(
标题:文本(“已保存”),
),
正文:列表视图(子项:已分割),
);
},
),
);
}
}