Вызвать виджеты флаттера динамически по их имени (со строкой)? - PullRequest
0 голосов
/ 28 мая 2020

У меня есть несколько настраиваемых виджетов, которые принимают один и тот же тип данных в качестве параметра:

class Widget1 extends StatelessWidget {
  Widget1({@required this.data});
  final data;
}

class Widget2 extends StatelessWidget {
  Widget2({@required this.data});
  final data;
}

...

У меня есть еще один виджет, который действует как менеджер виджетов:

class WidgetManager extends StatelessWidget {
  final data;
  final type;

  WidgetManager({this.data, this.type});

  @override
  Widget build(BuildContext context) {
    if (this.type == 'Widget1') {
      return Widget1(data: this.data);
    } elseif (this.type == 'Widget2') {
      return Widget2(data: this.data);
    } 
  }
}

In PHP Я мог бы вызвать виджеты с помощью такой строки:

$widget_name = 'Widget1';
$widget = new $widget_name($data);

Есть ли способ сделать подобное во флаттере? Как return this.type(data: this.data);?

...