Как передать функцию через конструктор класса? - PullRequest
0 голосов
/ 27 марта 2020

Я хотел бы передать функцию через конструктор класса. но когда я это называю, ничего не происходит. запись отладки: fun c: {_Closure}

import 'package:flutter/material.dart';

    void main() {
      runApp(Myclass(func: myfunction()));
    }

    class Myclass extends StatelessWidget {

      final Function func;
      Myclass({@required this.func});

      @override
      Widget build(BuildContext context) {
      /* some code here */

      this.func(); // <----- don't call myfunction() ! :( 

      }
    }

    myfunction()
    {
      /* some code here */
    }

Спасибо за помощь

1 Ответ

0 голосов
/ 27 марта 2020

Вы не передаете свою функцию в метод, только ее результат. Проверьте эту строку:

runApp(Myclass(func: myfunction()));

Используя скобки, вы говорите своей программе «выполнить мою функцию, вернуть результат и поместить его в аргументы». просто используйте myfunction без скобок:

 runApp(Myclass(func: myfunction));
...