【发布时间】:2020-12-28 11:33:38
【问题描述】:
我在 dart 中创建了 2 个类,用于颤振,第一个用于培训师的列表和个人资料页面,第二个用于培训。 如果我想在他的个人资料页面中显示教练的培训列表,我该怎么办? 例如,“Ciccio”火车只有一个训练,我只想看到那个训练。
class IstruttoreClasse{
int idIstruttore;
String nome;
List allenamento;
IstruttoreClasse({
this.idIstruttore,this.nome, this.allenamento});
}
List<IstruttoreClasse> istruttori =[
IstruttoreClasse(
idIstruttore: 1,
nome: "Ciccio", ),
IstruttoreClasse(
idIstruttore: 2,
nome: "Valeria",
),
];
class Traing extends IstruttoreClasse{
String nomeTraing;
int idTraing ,numEsercizi, calorie, minuti, numSet ;
Traing({this.calorie,this.idTraing,this.minuti,this.nomeTraing,this.numEsercizi, this.numSet, int idIstruttore, String nome});
}
List<Traing> allenamentoList =[
Traing(
idIstruttore: 1,
nome: "Ciccio",
idTraing: 1,
calorie: 200,
minuti: 45,
numEsercizi: 12,
numSet: 2,
nomeTraing: "Totalbody"
),
Traing(
idIstruttore: 2,
nome: "Valeria",
idTraing: 2,
calorie: 200,
minuti: 45,
numEsercizi: 12,
numSet: 2,
nomeTraing: "Zumba"
),
];
这是个人资料页面代码
import 'package:flutter/material.dart';
import 'package:tesiapp/src/models/classeIstruttore.dart';
import 'package:tesiapp/theme/costanti.dart';
class ProfiloTrainer extends StatelessWidget {
final IstruttoreClasse istruttoreClasse;
const ProfiloTrainer({Key key, this.istruttoreClasse}) : super(key: key);
@override
Widget build(BuildContext context) {
Size size = MediaQuery.of(context).size;
return Scaffold(
backgroundColor: Colors.grey,
body: SafeArea(
child: Stack(
children: <Widget>[
Container(
decoration: BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: [Colors.grey[300], Colors.grey[700]],
),
),
),
Positioned(
top: 0,
left: 0,
right: 0,
child: Column(
children: [
Padding(
padding: const EdgeInsets.all(8.0),
child: Container(
height: size.height * 0.06,
width: size.width * 1,
color: Colors.transparent,
child: Row(
children: [
InkWell(
onTap: () {
Navigator.pop(context);
},
child: Container(
child: Icon(Icons.arrow_back),
),
),
],
),
),
),
Padding(
padding:
const EdgeInsets.only(right: 8.0, left: 8.0, top: 45.0),
child: Container(
height: size.height * 0.3,
width: size.width * 1,
decoration: BoxDecoration(
borderRadius: BorderRadius.only(
topLeft: Radius.circular(30),
topRight: Radius.circular(30),
bottomLeft: Radius.circular(30),
bottomRight: Radius.circular(30),
),
color: Colors.transparent,
),
// color: Color.fromRGBO(255, 255, 255, 0.4)),
child: SingleChildScrollView(
child: Column(
children: <Widget>[
Padding(
padding: const EdgeInsets.all(8.0),
child: Container(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(istruttoreClasse.nome,
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 30)),
),
Padding(
padding: const EdgeInsets.all(8.0),
child: Text("Guarino",
style: TextStyle(fontSize: 30)),
),
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
"lore ipsum bio del trainer chi sono io e cosa faccio dove lavoro"),
)
],
),
),
),
],
),
),
),
),
Padding(
padding:
const EdgeInsets.only(top: 10.0, left: 8.0, right: 8.0),
child: Container(
height: size.height * 0.45,
width: size.width * 1,
decoration: BoxDecoration(
color: Colors.transparent,
// color: Color.fromRGBO(255, 255, 255, 0.4),
borderRadius: BorderRadius.only(
topLeft: Radius.circular(25),
topRight: Radius.circular(25),
bottomLeft: Radius.circular(25),
bottomRight: Radius.circular(25),
),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.all(8.0),
child: Text("Allenemanti",
style: TextStyle(
fontWeight: FontWeight.bold, fontSize: 20)),
),
Expanded(
child: ListView.builder(
itemCount: allenamentoList.length,
itemBuilder: (context, index) =>
CasellaAllenamenti(size: size),
),
),
],
),
),
)
],
),
),
],
),
),
);
}
}
class CasellaAllenamenti extends StatelessWidget {
const CasellaAllenamenti({
Key key,
@required this.size,
}) : super(key: key);
final Size size;
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
children: [
Container(
decoration: BoxDecoration(
color: Colors.transparent,
),
width: size.width * 0.65,
height: size.height * 0.20,
child: Stack(
children: [
Container(
decoration: BoxDecoration(
boxShadow: [kDefaultShadow],
color: Colors.blue,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(25),
topRight: Radius.circular(25),
bottomLeft: Radius.circular(25),
bottomRight: Radius.circular(25),
),
),
),
Padding(
padding: const EdgeInsets.all(8.0),
child: Container(
alignment: Alignment.bottomLeft,
child: Text(
"Totalbody",
style: TextStyle(
color: Colors.white,
fontWeight: FontWeight.bold,
fontSize: 18),
),
),
),
],
),
),
Container(
height: size.height * 0.05,
width: size.width * 0.65,
decoration: BoxDecoration(
color: Colors.transparent,
),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
Text(
"Tempo: m.45",
style: TextStyle(fontWeight: FontWeight.bold, fontSize: 16),
),
Text(
"calorie: 350",
style: TextStyle(fontWeight: FontWeight.bold, fontSize: 16),
)
],
),
),
],
),
);
}
}
【问题讨论】: