-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathnavigation_passingdata_usingclass
140 lines (108 loc) · 3.43 KB
/
navigation_passingdata_usingclass
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
//file main.dart
import 'package:flutter/material.dart';
import 'firstscreen.dart';
import 'secondscreen.dart';
void main() {
runApp(MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Passing Data',
home: FirstScreen(),
//guna Routing
routes: <String, WidgetBuilder> {
'/screen1': (BuildContext context) => new FirstScreen(),
'/screen2': (BuildContext context) => new SecondScreen(),
//----end define route
},
));
}
//end of file main.dart
//file firstscreen.dart
import 'package:flutter/material.dart';
import 'myobject.dart';
import 'secondscreen.dart';
class FirstScreen extends StatefulWidget {
@override
_FirstScreenState createState() => new _FirstScreenState();
}
class _FirstScreenState extends State<FirstScreen> {
final _tcname = TextEditingController();
final _tcage = TextEditingController();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Screen 1'),
),
body: ListView(
children: <Widget>[
ListTile(
title: TextField(
controller: _tcname,
decoration: InputDecoration(
border: InputBorder.none, hintText: 'Student Name'),
),
),
ListTile(
title: TextField(
controller: _tcage,
decoration: InputDecoration(
border: InputBorder.none, hintText: 'Student Age'),
),
),
ListTile(
title: RaisedButton(
child: Text("Next"),
onPressed: () {
//from parameter
// Navigator.push(context, MaterialPageRoute(builder:(context)
// => new SecondScreen(value: _textController.text)));
// Navigate to second screen with data
//to using Class
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => SecondScreen(
student: Student(_tcname.text, _tcage.text))));
}),
)
],
));
}
}
//end file firstscreen.dart
//file secondscreen.dart
import 'package:flutter/material.dart';
import 'myobject.dart'; //object class
class SecondScreen extends StatefulWidget {
//Create an Object class to receive the Passed Data from _TextFieldController
final Student student;
//This is how it goes to Secondscreen using key value
SecondScreen({Key key, this.student}) : super (key: key);
@override
_SecondScreenState createState() => new _SecondScreenState();
}
class _SecondScreenState extends State<SecondScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Screen 2"),
),
body: Center(
//Display The Object received
child: Text('Student Data \nname: ${widget.student.name} \nage: ${widget.student.age}', style: TextStyle(fontSize: 20.0),),
),
);
}
}
//note: you can delete ${widget.student.name} to ${student.name} if using stateless class
//end of file secondscreen.dart
//file myobject.dart
// Data need to sent second screen
//You can create a class
class Student {
final String name;
final String age;
Student(this.name, this.age);
}
// end of file myobject.dart