【问题标题】:How To Add Text from the different dart file如何从不同的 dart 文件中添加文本
【发布时间】:2019-07-27 11:22:31
【问题描述】:

我正在尝试使用颤振更改单击按钮时的文本。

我已将小部件拆分为不同的 dart 文件。我想从不同的 dart 文件中添加文本,但出现错误,因为“位置参数必须出现在命名参数之前。同时将值传递给名为 TextOutput 的构造函数。

这个错误是什么意思? Flutter 的初学者,所以对这个错误的解释将是一个很大的帮助。

我正在尝试将值传递给构造函数,但出现此错误。

class TextControlState  extends State<TextControl> {
  String _mainText="Hey Divya Here!";
  void _changeText() {
    setState(() {
     this._mainText = "This changed!"; 
    });
  }
Widget build(BuildContext context) {
    return Center(
    child: Container( 
      margin: EdgeInsets.all(8),
          child: 
          RaisedButton(
            child: 
            Text('Change Text', style: TextStyle(color: Colors.white, fontSize: 18)), 
            onPressed: _changeText,
            ),
            TextOutput(_mainText)

      ),
    );

TextOutput 飞镖文件

import 'package:flutter/material.dart';



class TextOutput extends StatelessWidget {
   final String mainText;
   TextOutput(this.mainText);
  @override
  Widget build(BuildContext context) {
    return Text(mainText);
  }
}

文本的值应在单击按钮时更改。

【问题讨论】:

  • 您正在尝试将TextOutput 小部件添加到Container,但它已经有一个child - RaisedButton。您希望按钮和输出都出现在容器内吗?如果是这样,请将Column 放入容器中,并将其他两个小部件添加到该容器中。就目前而言,这与将第二个小部件移动到它自己的源文件无关。
  • 是的,我希望按钮和输出都出现在容器内,所以在列内我必须将 Raised button 和 TextOutput 添加为子小部件?

标签: flutter


【解决方案1】:

好吧,听起来你实际上想要这样做:

class _TextControlState extends State<TextControl> {
  String _mainText = "Hey Divya Here!";

  void _changeText() {
    setState(() {
      this._mainText = "This changed!";
    });
  }

  @override
  Widget build(BuildContext context) {
    return Center(
      child: Container(
        margin: EdgeInsets.all(8),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            TextOutput(_mainText),
            RaisedButton(
              child: Text('Change Text', style: TextStyle(color: Colors.white, fontSize: 18)),
              onPressed: _changeText,
            ),
          ],
        ),
      ),
    );
  }
}

这现在将凸起的按钮包装在一个允许您添加其他小部件的列中,因此在此示例中,我在上面添加了您的文本,当单击按钮时,文本值现在不会更改按钮文本。

【讨论】:

  • 在这种情况下,您已经删除了 Raised button 文本,此文本将与更改后的文本不同。
  • @divyadave 我已经更新了我的答案,现在应该反映我相信你所追求的解决方案:)
  • 谢谢它的工作。如何在更改的文本顶部添加边距?
  • @divyadave 您可能希望删除 mainAxisAlignment 并在 TextOuput 上方添加 SizedBox(height: 10.0),这将创建一个空框作为边距。
猜你喜欢
  • 2022-01-21
  • 1970-01-01
  • 1970-01-01
  • 2022-08-13
  • 1970-01-01
  • 1970-01-01
  • 2017-08-21
  • 2012-12-10
  • 1970-01-01
相关资源
最近更新 更多