list - 颤振 - 从列表调用元素到另一个类
问题描述
我正在开发一个将在线的项目,我想将列表的元素“品牌”调用到 AppBar,但我做不到,它运行为空。我将 ListView.builder 用作列表,当我单击列表元素时,它将打开新页面,我想将我从另一个类单击的“品牌”元素调用到 AppBar。下面的代码,请帮助我:
final HAVUZ_DATA = [
HavuzData(
id: 'User1',
imageUrl: 'assets/images/arac1.jpeg',
brand: 'Volkswagen',
model: 'MULTIVAN 2.5 TDI COMFORTLINE',
licensePlate: '34AAA3434',
year: '2011',
city: 'İstanbul',
district: 'Bahçelievler',
authorities: '20040601419',
status: 'Ekspertiz yapıldı, Dosya sorumlusuna gönderildi.',
),
HavuzData(
id: 'User2',
imageUrl: 'assets/images/arac2.jpg',
brand: 'BMW',
model: '420',
licensePlate: '34ABC3434',
year: '2018',
city: 'İstanbul',
district: 'Bakırköy',
authorities: '20040601419',
status: 'Ekspertiz yapıldı, Dosya sorumlusuna gönderildi.',
)
];
class HavuzData {
final String id;
final String imageUrl;
final String brand;
final String model;
final String licensePlate;
final String year;
final String city;
final String district;
final String authorities;
final String status;
const HavuzData({
this.id,
this.imageUrl,
this.brand,
this.model,
this.licensePlate,
this.year,
this.city,
this.district,
this.authorities,
this.status,
});
}
我想从这个班级打电话:
class HavuzDetay extends StatefulWidget {
@override
_HavuzDetayState createState() => _HavuzDetayState();
}
class _HavuzDetayState extends State<HavuzDetay> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(
'Detay ' + HavuzData().brand,
),
),
body: Container(
child: Center(
child: Text('Hello Detay'),
),
),
);
}
}
解决方案
您可以在下面复制粘贴运行完整代码
您可以使用参数推送HAVUZ_DATA[index]
并处理HavuzData
代码片段
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => HavuzDetay(HAVUZ_DATA[index])),
);
...
class HavuzDetay extends StatefulWidget {
final HavuzData havuzData;
HavuzDetay(this.havuzData);
...
appBar: AppBar(
title: Text(
'Detay ' + widget.havuzData.brand,
工作演示
完整代码
import 'package:flutter/material.dart';
final HAVUZ_DATA = [
HavuzData(
id: 'User1',
imageUrl: 'assets/images/arac1.jpeg',
brand: 'Volkswagen',
model: 'MULTIVAN 2.5 TDI COMFORTLINE',
licensePlate: '34AAA3434',
year: '2011',
city: 'İstanbul',
district: 'Bahçelievler',
authorities: '20040601419',
status: 'Ekspertiz yapıldı, Dosya sorumlusuna gönderildi.',
),
HavuzData(
id: 'User2',
imageUrl: 'assets/images/arac2.jpg',
brand: 'BMW',
model: '420',
licensePlate: '34ABC3434',
year: '2018',
city: 'İstanbul',
district: 'Bakırköy',
authorities: '20040601419',
status: 'Ekspertiz yapıldı, Dosya sorumlusuna gönderildi.',
)
];
class HavuzData {
final String id;
final String imageUrl;
final String brand;
final String model;
final String licensePlate;
final String year;
final String city;
final String district;
final String authorities;
final String status;
const HavuzData({
this.id,
this.imageUrl,
this.brand,
this.model,
this.licensePlate,
this.year,
this.city,
this.district,
this.authorities,
this.status,
});
}
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: ListView.builder(
padding: EdgeInsets.only(left: 20, top: 10, right: 20, bottom: 10),
itemCount: HAVUZ_DATA.length,
itemBuilder: (BuildContext ctxt, int index) {
return InkWell(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => HavuzDetay(HAVUZ_DATA[index])),
);
},
child: Card(
child: ListTile(
title: Text(HAVUZ_DATA[index].brand),
subtitle: Text(
HAVUZ_DATA[index].city,
),
),
));
}));
}
}
class HavuzDetay extends StatefulWidget {
final HavuzData havuzData;
HavuzDetay(this.havuzData);
@override
_HavuzDetayState createState() => _HavuzDetayState();
}
class _HavuzDetayState extends State<HavuzDetay> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(
'Detay ' + widget.havuzData.brand,
),
),
body: Container(
child: Center(
child: Text('Hello Detay'),
),
),
);
}
}
推荐阅读
- c# - 使用 ParallelTask 和 ConcurrentStack 使用单声道导致 Android 崩溃
- c# - HeaderStringFormat 覆盖 Binding 之外的样式
- nativescript - 移动操作系统升级后 NativeScript 应用程序损坏
- .net - .NET 4 到 .NET 4.5.2 - PresentationFramework '方法'get_Command'
- bash - 使用带有破折号('-')的变量的whiptail
- python - 如何让 Flask request.form 返回有序的字典数据?
- google-sheets - 如何在谷歌表格单元格中放置一个href
- hlsl - HLSL 中的流控制
- javascript - 如何将结构为数组的字符串转换为类型数组?
- web-scraping - Scrapy 启用项目管道