Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.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_Flutter Layout - Fatal编程技术网

Flutter 颤振检测功能

Flutter 颤振检测功能,flutter,flutter-layout,Flutter,Flutter Layout,我想创建一个“TextSpans”列表。 如果你按下一个单词,这个单词应该会改变 例如: 这棵树看起来很棒=>在“树”的顶部,字符串应该更改为这棵树,看起来很棒 如果再次按下该按钮,该值应更改为默认值:此树看起来很棒 有什么办法吗 class Satz extends StatefulWidget { @override _SatzState createState() => _SatzState(); } class _SatzState extends State<Sa

我想创建一个“TextSpans”列表。 如果你按下一个单词,这个单词应该会改变

例如:

这棵树看起来很棒=>在“树”的顶部,字符串应该更改为这棵树,看起来很棒

如果再次按下该按钮,该值应更改为默认值:此树看起来很棒

有什么办法吗

class Satz extends StatefulWidget {
  @override
  _SatzState createState() => _SatzState();
}

class _SatzState extends State<Satz> {
  
  String stringValue= 'The tree looks great';
  @override
  Widget build(BuildContext context) {
    
    return Scaffold(
      backgroundColor: Colors.blue,
          body: Container(
                 child: ListView.builder(

                   itemCount: 1,
                   itemBuilder: (context, length,){
                    return RichText(
                      text: TextSpan(
                        children: createTextSpans(stringValue)));
                   }) )
          );}}
  List<TextSpan> createTextSpans(stringValue){
    final string = stringValue;
    final arrayStrings = string.split(" ");
    List<TextSpan> arrayOfTextSpan = [];
    for (int index = 0; index < arrayStrings.length; index++){
      final text = arrayStrings[index] + " ";
      final span = TextSpan(
        text: text,
        style: TextStyle(fontSize: 50),
        recognizer: TapGestureRecognizer()..onTap = () {
          print(text);
        }
      );
      arrayOfTextSpan.add(span);
    }
    return arrayOfTextSpan;
}
类Satz扩展StatefulWidget{
@凌驾
_SatzState createState()=>u SatzState();
}
类_SatzState扩展状态{
String stringValue='树看起来很棒';
@凌驾
小部件构建(构建上下文){
返回脚手架(
背景颜色:Colors.blue,
主体:容器(
子项:ListView.builder(
物品计数:1,
itemBuilder:(上下文、长度){
返回RichText(
text:TextSpan(
子项:createTextSpans(stringValue));
}) )
);}}
列表createTextSpans(stringValue){
最终字符串=字符串值;
最终arrayStrings=string.split(“”);
列表arrayOfTextSpan=[];
对于(int index=0;index

非常感谢。我可以给你一个主意。试试这样的

import 'package:flutter/material.dart';
import 'package:flutter/gestures.dart';

void main() {
  runApp(MaterialApp(
    home: Satz(),
  ));
}

class Satz extends StatefulWidget {
  @override
  _SatzState createState() => _SatzState();
}

class _SatzState extends State<Satz> {
  String stringValue = 'The tree looks great';
  
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.blue,
      body: Container(
          child: ListView(
        children: [
          RichText(
            text: TextSpan(
              children: stringValue.split(' ').asMap().entries.map((entry) {
                String text = entry.value;
                int index = entry.key;
                return TextSpan(
                  text: text + " ",
                  style: TextStyle(fontSize: 50),
                  recognizer: new TapGestureRecognizer()
                    ..onTap = () {
                      List<String> correctedValue = stringValue.replaceAll(',','').split(' ');
                      print(correctedValue[index]);
                      if(!text.contains(',')){
                        correctedValue[index] += ',';                      
                      }
                      setState(
                        () {
                          stringValue = correctedValue.join(' ');
                        },
                      );
                    },
                );
              }).toList(),
            ),
          ),
        ],
      )),
    );
  }
}
导入“包装:颤振/材料.省道”;
导入“package:flatter/signatures.dart”;
void main(){
runApp(材料应用程序)(
主页:Satz(),
));
}
类Satz扩展StatefulWidget{
@凌驾
_SatzState createState()=>u SatzState();
}
类_SatzState扩展状态{
String stringValue='树看起来很棒';
@凌驾
小部件构建(构建上下文){
返回脚手架(
背景颜色:Colors.blue,
主体:容器(
子:ListView(
儿童:[
RichText(
text:TextSpan(
子项:stringValue.split(“”).asMap().entries.map((条目){
字符串文本=entry.value;
int index=entry.key;
返回文本范围(
文本:文本+“”,
样式:TextStyle(字体大小:50),
识别器:新的TapGestureRecognizer()
…onTap=(){
List correctedValue=stringValue.replaceAll(',','').split('');
打印(修正值[索引]);
如果(!text.contains(',')){
修正值[索引]+=',';
}
设定状态(
() {
stringValue=correctedValue.join(“”);
},
);
},
);
}).toList(),
),
),
],
)),
);
}
}

您希望每个单词都像这样,而不仅仅是树吗?谢谢。问题是它不适用于其他句子。还是我错了?你能说说这些句子是什么吗?它应该如何表现?应用程序的整体理念是用户应该知道句子中逗号的位置。因此我有很多不同的句子。这一页应该有一个句子和每一个字可按。这就是我使用TextSpan小部件的原因。如果用户单击该单词,该单词应更改为带有逗号的单词。如果用户再次点击这个单词,逗号应该会消失。更新了答案。我非常感谢!!!!!!还有一个问题。在某些句子中,用户必须添加2个或更多逗号。在此版本中,用户只需添加一个逗号。我不知道如何为它编写代码,但当按下同一个单词时,逗号应该消失