Синтаксис для передачи обратного вызова в GestureDetector во флаттере от модели - PullRequest
0 голосов
/ 13 мая 2018

Я пытаюсь выяснить, как передать обратный вызов onTap из одного класса в другой.

Я создал модель, с помощью которой я строю списки, в этой модели есть свойство onTap, и я хотел бы определить, какой обратный вызов вам нужен, а затем получить доступ к касанию из представления.

Модель для удержания обратного вызова

class MasterListsModel{
  final ListRowType rowType;
  final String assetName;
  final String name;
  final Color textColor;
  final Color backgroundColor;
  final void onTap; // <<------ The property that holds the callback

Пример определения списка

List<MasterListsModel> rows(Store<PrimeAppStateModel> store){
    List<MasterListsModel> list = [
      new MasterListsModel(
        ListRowType.headlinePrime,
        name: l10n.d1SearchHeader
      ),
      new MasterListsModel(ListRowType.icon,
        name: l10n.d1SearchMembers,
        textColor: hColors.white,
        assetName: hGraphics.segmentIconMembersWhite,
        backgroundColor: hColors.transparent,
        onTap: someVoidCallBackHere // <<----- The callback added to model
      ),

тогда я хочу вызвать onTap из моего класса построения списка.

return new Container(
      margin: new EdgeInsets.fromLTRB(35.0, 20.0, 0.0, 20.0),
      child: new GestureDetector(
        onTap: masterListModel.onTap, // << ----- Add callback
        child: new Row(
          children: <Widget>[
            new Container(

1 Ответ

0 голосов
/ 13 мая 2018

Используйте тип VoidCallback вместо void для объявления обратного вызова внутри вашей модели.

Вы также можете создать свой собственный тип обратного вызова, используя typedef

typedef void MyCallback({String title});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...