Commit c5521d1f authored by xuehao's avatar xuehao

路由传值取值

parent ed94d18a
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart'; import 'package:fluttertoast/fluttertoast.dart';
import 'package:netrain_flutter_app/xuehao/car_details.dart';
import 'package:netrain_flutter_app/xuehao/list_page.dart'; import 'package:netrain_flutter_app/xuehao/list_page.dart';
import 'laishanqi/Stateful_page.dart'; import 'laishanqi/Stateful_page.dart';
...@@ -44,8 +45,8 @@ class MyApp extends StatelessWidget { ...@@ -44,8 +45,8 @@ class MyApp extends StatelessWidget {
"listPage":(context) => List_Page(), "listPage":(context) => List_Page(),
"LoginRequestPage":(context) => LoginRequestPage(), "LoginRequestPage":(context) => LoginRequestPage(),
"main": (context) => mainPage(), "main": (context) => mainPage(),
"student":(context) => jssPageDemo() "student":(context) => jssPageDemo(),
"car_details":(context) =>CarDetailsPage()
}, },
), ),
onWillPop: () async { onWillPop: () async {
......
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:netrain_flutter_app/xuehao/Car.dart';
/** /**
* @author xuehao * @author xuehao
* on 2021/7/9 * on 2021/7/9
*/ */
class CarDetailsPage extends StatefulWidget { class CarDetailsPage extends StatefulWidget {
String name, imageUrl;
CarDetailsPage({Key key, @required this.name, @required this.imageUrl})
: super(key: key);
@override @override
_CarDetailsState createState() => _CarDetailsState(name, imageUrl); _CarDetailsState createState() => _CarDetailsState();
} }
class _CarDetailsState extends State<CarDetailsPage> { class _CarDetailsState extends State<CarDetailsPage> {
String name, imageUrl; Car args;
_CarDetailsState(this.name, this.imageUrl);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
args = ModalRoute.of(context).settings.arguments;
return MaterialApp( return MaterialApp(
title: "car_details", title: "car_details",
home: Scaffold( home: Scaffold(
...@@ -37,9 +32,8 @@ class _CarDetailsState extends State<CarDetailsPage> { ...@@ -37,9 +32,8 @@ class _CarDetailsState extends State<CarDetailsPage> {
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
Text(name), Text(args.name),
SizedBox(height: 40), Image.network(args.imageUrl),
Image.network(imageUrl),
], ],
), ),
), ),
......
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_easyrefresh/easy_refresh.dart'; import 'package:flutter_easyrefresh/easy_refresh.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:netrain_flutter_app/xuehao/car_details.dart';
import 'Car.dart'; import 'Car.dart';
class List_Page extends StatefulWidget { class List_Page extends StatefulWidget {
...@@ -11,58 +9,73 @@ class List_Page extends StatefulWidget { ...@@ -11,58 +9,73 @@ class List_Page extends StatefulWidget {
EasyRefreshController _controller = EasyRefreshController(); EasyRefreshController _controller = EasyRefreshController();
class _ListPageState extends State<List_Page> { class _ListPageState extends State<List_Page> with WidgetsBindingObserver {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return new MaterialApp( return new Scaffold(
title: "listPage", appBar: AppBar(
theme: ThemeData( title: Text("ListView"),
primarySwatch: Colors.blue, centerTitle: true,
//leading 返回按键
//GestureDetector 用于事件触发
leading: GestureDetector(
onTap: () {
//当前页面出栈
Navigator.pop(context);
},
//左上角返回的小箭头
child: Icon(Icons.arrow_back_ios),
), ),
home: Scaffold( ),
appBar: AppBar( body: EasyRefresh(
title: Text("ListView"), //下拉刷新头布局、可以自定义
centerTitle: true, header: TaurusHeader(),
//leading 返回按键 //上拉加载尾布局,可以自定义
//GestureDetector 用于事件触发 footer: TaurusFooter(),
leading: GestureDetector( enableControlFinishRefresh: true,
onTap: () { enableControlFinishLoad: true,
//当前页面出栈 //刷新和加载的控制器,用于控制刷新和加载
Navigator.pop(context); controller: _controller,
}, child: ListView.builder(
//左上角返回的小箭头 //返回数据条数
child: Icon(Icons.arrow_back_ios), itemCount: datas.length,
), //itemBuilder 需要返回一个Widget
), itemBuilder: (context,index){
body: EasyRefresh( return _getDatas(index);
//下拉刷新头布局、可以自定义 },
header: TaurusHeader(), ),
//上拉加载尾布局,可以自定义 //刷新动作被触发
footer: TaurusFooter(), onRefresh: () async {
enableControlFinishRefresh: true, refreshData();
enableControlFinishLoad: true, },
//刷新和加载的控制器,用于控制刷新和加载 //加载动作被触发
controller: _controller, onLoad: () async {
child: ListView.builder( loadData();
//返回数据条数 },
itemCount: datas.length, ),
//itemBuilder 需要返回一个Widget );
itemBuilder: _getDatas, }
),
//刷新动作被触发 void dispose() {
onRefresh: () async { super.dispose();
refreshData(); WidgetsBinding.instance.removeObserver(this);
}, print("dispose");
//加载动作被触发 }
onLoad: () async {
loadData(); @override
}, void initState() {
), super.initState();
)); WidgetsBinding.instance.addObserver(this);
print("initState");
}
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
print(state);
} }
///获取item视图 ///获取item视图
Widget _getDatas(BuildContext context, int position) { Widget _getDatas(int position) {
return Container( return Container(
child: GestureDetector( child: GestureDetector(
child: Card( child: Card(
...@@ -85,15 +98,14 @@ class _ListPageState extends State<List_Page> { ...@@ -85,15 +98,14 @@ class _ListPageState extends State<List_Page> {
), ),
onTap: () { onTap: () {
var data = datas[position]; var data = datas[position];
Fluttertoast.showToast(msg: "我点击了${data.name}"); Navigator.pushNamed(context, "car_details", arguments: data);
Navigator.push(context, new MaterialPageRoute(builder: (context) => new CarDetailsPage(name: data.name,imageUrl: data.imageUrl,)));
}, },
)); ));
} }
///刷新数据 ///刷新数据
Future<void> refreshData() async { Future<void> refreshData() async {
await Future.delayed(Duration(seconds: 3), () { await Future.delayed(Duration(seconds: 2), () {
setState(() { setState(() {
for (int i = 0; i < datas.length; i++) { for (int i = 0; i < datas.length; i++) {
datas[i].name = "刷新后的数据$i"; datas[i].name = "刷新后的数据$i";
...@@ -105,7 +117,7 @@ class _ListPageState extends State<List_Page> { ...@@ -105,7 +117,7 @@ class _ListPageState extends State<List_Page> {
///加载数据 ///加载数据
Future<void> loadData() async { Future<void> loadData() async {
await Future.delayed(Duration(seconds: 3), () { await Future.delayed(Duration(seconds: 2), () {
setState(() { setState(() {
for (int i = 0; i < 10; i++) { for (int i = 0; i < 10; i++) {
datas.add(Car( datas.add(Car(
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment