【问题标题】:My screen is not updated on pressing Hot restart in Flutter, I have to press Hot reload again在 Flutter 中按热重启时我的屏幕没有更新,我必须再次按热重载
【发布时间】:2021-08-20 22:31:37
【问题描述】:

我正在尝试进行 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');
                      },
                    ),
                    SizedBox(
                      height: 10,
                    ),
                    Container(
                      child: SingleChildScrollView(
                        child: Column(
                          children: cc.cards,
                        ),
                      ),
                    ),
                    SizedBox(
                      height: 10,
                    ),
                    Row(
                      children: [
                        Expanded(child: BlueCard()),
                        SizedBox(width: 10.0),
                        Expanded(child: PurpleCard()),
                      ],
                    ),
                    SizedBox(
                      height: 10,
                    ),
                    // SizedBox(
                    //   height: 10,
                    // ),
                    BottomCard(),
                  ],
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

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

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

    【讨论】:

    • FutureBuilder&lt;List&gt;( future: CardCreator().cards, builder: (BuildContext context, AsyncSnapshot&lt;List&gt; snapshot){ if(snapshot.hasData){ return ListView.builder(itemBuilder: (BuildContext context,int index){ return Container(child: SingleChildScrollView( child: Column( children: CardCreator().cards, ),),);});}},) 这会导致错误:参数类型'List'不能分配给参数类型'Future>?'。 请帮帮我。
    猜你喜欢
    • 1970-01-01
    • 2020-02-23
    • 2021-10-02
    • 1970-01-01
    • 2021-12-26
    • 2020-09-13
    • 2021-03-21
    • 2022-07-31
    相关资源
    最近更新 更多