Skip to content

Commit b329e3b

Browse files
committed
Make main file
1 parent 13e2982 commit b329e3b

File tree

1 file changed

+86
-94
lines changed

1 file changed

+86
-94
lines changed

lib/main.dart

Lines changed: 86 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -1,111 +1,103 @@
11
import 'package:flutter/material.dart';
2+
import 'package:github_following/Pages/FollowingPage.dart';
3+
import 'package:github_following/Providers/UserProvider.dart';
4+
import 'package:provider/provider.dart';
25

3-
void main() => runApp(MyApp());
6+
void main() => runApp(
7+
ChangeNotifierProvider<UserProvider>(
8+
builder: (context) => UserProvider(),
9+
child: MaterialApp(
10+
home: HomePage(),
11+
debugShowCheckedModeBanner: false,
12+
),
13+
)
14+
);
415

5-
class MyApp extends StatelessWidget {
6-
// This widget is the root of your application.
16+
class HomePage extends StatefulWidget {
717
@override
8-
Widget build(BuildContext context) {
9-
return MaterialApp(
10-
title: 'Flutter Demo',
11-
theme: ThemeData(
12-
// This is the theme of your application.
13-
//
14-
// Try running your application with "flutter run". You'll see the
15-
// application has a blue toolbar. Then, without quitting the app, try
16-
// changing the primarySwatch below to Colors.green and then invoke
17-
// "hot reload" (press "r" in the console where you ran "flutter run",
18-
// or simply save your changes to "hot reload" in a Flutter IDE).
19-
// Notice that the counter didn't reset back to zero; the application
20-
// is not restarted.
21-
primarySwatch: Colors.blue,
22-
),
23-
home: MyHomePage(title: 'Flutter Demo Home Page'),
24-
);
25-
}
18+
_StateHomePage createState() => _StateHomePage();
2619
}
2720

28-
class MyHomePage extends StatefulWidget {
29-
MyHomePage({Key key, this.title}) : super(key: key);
30-
31-
// This widget is the home page of your application. It is stateful, meaning
32-
// that it has a State object (defined below) that contains fields that affect
33-
// how it looks.
34-
35-
// This class is the configuration for the state. It holds the values (in this
36-
// case the title) provided by the parent (in this case the App widget) and
37-
// used by the build method of the State. Fields in a Widget subclass are
38-
// always marked "final".
39-
40-
final String title;
21+
class _StateHomePage extends State<HomePage> {
4122

42-
@override
43-
_MyHomePageState createState() => _MyHomePageState();
44-
}
23+
TextEditingController _controller = TextEditingController();
4524

46-
class _MyHomePageState extends State<MyHomePage> {
47-
int _counter = 0;
48-
49-
void _incrementCounter() {
50-
setState(() {
51-
// This call to setState tells the Flutter framework that something has
52-
// changed in this State, which causes it to rerun the build method below
53-
// so that the display can reflect the updated values. If we changed
54-
// _counter without calling setState(), then the build method would not be
55-
// called again, and so nothing would appear to happen.
56-
_counter++;
57-
});
25+
void _getUser() {
26+
if (_controller.text == '') {
27+
Provider.of<UserProvider>(context).setMessage('Please inter your username');
28+
} else {
29+
Provider.of<UserProvider>(context).fetchUser(_controller.text).then((value) {
30+
if (value) {
31+
Navigator.push(context, MaterialPageRoute(builder: (context) => FollowingPage()));
32+
}
33+
});
34+
}
5835
}
5936

6037
@override
6138
Widget build(BuildContext context) {
62-
// This method is rerun every time setState is called, for instance as done
63-
// by the _incrementCounter method above.
64-
//
65-
// The Flutter framework has been optimized to make rerunning build methods
66-
// fast, so that you can just rebuild anything that needs updating rather
67-
// than having to individually change instances of widgets.
6839
return Scaffold(
69-
appBar: AppBar(
70-
// Here we take the value from the MyHomePage object that was created by
71-
// the App.build method, and use it to set our appbar title.
72-
title: Text(widget.title),
73-
),
74-
body: Center(
75-
// Center is a layout widget. It takes a single child and positions it
76-
// in the middle of the parent.
77-
child: Column(
78-
// Column is also a layout widget. It takes a list of children and
79-
// arranges them vertically. By default, it sizes itself to fit its
80-
// children horizontally, and tries to be as tall as its parent.
81-
//
82-
// Invoke "debug painting" (press "p" in the console, choose the
83-
// "Toggle Debug Paint" action from the Flutter Inspector in Android
84-
// Studio, or the "Toggle Debug Paint" command in Visual Studio Code)
85-
// to see the wireframe for each widget.
86-
//
87-
// Column has various properties to control how it sizes itself and
88-
// how it positions its children. Here we use mainAxisAlignment to
89-
// center the children vertically; the main axis here is the vertical
90-
// axis because Columns are vertical (the cross axis would be
91-
// horizontal).
92-
mainAxisAlignment: MainAxisAlignment.center,
93-
children: <Widget>[
94-
Text(
95-
'You have pushed the button this many times:',
96-
),
97-
Text(
98-
'$_counter',
99-
style: Theme.of(context).textTheme.display1,
100-
),
101-
],
40+
body: Container(
41+
color: Colors.black,
42+
child: Padding(
43+
padding: EdgeInsets.all(20),
44+
child: Column(
45+
children: <Widget>[
46+
SizedBox(height: 100,),
47+
Container(
48+
width: 80,
49+
height: 80,
50+
child: CircleAvatar(
51+
backgroundColor: Colors.transparent,
52+
backgroundImage: NetworkImage('https://icon-library.net/images/github-icon-png/github-icon-png-29.jpg'),
53+
54+
),
55+
56+
),
57+
SizedBox(height: 30,),
58+
Text("Github", style: TextStyle(color: Colors.white, fontSize: 40, fontWeight: FontWeight.bold),),
59+
SizedBox(height: 150,),
60+
Container(
61+
padding: EdgeInsets.symmetric(horizontal: 15, vertical: 10),
62+
decoration: BoxDecoration(
63+
borderRadius: BorderRadius.circular(10),
64+
color: Colors.white.withOpacity(.1)
65+
),
66+
child: TextField(
67+
onChanged: (value) {
68+
Provider.of<UserProvider>(context).setMessage(null);
69+
},
70+
controller: _controller,
71+
enabled: !Provider.of<UserProvider>(context).isLoading(),
72+
style: TextStyle(color: Colors.white),
73+
decoration: InputDecoration(
74+
errorText: Provider.of<UserProvider>(context).getMessage(),
75+
border: InputBorder.none,
76+
hintText: "Github username",
77+
hintStyle: TextStyle(color: Colors.grey)
78+
),
79+
),
80+
),
81+
SizedBox(height: 20,),
82+
MaterialButton(
83+
padding: EdgeInsets.all(20),
84+
color: Colors.blue,
85+
shape: RoundedRectangleBorder(
86+
borderRadius: BorderRadius.circular(10)
87+
),
88+
child: Align(
89+
child:
90+
Provider.of<UserProvider>(context).isLoading() ?
91+
CircularProgressIndicator(backgroundColor: Colors.white, strokeWidth: 2,) :
92+
Text('Get Your Following Now', style: TextStyle(color: Colors.white),),
93+
), onPressed: () {
94+
_getUser();
95+
},
96+
)
97+
],
98+
),
10299
),
103100
),
104-
floatingActionButton: FloatingActionButton(
105-
onPressed: _incrementCounter,
106-
tooltip: 'Increment',
107-
child: Icon(Icons.add),
108-
), // This trailing comma makes auto-formatting nicer for build methods.
109101
);
110102
}
111-
}
103+
}

0 commit comments

Comments
 (0)