Flutter flatter从窗口小部件获取文本
我来自爪哇,现在用flutter开始了我的第一步 在我的第一个应用程序中,我正在玩弄布局和按钮,我面临着让按钮动作正常工作的困难,可能是因为我来自java 在我的应用程序中,我有以下小部件:Flutter flatter从窗口小部件获取文本,flutter,text,widget,Flutter,Text,Widget,我来自爪哇,现在用flutter开始了我的第一步 在我的第一个应用程序中,我正在玩弄布局和按钮,我面临着让按钮动作正常工作的困难,可能是因为我来自java 在我的应用程序中,我有以下小部件: Widget _buttonOne = RaisedButton( onPressed: () {}, child: Text('Button One', style: TextStyle(fontSize: 20)), ); final _textContainer =
Widget _buttonOne = RaisedButton(
onPressed: () {},
child: Text('Button One', style: TextStyle(fontSize: 20)),
);
final _textContainer =
const Text('Container One', textAlign: TextAlign.center);
Container(
padding: const EdgeInsets.all(8),
child: _textContainer,
color: Colors.teal[200],
),
现在我想打印按钮的文本和容器的textchild。我如何做到这一点
CupertinoButton.filled(
child: Text('Button Two'),
onPressed: () {
print(_textContainer); // how do I print the text of the text widget here?
print (_buttonOne. ....); // on java there is a getText() method .... how does this work in flutter?
),
您可以使用
数据
属性访问文本
小部件的文本
:
final _textContainer =
const Text('Container One', textAlign: TextAlign.center);
@override
Widget build(BuildContext context) {
return Scaffold(body:
Center(
child: CupertinoButton.filled(
child: Text('Button Two'),
onPressed: () =>
{print(_textContainer.data)},
)
)
);
}
以类似的方式,您可以访问RaisedButton
子项的内容
:
final _raisedButtonText = const Text('Button One', style: TextStyle(fontSize: 20));
Widget _buttonOne = RaisedButton(onPressed: () {}, child: _raisedButtonText);
final _textContainer =
const Text('Container One', textAlign: TextAlign.center);
@override
Widget build(BuildContext context) {
return Scaffold(body:
Center(
child: CupertinoButton.filled(
child: Text('Button Two'),
onPressed: () {
print(_textContainer.data);
print(_raisedButtonText.data);
}
)
)
);
}
您可以使用
数据
属性访问文本
小部件的文本
:
final _textContainer =
const Text('Container One', textAlign: TextAlign.center);
@override
Widget build(BuildContext context) {
return Scaffold(body:
Center(
child: CupertinoButton.filled(
child: Text('Button Two'),
onPressed: () =>
{print(_textContainer.data)},
)
)
);
}
以类似的方式,您可以访问RaisedButton
子项的内容
:
final _raisedButtonText = const Text('Button One', style: TextStyle(fontSize: 20));
Widget _buttonOne = RaisedButton(onPressed: () {}, child: _raisedButtonText);
final _textContainer =
const Text('Container One', textAlign: TextAlign.center);
@override
Widget build(BuildContext context) {
return Scaffold(body:
Center(
child: CupertinoButton.filled(
child: Text('Button Two'),
onPressed: () {
print(_textContainer.data);
print(_raisedButtonText.data);
}
)
)
);
}
您可以复制粘贴运行下面的完整代码
您可以使用
as
进行类型转换,然后访问属性数据
代码片段
CupertinoButton.filled(
child: Text('Button Two'),
onPressed: () {
print(_textContainer.data);
print(((_buttonOne as RaisedButton).child as Text).data);
}),
输出
I/flutter (30756): Container One
I/flutter (30756): Button One
完整代码
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
Widget _buttonOne = RaisedButton(
onPressed: () {},
child: Text('Button One', style: TextStyle(fontSize: 20)),
);
final _textContainer =
const Text('Container One', textAlign: TextAlign.center);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
CupertinoButton.filled(
child: Text('Button Two'),
onPressed: () {
print(_textContainer
.data); // how do I print the text of the text widget here?
print(((_buttonOne as RaisedButton).child as Text).data);
}),
],
),
),
);
}
}
import'包装:flift/cupertino.dart';
进口“包装:颤振/材料.省道”;
void main(){
runApp(MyApp());
}
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
标题:“颤振演示”,
主题:主题数据(
主样本:颜色。蓝色,
),
主页:MyHomePage(标题:“颤振演示主页”),
);
}
}
类MyHomePage扩展StatefulWidget{
MyHomePage({Key,this.title}):超级(Key:Key);
最后的字符串标题;
@凌驾
_MyHomePageState createState()=>\u MyHomePageState();
}
类_MyHomePageState扩展状态{
小部件_buttone=RaisedButton(
按下:(){},
子项:文本('Button One',样式:TextStyle(fontSize:20)),
);
最终文本容器=
常量文本(“容器一”,textAlign:textAlign.center);
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(widget.title),
),
正文:中(
子:列(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
丘比特纽扣(
子项:文本(“按钮二”),
已按下:(){
打印(_)文本容器
.data);//如何在此处打印文本小部件的文本?
打印(((_buttonOne作为RaisedButton)。child作为Text)。数据);
}),
],
),
),
);
}
}
您可以复制粘贴运行下面的完整代码您可以使用
as
进行类型转换,然后访问属性数据
代码片段
CupertinoButton.filled(
child: Text('Button Two'),
onPressed: () {
print(_textContainer.data);
print(((_buttonOne as RaisedButton).child as Text).data);
}),
输出
I/flutter (30756): Container One
I/flutter (30756): Button One
完整代码
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
Widget _buttonOne = RaisedButton(
onPressed: () {},
child: Text('Button One', style: TextStyle(fontSize: 20)),
);
final _textContainer =
const Text('Container One', textAlign: TextAlign.center);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
CupertinoButton.filled(
child: Text('Button Two'),
onPressed: () {
print(_textContainer
.data); // how do I print the text of the text widget here?
print(((_buttonOne as RaisedButton).child as Text).data);
}),
],
),
),
);
}
}
import'包装:flift/cupertino.dart';
进口“包装:颤振/材料.省道”;
void main(){
runApp(MyApp());
}
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
标题:“颤振演示”,
主题:主题数据(
主样本:颜色。蓝色,
),
主页:MyHomePage(标题:“颤振演示主页”),
);
}
}
类MyHomePage扩展StatefulWidget{
MyHomePage({Key,this.title}):超级(Key:Key);
最后的字符串标题;
@凌驾
_MyHomePageState createState()=>\u MyHomePageState();
}
类_MyHomePageState扩展状态{
小部件_buttone=RaisedButton(
按下:(){},
子项:文本('Button One',样式:TextStyle(fontSize:20)),
);
最终文本容器=
常量文本(“容器一”,textAlign:textAlign.center);
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(widget.title),
),
正文:中(
子:列(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
丘比特纽扣(
子项:文本(“按钮二”),
已按下:(){
打印(_)文本容器
.data);//如何在此处打印文本小部件的文本?
打印(((_buttonOne作为RaisedButton)。child作为Text)。数据);
}),
],
),
),
);
}
}
以下两个答案可以解决您的问题,但这种方法并不反映颤振的影响modularity@Yadu您能更详细地解释一下吗?您是使用按钮文本作为值,还是纯粹出于调试目的?(如果是为了调试,那么下面的答案看起来不错),在了解您试图在更广泛的示例中实现的目标后,可以给出详细的解释谢谢您的兴趣。我的目标是发现如何在实际应用程序中使用这样的值。目前,我仍在弄清楚颤振是如何处理事情的。下面两个答案解决了您的问题,但这种方法并没有反映颤振的特性modularity@Yadu您能更详细地解释一下吗?您是使用按钮文本作为值,还是纯粹出于调试目的?(如果是为了调试,那么下面的答案看起来不错),在了解您试图在更广泛的示例中实现的目标后,可以给出详细的解释谢谢您的兴趣。我的目标是发现如何在实际应用程序中使用这样的值。目前,我仍在弄清楚弗利特是如何处理事情的。很酷,非常感谢你的回复。。。。perfectlyCool正在运行,非常感谢您的回复。。。。非常感谢这个详细的答案,非常有帮助非常感谢这个详细的答案,非常有帮助