class HorizontalMenu {
String title;
List<VerticalMenu> submenuItems;
HorizontalMenu({
@required this.title,
@required this.submenuItems,
});
}
这是水平滚动菜单的类定义。
水平标题很少。图片电影应用程序。
恐怖电影(水平菜单)
电影很少(垂直菜单)
喜剧电影
几部电影
但是我的垂直菜单不会与示例电影应用程序中的字段相同。
所以我创建了抽象的垂直类
abstract class VerticalMenu {
String title;
String imageLocation;
navigation navigateTo;
VerticalMenu({
@required this.title,
@required this.imageLocation,
@required this.navigateTo,
});
}
每个垂直菜单将转到不同的屏幕。
class FirstVerticalMenu extends VerticalMenu {
String json;
FirstVerticalMenu ({
this.json,
String title,
String imageLocation,
navigation navigateTo,
}) : super(
title: title,
imageLocation: imageLocation,
navigateTo: navigateTo,
);
}
带有垂直菜单的水平菜单列表
List<HorizontalMenu> menuItems = [
HorizontalMenu(
title: 'First column',
submenuItems: <FirstVerticalMenu>[
FirstScreen(
title: 'First Screen',
imageLocation: 'assets/images/',
navigateTo: navigation.FirstScreen,
json: 'data.json',
),
FirstScreen(
title: 'First Screen',
imageLocation: 'assets/images/',
navigateTo: navigation.FirstScreen,
json: 'data2.json',
),
],
),
HorizontalMenu(
title: 'Second column',
submenuItems: <SecondVerticalMenu>[
SecondScreen(
title: 'Second Screen',
imageLocation: 'assets/images/screen2/',
navigateTo: navigation.SecondScreen,
type: 'type_1',
options: []
),
SecondScreen(
title: 'First Screen',
imageLocation: 'assets/images/screen2/',
navigateTo: navigation.SecondScreen,
type: 'type_2',
options: []
),
],
),
FirstVerticalMenu和SecondVerticalMenu几乎没有什么区别。
但是他们使用VerticalMenu的字段
现在,如果使用列表生成器,我将无法读取FirstVerticalMenu或SecondVerticalMenu的字段。
未为类“ VerticalMenu”定义吸气剂“ json”。
我在这里添加了很多编码,以致混淆。所以我没有在这里添加列表生成器代码。
我还没有使用过课程。我在React Native和reactjs中工作。 因此,抽象类概念在开始时就不会造成混淆。
您将如何解决此问题? 具有相似项目的水平菜单和具有非相似项目的垂直菜单。