【发布时间】: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(),
],
),
),
],
),
),
),
);
}
}
【问题讨论】: