Flutter 颤振检测功能
我想创建一个“TextSpans”列表。 如果你按下一个单词,这个单词应该会改变 例如: 这棵树看起来很棒=>在“树”的顶部,字符串应该更改为这棵树,看起来很棒 如果再次按下该按钮,该值应更改为默认值:此树看起来很棒 有什么办法吗Flutter 颤振检测功能,flutter,flutter-layout,Flutter,Flutter Layout,我想创建一个“TextSpans”列表。 如果你按下一个单词,这个单词应该会改变 例如: 这棵树看起来很棒=>在“树”的顶部,字符串应该更改为这棵树,看起来很棒 如果再次按下该按钮,该值应更改为默认值:此树看起来很棒 有什么办法吗 class Satz extends StatefulWidget { @override _SatzState createState() => _SatzState(); } class _SatzState extends State<Sa
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个或更多逗号。在此版本中,用户只需添加一个逗号。我不知道如何为它编写代码,但当按下同一个单词时,逗号应该消失