我需要复制文本小部件的值并将其复制到另一个。
我尝试使用按键执行此操作,但我不知道在这种情况下如何访问文本小部件。
是否可以在 Flutter 中使用 onPressed 属性来实现?
import 'package:flutter/material.dart';
class TextWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
"Value to be copied",
key: Key('text1')
),
RaisedButton(
onPressed: (){
// code here
},
child: Text("Copy value"),
),
SizedBox(height: 40),
Text(
"",
key: Key('text2')
)
],
),
),
);
}
}
最佳答案
直接回答您的问题:您可以使用其 data 访问 Text
小部件内的文本属性。
Text widget = Text('text value');
String text = widget.data;
print(text); // text value
接下来,您无法通过小部件的关键属性来访问它们。至少你不应该这样做,因为它们是为不同的目的而设计的:这是一个 video和一个article关于 Flutter 中的键。
您在这里可以做的是将您的 TextWidget
从 StatelessWidget
转换为 StatefulWidget
并呈现第二个 Text
的内容> 基于状态。关于状态是什么以及为什么应该使用它的很好的介绍可以在 Flutter 官方网站上找到:Start thinking declaratively .
然后,您可以将第一个 Text
小部件保存在变量中,然后使用 data
属性更新直接访问其内容,然后更新整个小部件的状态。
更规范且通常更可取的方法是根据状态呈现两个按钮的内容,并从状态变量而不是从小部件本身获取所需的文本,如 Sebastian 和 MSARKrish 所提议的。
请注意,您无法强制更改文本小部件的 data
属性,就像在 JavaScript DOM API 中使用 innerText
所做的那样:
_textWidget.data = "New text"; // Doesn't work
因为它的数据
是最终
。在 Flutter 中,你必须以声明式的方式思考,这是值得的。
关于flutter - 如何使用按钮的 onPressed 属性将小部件文本的值复制到另一个小部件文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62306745/