Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 颤振-显示单词对的翻译结果_Flutter_Dart_Language Translation - Fatal编程技术网

Flutter 颤振-显示单词对的翻译结果

Flutter 颤振-显示单词对的翻译结果,flutter,dart,language-translation,Flutter,Dart,Language Translation,这个应用程序创建了2个单词的混合物,到目前为止效果非常好(我使用了官方的颤振教程代码) 但是我想将英语单词包中的单词剪切成它们的组成部分,然后将它们翻译成德语,这样屏幕上就只有德语翻译了 我很难组合所需的函数,因为我是一个绝对的初学者。我已经尝试用join(“”)分隔单词,让它翻译并将结果保存在“data”中,并用它替换“suggestions”,但它说“参数类型‘String’不能指定给参数类型‘WordPair’。” 有一个聪明的解决办法吗 // Copyright 2018 The Flu

这个应用程序创建了2个单词的混合物,到目前为止效果非常好(我使用了官方的颤振教程代码)

但是我想将英语单词包中的单词剪切成它们的组成部分,然后将它们翻译成德语,这样屏幕上就只有德语翻译了

我很难组合所需的函数,因为我是一个绝对的初学者。我已经尝试用join(“”)分隔单词,让它翻译并将结果保存在“data”中,并用它替换“suggestions”,但它说“参数类型‘String’不能指定给参数类型‘WordPair’。”

有一个聪明的解决办法吗

// 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(
标题:文本(“已保存”),
),
正文:列表视图(子项:已分割),
);
},
),
);
}
}