我需要复制一个文本小部件的值,然后将其复制到另一个。
我尝试使用键进行此操作,但在这种情况下我不知道如何访问文本小部件。
是否可以使用onPressed属性在Flutter中进行操作?
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')
)
],
),
),
);
}
}
答案 0 :(得分:2)
直接回答您的问题:您可以使用其data属性访问Text
小部件内的文本。
Text widget = Text('text value');
String text = widget.data;
print(text); // text value
接下来,您无法通过其关键属性访问窗口小部件。至少您不应该这样做,因为它们是为不同目的而设计的:这是关于Flutter中的键的video和article。
您可以在这里将TextWidget
从StatelessWidget
变成StatefulWidget
,然后根据状态呈现第二个Text
的内容。可以在Flutter官方网站Start thinking declaratively上找到关于状态是什么以及为什么要使用它的很好的介绍。
然后,您可以将第一个Text
小部件保存在变量中,然后使用data
属性更新直接访问其内容,然后更新整个小部件的状态。
更典型的和通常更可取的方法是根据状态呈现两个按钮的内容,并从状态变量而不是从小部件本身获取所需的文本,如Sebastian和MSARKrish所提出的。
请注意,您不能像使用data
在JavaScript DOM API中那样强制性地更改Text小部件的innerText
属性:
_textWidget.data = "New text"; // Doesn't work
因为它的data
是final
。在Flutter中,您必须进行声明式思考,这是值得的。
答案 1 :(得分:1)
class TextWidget extends StatefulWidget {
@override
_TextWidgetState createState() => _TextWidgetState();
}
class _TextWidgetState extends State<TextWidget> {
String text1Value = "text to be copied";
String text2Value = "";
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
text1Value,
),
RaisedButton(
onPressed: () {
setState(() {
text2Value = text1Value;
});
},
child: Text("Copy value"),
),
SizedBox(height: 40),
Text(
text2Value,
)
],
),
),
);
}
}
答案 2 :(得分:1)
尝试
version: 2.1
orbs:
node: circleci/node@2.0.1
slack: circleci/slack@3.4.2
...
- slack/status:
webhook: https://hooks.slack.com/services/XXXXXXX/XXXXXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXX
...