【问题标题】:How to return value from VoidCallback function如何从 VoidCallback 函数返回值
【发布时间】:2019-12-06 05:18:32
【问题描述】:

我有一个带有按钮的自定义小部件。我想创建 VoidCallback 派系以从中返回数据。

onDayPressed: (DateTime date, List<Event> events){
   // I want to return date time to original class when the user changes the date 
}

我尝试这样做但不起作用

onDayPressed: (DateTime date, List<Event> events) => widget.onDayChanged,

//关于原始类

CustomCalender(onDayChanged: (){print("HI");}),

我正在使用这个颤振包

flutter_calendar_carousel

【问题讨论】:

    标签: flutter dart flutter-dependencies


    【解决方案1】:

    如果您需要将数据从子节点传递给父节点,则必须使用 Function(T),因为 VoidCallback 不支持传递数据。请看下面的代码示例:

    // Try adapting this code to work with your code, the principle should be the same.
    class MinimalExample extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          // Notice the variable being passed in the function.
          body: ReturnValueToParent( myNumber: (int) => print(int),),
        );
      }
    }
    
    // Specify a Function(DateTime) in your case and adapt it to your problem.
    class ReturnValueToParent extends StatelessWidget {
      final Function(int) myNumber;
      const ReturnValueToParent({Key key, this.myNumber}) : super(key: key);
    
      @override
      Widget build(BuildContext context) {
        return Center(
          child: RaisedButton(
            // Remember the parameter
            onPressed: () => myNumber(5),
          ),
        );
      }
    }
    

    【讨论】:

    • 谢谢你的工作。我有一个小问题。 => : super(key: key); 是什么意思,为什么你把`const`关键字放在类名的开头?我是 Flutter 的新手,我尝试学习它。谢谢
    • ": super(key: key);"是对 StatelessWidget 的构造函数的调用。在 Flutter 中,键对于区分动画、列表和各种情况下的小部件很重要。在 Android Studio 中,如果您在编写最终变量后按 alt + enter(option + enter),则会有一个建议会为您自动完成构造函数。 const 关键字在这里有一个很好的解释:stackoverflow.com/questions/21744677/… 希望它有所帮助:-)
    • 明白了,非常感谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-17
    • 2020-03-09
    • 1970-01-01
    • 2020-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多