首页 > 解决方案 > 使用rest API时数据在颤动中消失

问题描述

当我使用未来的构建器从后端获取底部导航栏的第一个选项卡上的数据时,当我更改为第二个选项卡底部导航栏时,它会消失。

为什么会这样?

我该如何解决?

在此处输入图像描述

上面是我第一次加载应用程序并命中 API 时的页面。 在此处输入图像描述

上面是我更改一次底部选项卡并再次返回第三个选项卡时的页面...

每次都会发生这种情况...

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'dart:convert';
import 'package:http/http.dart' as http;
import 'dart:async';




class newExample extends StatefulWidget {
  @override
  newExampleState createState() => newExampleState();
}

class newExampleState extends State<newExample> {

  var userid;


  Future<http.Request> getData() async
  {
    var client = new http.Client();
    final response = await client.get('http://182.0.0.102:5000/user_detail');
    final responseJson = json.decode(response.body);
    dynamic user_id = responseJson['user_id'];


    userid = user_id;
    

    print(responseJson);
    client.close();
    // return responseJson;
  }




  @override
  void initState() {
    super.initState();
    getData();
  }



  @override
  Widget build(BuildContext context) {

    return Scaffold(
      body: Container(
          child: ListView.builder(
            itemCount: userid.length,
            itemBuilder: (BuildContext context, int index){
              return _buildCards(context, index);
            },
          ),
        ),
    );
  }







  Widget _buildCards(BuildContext context, int index){

    return Card(
        child: Padding(
          padding: const EdgeInsets.all(8.0),
          child:
          // Text('hi'),
          Text('${userid[index]}'),
        )
    );
  }
}


标签: pythonapirestflutterflutter-test

解决方案


我认为它正在发生,因为你打电话getData()initState它只会工作一次。尝试像这样调用你的函数:

 @override
  void initState() {
    SchedulerBinding.instance.addPostFrameCallback((_) {
      getData().then((response) {
        if (mounted)
          setState(() {
            data= response?.something;
          });
      });
    });
    super.initState();
  }

阅读 SchedulerBinding: https ://api.flutter.dev/flutter/scheduler/SchedulerBinding/addPostFrameCallback.html


推荐阅读