Listview 不知道如何构建列表视图的新手,例如,根据上一个列表中的专业构建医生列表视图?
我有一个医疗专业列表显示在一个列表视图中,我想能够点击一个专业,然后显示一个与该专业的医生列表视图。如果我点击“心脏病专家”向医生展示心脏病专家。我不能让它工作。我有专科班,医生班,医生名单和专科名单。我把我的代码弄得一团糟,我甚至不能把它贴在这里。您能告诉我如何显示“专科列表”并单击某个专科,然后导航并构建与所选专科匹配的“医生列表”吗?非常感谢 以下是课程和列表:Listview 不知道如何构建列表视图的新手,例如,根据上一个列表中的专业构建医生列表视图?,listview,flutter,push,builder,Listview,Flutter,Push,Builder,我有一个医疗专业列表显示在一个列表视图中,我想能够点击一个专业,然后显示一个与该专业的医生列表视图。如果我点击“心脏病专家”向医生展示心脏病专家。我不能让它工作。我有专科班,医生班,医生名单和专科名单。我把我的代码弄得一团糟,我甚至不能把它贴在这里。您能告诉我如何显示“专科列表”并单击某个专科,然后导航并构建与所选专科匹配的“医生列表”吗?非常感谢 以下是课程和列表: class Doctors { String name; String specialty; Doctors({
class Doctors {
String name;
String specialty;
Doctors({
this.name,
this.specialty,
});
}
List<Doctors> dummyDoctors = [
Doctors(
name: "Susan Finn",
specialty: "Surgery",
),
Doctors(
name: "Mike Donovan",
specialty: "Cardiology",
),
Doctors(
name: "Tom Sharp",
specialty: "Dermatology",
),
];
class Specialties{
final String specialty;
Specialties({
this.specialty
});
}
List<Specialties> specialties = [
Specialties(
specialty: 'Surgery',
),
Specialties(
specialty: 'Cardiology',
),
Specialties(
specialty: 'Dermatology',
),
];
班级医生{
字符串名;
弦乐专业;
医生({
这个名字,
这个专业,
});
}
医生名单=[
医生(
姓名:“苏珊·芬恩”,
专长:“外科”,
),
医生(
姓名:“迈克·多诺万”,
专业:“心脏病学”,
),
医生(
姓名:“汤姆·夏普”,
专业:“皮肤科”,
),
];
班级特长{
最终弦乐专业;
特产({
这是我的特色菜
});
}
列出专业=[
特产(
专业:“外科”,
),
特产(
专业:“心脏病学”,
),
特产(
专业:皮肤科,
),
];
这就是我所遇到的所有问题,我需要知道/理解:
import 'package:flutter/material.dart';
import 'package:training2/specialty_modelo.dart';
import 'package:training2/second_screen.dart';
class SpecialtyScreen extends StatelessWidget {
String get specialty => null;
@override
Widget build(BuildContext context) {
return Column(
children: <Widget>[
Container(
height: 300.0,
child: ListView.builder(
scrollDirection: Axis.horizontal,
itemCount: specialties.length,
itemBuilder: (BuildContext context, int index) {
Specialties specialties = specialties[index];
return GestureDetector(
onTap: () => Navigator.push(
context,
MaterialPageRoute(
builder: (_) => SecondRoute(
specialties: specialties)),),
child: Container(
margin: EdgeInsets.all(10.0),
width: 210.0,
child: Stack(
alignment: Alignment.topCenter,
children: <Widget>[
Column(
mainAxisAlignment: MainAxisAlignment.end,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(
specialty,
style: TextStyle(
color: Colors.grey,
),
),
],
),
],
),
),
);
},
),
),
],
);
}
}
导入“包装:颤振/材料.省道”;
进口“包装:培训2/专业/模型dart”;
导入“包:训练2/秒屏幕.省道”;
类SpecialtyScreen扩展了无状态小部件{
字符串get speciality=>null;
@凌驾
小部件构建(构建上下文){
返回列(
儿童:[
容器(
高度:300.0,
子项:ListView.builder(
滚动方向:轴水平,
itemCount:specialties.length,
itemBuilder:(构建上下文,int索引){
专业=专业[索引];
返回手势检测器(
onTap:()=>Navigator.push(
上下文
材料路线(
建筑商:()=>SecondRoute(
专科:专科),),,
子:容器(
保证金:所有边缘套(10.0),
宽度:210.0,
子:堆栈(
对齐:alignment.topCenter,
儿童:[
纵队(
mainAxisAlignment:mainAxisAlignment.end,
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
正文(
专业
样式:TextStyle(
颜色:颜色。灰色,
),
),
],
),
],
),
),
);
},
),
),
],
);
}
}
Zvi Karp在第二个屏幕上提出了这一建议,在这个屏幕上,医生将根据专业显示,但仍然没有运气,无法让它工作
import 'package:flutter/material.dart';
import 'package:training2/specialty_modelo.dart';
class SecondRoute extends StatelessWidget {
//final specialtyDoctorsList allDoctors;
SecondRoute({
this.specialty, Specialties specialties,
});
final String specialty;
get allDoctors => null;
@override
Widget build(BuildContext context) {
List<Doctors> specialtyDoctorsList = allDoctors.where((Doctors doctor) => doctor.specialty == this.specialty);
return Container();
}
}
导入“包装:颤振/材料.省道”;
进口“包装:培训2/专业/模型dart”;
类SecondRoute扩展了无状态小部件{
//最终专科医生名单列出所有医生;
第二条路线({
这个,特长,特长,
});
最终弦乐专业;
获取所有医生=>null;
@凌驾
小部件构建(构建上下文){
List specialtyDoctorsList=allDoctors.where((Doctors-doctor)=>doctor.speciality==this.speciality);
返回容器();
}
}
根据评论,在第一页中调用第二页并将所选专业传递给它,如下所示:
Navigator.push(
context,
MaterialPageRoute(builder: (context) => SecondRoute(specialty: specialty)),
);
然后在第二页中,将专业作为参数:
class SecondRoute extends StatelessWidget {
SecondRoute({
this.specialty,
});
final String specialty;
现在,您可以使用它获得特定的医生:
@override
Widget build(BuildContext context) {
List<Doctors> specialtyDoctorsList = allDoctors.where((Doctors doctor) => doctor.specialty == this.specialty);
return Container();
}
@覆盖
小部件构建(构建上下文){
List specialtyDoctorsList=allDoctors.where((Doctors-doctor)=>doctor.speciality==this.speciality);
返回容器();
}
你在哪里被卡住了?这可能有助于开始我可以来回走动,但我的第二个屏幕显示了所有的医生。好的,太好了,我已经发布了一个答案,希望我能帮上忙!Zvi Karp,谢谢,但由于我无法让它工作,我编辑了我的原始帖子,包括了所有的文件(模型类、第一屏和第二屏),仍然无法让它工作(无法理解:-(非常感谢你的帮助)