【问题标题】:Start a function from another Widget从另一个 Widget 启动一个函数
【发布时间】:2020-04-19 16:29:45
【问题描述】:

大家好,我有一个(希望对您来说很简单)问题。如何从另一个小部件启动功能?我有一个 statelessWidget,我想从其中启动一个计时器功能,它位于 statefulWidget 中。如何从 statelessWidget 启动计时器(statefulWidget 中的“是”)?我希望你能理解我的问题,如果没有,请告诉我你需要代码中的哪些部分。提前致谢!

[...]

void main() => runApp(
      MaterialApp(
        home: Workout1(),
        routes: { "/home": (context) => Homescreen(),}
      ),
    );

class Workout1 extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text("Title"),
        ),
        body: BodyConstruction());
  } 
}

class BodyConstruction extends StatefulWidget {
  @override
  _BodyConstructionState createState() =>
      _BodyConstructionState(); //the belongs to a "StatefulWidget"
}

class _BodyConstructionState extends State<BodyConstruction> {
  int _time = 10;

[...]

  void countdown() {
    Timer.periodic(
      Duration(seconds: 1),
      (timer) {
        setState(() {
          _time--; //every second -1
        });



 @override
  Widget build(BuildContext context) {
    return Center(
      child: Column(
        children: <Widget>[
          [...]




            RaisedButton(
              child: Text("Button"),
              onPressed: () {
                countdown(); //when tis button is pressed "countdown" is called
              }),
          Text(_time.toString()),
        ],
      ),
    );
  }
}

这是一些代码。我希望我没有删除任何对你很重要的东西,否则代码会很长。 我希望计时器在此屏幕打开时启动,而不是在按下按钮时启动

【问题讨论】:

  • 将函数引用传递给无状态小部件,然后从那里调用它。
  • @gegobyte 对不起,我是初学者...函数引用是什么意思
  • 你能分享一些代码吗?这将帮助我们为您提供更具体的解决方案。

标签: flutter dart statefulwidget statelesswidget


【解决方案1】:

如果在您的有状态小部件中,您有这样的功能:

void myFunction() {
    // Do something!
}

在您包含无状态小部件的地方,将函数引用传递给它的构造函数。

MyStatelessWidget(myFunction)

在无状态小部件中:

class MyStatelessWidget extends StatelessWidget {
    Function timerFunction;

    MyStatelessWidget(this.timerFunction);
}

现在您可以随时简单地调用该函数,例如单击按钮。

FlatButton(
    child: Text('Start'),
    onPressed: timerFunction,
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-20
    相关资源
    最近更新 更多