嗨,我正在開發一個顫振應用程式,我有一個我已經制作的串列,我需要讓它當用戶按下其中一個串列時,它會將他帶到一個新頁面,在那里它向他顯示該物件的詳細資訊,我如果有人可以幫助我,不知道該怎么做
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'package:myapp2/SR.dart';
import 'package:myapp2/main.dart';
import 'package:myapp2/second.dart';
import './Classes/demandes.dart';
import './SR_details.dart';
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: DataFromAPI(),
);
}
}
class DataFromAPI extends StatefulWidget {
@override
_DataFromAPIState createState() => _DataFromAPIState();
}
List<Attributes> MyAllData = [];
class _DataFromAPIState extends State<DataFromAPI> {
@override
void initState() {
super.initState();
}
Future<List<Sr>> loadData() async {
try {
var response = await http.get(Uri.parse(
'http://192.168.1.30:9080/maxrest/rest/mbo/sr/?_lid=azizl&_lpwd=max12345m&_format=json'));
if (response.statusCode == 200) {
final jsonBody = json.decode(response.body);
Demandes data = Demandes.fromJson(jsonBody);
final srAttributes = data.srMboSet.sr;
return srAttributes;
}
} catch (e) {
throw Exception(e.toString());
}
throw Exception("");
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: new Scaffold(
appBar: AppBar(
title: Text('Liste des Demandes'),
),
body: FutureBuilder<List<Sr>?>(
future: loadData(),
builder: (context, snapshot) {
if (!snapshot.hasData) {
return CircularProgressIndicator();
} else {
return new ListView.builder(
itemCount: snapshot.data?.length,
itemBuilder: ((_, index) {
return new ListTile(
title: new Card(
child: new ListTile(
title: new Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
new Text(
'Ticket ID : ${snapshot.data![index].attributes.ticketid.content}'),
new Text(
'status : ${snapshot.data![index].attributes.status.content}'),
new Text(
'reportedby : ${snapshot.data![index].attributes.reportedby.content}'),
new Text(
'Status Date : ${snapshot.data![index].attributes.statusdate.content}'),
],
),
),
),
onTap: () => Navigator.of(context).push(
new MaterialPageRoute(
builder: (BuildContext context) =>
new SrDetailsScreen(detailsScreen:),
),
));
}));
}
},
),
),
);
}
}
這是我希望顯示資料的頁面
import 'package:flutter/material.dart';
import './Classes/demandes.dart';
class SrDetailsScreen extends StatelessWidget {
final SrDetailsScreen detailsScreen;
const SrDetailsScreen({Key? key, required this.detailsScreen})
: super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text("Deatil de SR num "),
),
body: Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
const Padding(
padding: EdgeInsets.all(8.0), child: Text('Ticket ID '))
],
),
));
}
}
uj5u.com熱心網友回復:
- 使您的 SrDetailsS??creen 能夠接收 Sr 型別物件
import 'package:flutter/material.dart';
import './Classes/demandes.dart';
class SrDetailsScreen extends StatelessWidget {
final Sr sr;
const SrDetailsScreen({Key? key, required this.sr})
: super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
//this is a mock code just to show you can show value of your sr's field like this
title: const Text(sr.title),
),
body: ...);
}
}
- 然后傳遞您想要顯示其詳細資訊的 sr 物件
Navigator.of(context).push(
new MaterialPageRoute(
builder: (BuildContext context) =>
new SrDetailsScreen(sr: snapshot.data![index]),
),
)
);
uj5u.com熱心網友回復:
您可以使用 GestureTap 或 InkWill 小部件圍繞您的 ListTile 專案,當您點擊串列磁貼時,您可以將專案的 id 發送到帶有頁面引數的下一頁,例如:
Navigator.of(context).push(
new MaterialPageRoute(
builder: (BuildContext context) =>
new SrDetailsScreen(id:itemId),
),
));
在下一頁中,您可以通過 id 訪問您的資料!
uj5u.com熱心網友回復:
您可以使用帶有引數的導航 https://docs.flutter.dev/cookbook/navigation/navigate-with-arguments
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/460460.html
上一篇:如何從特定網址獲取文本?
下一篇:圖形API呼叫問題-POST事件
