Flutter: передать данные в состояние

Я пытаюсь передать данные в блок, который запускает вызов API, но получаю сообщение об ошибке:

"в инициализаторах можно получить доступ только к статическим членам"

Это возможно? Мой подход совершенно неверен?

Я также попытался переключить postid на статический, но не уверен, как я могу получить доступ к postid в состоянии.

Код:

class ViewPost extends StatefulWidget {
   int postid; // sent from previous screen

}

ViewPost(
  {Key key,
  this.postid     
  })
  : super(key: key);
}

Укажите, где мне нужно получить доступ к postid:

@override
  _ViewPostState createState() => _ViewPostState();
}

class _ViewPostState extends State<ViewPost> {


final int postid; // somehow I'd need to access postid here

  final PostBlog _PostBloc =
  PostBloc(httpClient: http.Client(), postid: postid);
}



  _ViewBlogState() { 
_postBloc.dispatch(Fetch());
}

Сборка:

@override
  Widget build(BuildContext context) {

return Scaffold(
  appBar: AppBar(
    title: Text(widget.name),
    backgroundColor: Colors.black,
    automaticallyImplyLeading: true,

    leading: IconButton(
      icon: Icon(Icons.arrow_back),
      onPressed: () onPressed: ()  => Navigator.pop(context, true),

    ),
  ),

  body: new RefreshIndicator(
    child: BlocProviderTree(
        blocProviders: [
          PostProvider<PostBloc>(bloc: _postBloc)

        ],
        child: BlocBuilder(
          bloc: _postBloc,
          builder: (BuildContext context, PostState state) {
          ....

  }

person EmJeiEn    schedule 29.03.2019    source источник
comment
удалите final int postid; в классе State и используйте widget.postid. Подробности читайте в моем ответе.   -  person Doc    schedule 29.03.2019


Ответы (1)


Пошел по другому маршруту и ​​заработал. Использовал:

_postBloc.dispatch(Fetch(postid: postid));

отправить его на мероприятие.

Затем просто объявите его в самом событии, и после этого он будет доступен в event.postid при вызове api.

person EmJeiEn    schedule 30.03.2019