Flutter flatter从窗口小部件获取文本

Flutter flatter从窗口小部件获取文本,flutter,text,widget,Flutter,Text,Widget,我来自爪哇,现在用flutter开始了我的第一步 在我的第一个应用程序中,我正在玩弄布局和按钮,我面临着让按钮动作正常工作的困难,可能是因为我来自java 在我的应用程序中,我有以下小部件: Widget _buttonOne = RaisedButton( onPressed: () {}, child: Text('Button One', style: TextStyle(fontSize: 20)), ); final _textContainer =

我来自爪哇,现在用flutter开始了我的第一步

在我的第一个应用程序中,我正在玩弄布局和按钮,我面临着让按钮动作正常工作的困难,可能是因为我来自java

在我的应用程序中,我有以下小部件:

  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正在运行,非常感谢您的回复。。。。非常感谢这个详细的答案,非常有帮助非常感谢这个详细的答案,非常有帮助