在 Flutter 中按 Hot restart 时我的屏幕没有更新,我必须再次按 Hot reload

问题描述

我正在尝试进行 API 调用获取 JSON 对象列表作为回报。使用此 JSON 数据,我正在尝试创建一个自定义小部件。代码运行良好,小部件已制作完成,但我需要在成功构建后手动热重载才能在屏幕上实际呈现这些卡片。

这是我尝试制作自定义小部件的地方。

import 'dart:collection';

import 'package:beyond_static_app/screens/allTheBrains/projectBrain.dart';
import 'package:beyond_static_app/screens/profileCards/cardContent.dart';
import 'package:beyond_static_app/screens/profileCards/reusableCard.dart';
import 'package:Flutter/material.dart';

class CardCreator {
  late List<Widget> cards = [];

  Future<List> getAllCards() async {
    var projects = await ProjectOptions().getProjects();
    int length = projects.length;
    for (int i = 0; i < length; i++) {
      LinkedHashMap project = projects[i];
      int id = project['id'] as int;
      String projectName = project['ProjectName'] as String;
      cards.add(
        ReusableCard(
          colour: Color(0xFF7D00B5),cardChild: CardContent(
            title: projectName,state: 'active',),id: id,);
    }
    print(cards);
    return cards;
  }

  CardCreator() {
    this.getAllCards();
  }
}

这是我尝试显示自定义小部件列表的地方,但每次我想在屏幕上看到它们时,我都必须手动热重新加载它。

import 'package:beyond_static_app/screens/allTheBrains/projectCards.dart';
import 'package:beyond_static_app/screens/dashboardCards/blueCard.dart';
import 'package:beyond_static_app/screens/dashboardCards/purpleCard.dart';
import 'package:beyond_static_app/screens/dashboardCards/userCard.dart';
import 'package:Flutter/cupertino.dart';
import 'package:Flutter/material.dart';
import 'dashboardCards/bottomCard.dart';
import 'package:beyond_static_app/screens/dashboardCards/createNewCard.dart';

class DashBoard extends StatefulWidget {
  @override
  _DashBoardState createState() => _DashBoardState();
}

class _DashBoardState extends State<DashBoard> {
  CardCreator cc = CardCreator();

  @override
  Widget build(BuildContext context) {
    return SafeArea(
      child: Scaffold(
        body: Container(
          padding: EdgeInsets.only(left: 8.0,right: 8.0),child: CustomScrollView(
            slivers: [
              SliverList(
                delegate: SliverChildListDelegate(
                  [
                    SizedBox(
                      height: 10,UserCard(),SizedBox(
                      height: 10,InkWell(
                      child: NewCard(),onTap: () {
                        Navigator.pushNamed(context,'/new_project');
                      },Container(
                      child: SingleChildScrollView(
                        child: Column(
                          children: cc.cards,Row(
                      children: [
                        Expanded(child: BlueCard()),SizedBox(width: 10.0),Expanded(child: PurpleCard()),],// SizedBox(
                    //   height: 10,// ),BottomCard(),);
  }
}

解决方法

发生这种情况是因为您没有等待异步函数返回。要解决此问题,您可以在此部分使用 FutureBuilder

Container(
   child: SingleChildScrollView(
   child: Column(
   children: cc.cards,),

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...