相关疑难解决方法(0)

Flutter - setState不更新内部状态窗口小部件

基本上我正在尝试创建一个应用程序,其内容将使用从网站获取信息的异步​​函数进行更新,但是当我尝试设置新状态时,它不会重新加载新内容.如果我调试应用程序,它会显示当前内容是新内容,但在"重建"整个窗口小部件后,它不会显示新信息.

编辑:loadData()方法,基本上读取带有http包的URL,该URL包含一个JSON文件,其内容每5分钟更新一次新消息.例如,带有体育实时记分牌的.json文件,其得分总是在变化,因此内容应始终随新结果而变化.

class mainWidget extends StatefulWidget
{    
  State<StatefulWidget> createState() => new mainWidgetState();
}

class mainWidgetState extends State<mainWidget>
{

  List<Widget> _data;
  Timer timer;

  Widget build(BuildContext context) {
     return new ListView(
              children: _data);
  }

  @override
  void initState() {
    super.initState();
    timer = new Timer.periodic(new Duration(seconds: 2), (Timer timer) async {
      String s = await loadData();
      this.setState(() {
        _data = <Widget> [new childWidget(s)];
      });
      });
  }
}

class childWidget extends StatefulWidget {
  childWidget(String s){
    _title = s;
  }

  Widget _title;

  createState() => new childState(); …
Run Code Online (Sandbox Code Playgroud)

android dart dart-async flutter

15
推荐指数
5
解决办法
2万
查看次数

State.initState() 必须是没有 `async` 关键字的 void 方法

![State.initState() 必须是没有async关键字的 void 方法。我该如何解决这个问题] 1

如何解决这个问题呢

@override
  Future<void> initState() async {
    // TODO: implement initState
    super.initState();
    _current_location();
    BitmapDescriptor.fromAssetImage(
        ImageConfiguration(devicePixelRatio: 2.5),
        'assets/fff.png').then((onValue) {
      pinLocationIcon = onValue;
    });
    //createCustomMarker(context);

   // final Marker marker = Marker(icon: BitmapDescriptor.fromBytes(markerIcon));
    DatabaseReference ref = FirebaseDatabase.instance.reference();
    ref.child('users').once().then((DataSnapshot snapshot) {
      Map<dynamic, dynamic> values = snapshot.value;
      print(values.toString());
      values.forEach((k, v) {
        allMarkers.add(Marker(
          markerId: MarkerId(k),
          draggable: false,
          icon: pinLocationIcon,
          position: LatLng(v["latitude"], v["longitude"]),
          infoWindow: InfoWindow(title: v["name"]),
          onTap: () {
            _onMarkerTapped(v["name"]);
          },
        ),);
      });
    });
  }
Run Code Online (Sandbox Code Playgroud)

dart flutter

4
推荐指数
1
解决办法
5390
查看次数

标签 统计

dart ×2

flutter ×2

android ×1

dart-async ×1