当我尝试在动画过程中获取http响应时,颤振,导航动画不流畅

时间:2019-01-19 12:46:00

标签: flutter flutter-animation flutter-navigation

也许标题有点混乱,这就是问题所在。

当我导航到新页面时,我将发送一个http请求并显示正在加载的微调器,当我返回http响应时,页面内容将被替换。

但是有时http响应太快,我总是在动画尚未完成时得到响应,因此加载微调器将在动画过程中替换为页面内容。

在替换时,动画会被卡住一点。

我正在尝试在动画制作完成后发送http请求,但是我没有找到解决方法。

有人有解决这个问题的想法吗?

推送到新页面:

Navigator.push(
              context,
              MaterialPageRoute(
                  builder: (BuildContext context) => NewPage(id)),
            );

NewPage小工具:

class _NewPageState extends State<NewPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
  body: StreamBuilder(
    stream: Repository().getItem(widget.id),
    builder: (context, AsyncSnapshot<Model> itemsSnapshot) {
      if (itemsSnapshot.hasError) {
         return ErrorWigets();
      }

     if (itemsSnapshot.data == null) {
         return Spinner();
     }


      return ListView(
        children: <Widget>[
           // page content
        ],
      );
    },
  ),
);
}
}

Http请求:

class Repository {
  Observable<Model> getItem(String id) {
    return Observable.fromFuture(http.get(
        'api_url${id}'))
    .map((response) {
  if (response.statusCode == 200) {
    return Model.fromJson(json.decode(response.body));
  } else {
    throw Exception('request Failed');
  }
});

我当前的方法是使用streambuilder,因此当我尝试导航到新页面时,它将立即发出http请求。

0 个答案:

没有答案