11import 'package:flutter/material.dart' ;
22
3+ import 'package:flutter_weather/widgets/Weather.dart' ;
4+ import 'package:flutter_weather/widgets/WeatherItem.dart' ;
5+
36void main () => runApp (new MyApp ());
47
58class MyApp extends StatelessWidget {
6- // This widget is the root of your application.
79 @override
810 Widget build (BuildContext context) {
9- return new MaterialApp (
10- title: 'Flutter Demo' ,
11- theme: new 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 press Run > Flutter Hot Reload in IntelliJ). Notice that the
19- // counter didn't reset back to zero; the application is not restarted.
11+ return MaterialApp (
12+ title: 'Flutter Weather App' ,
13+ theme: ThemeData (
2014 primarySwatch: Colors .blue,
2115 ),
22- home: new MyHomePage (title: 'Flutter Demo Home Page' ),
23- );
24- }
25- }
26-
27- class MyHomePage extends StatefulWidget {
28- MyHomePage ({Key key, this .title}) : super (key: key);
29-
30- // This widget is the home page of your application. It is stateful, meaning
31- // that it has a State object (defined below) that contains fields that affect
32- // how it looks.
33-
34- // This class is the configuration for the state. It holds the values (in this
35- // case the title) provided by the parent (in this case the App widget) and
36- // used by the build method of the State. Fields in a Widget subclass are
37- // always marked "final".
38-
39- final String title;
40-
41- @override
42- _MyHomePageState createState () => new _MyHomePageState ();
43- }
44-
45- class _MyHomePageState extends State <MyHomePage > {
46- int _counter = 0 ;
47-
48- void _incrementCounter () {
49- setState (() {
50- // This call to setState tells the Flutter framework that something has
51- // changed in this State, which causes it to rerun the build method below
52- // so that the display can reflect the updated values. If we changed
53- // _counter without calling setState(), then the build method would not be
54- // called again, and so nothing would appear to happen.
55- _counter++ ;
56- });
57- }
58-
59- @override
60- Widget build (BuildContext context) {
61- // This method is rerun every time setState is called, for instance as done
62- // by the _incrementCounter method above.
63- //
64- // The Flutter framework has been optimized to make rerunning build methods
65- // fast, so that you can just rebuild anything that needs updating rather
66- // than having to individually change instances of widgets.
67- return new Scaffold (
68- appBar: new AppBar (
69- // Here we take the value from the MyHomePage object that was created by
70- // the App.build method, and use it to set our appbar title.
71- title: new Text (widget.title),
72- ),
73- body: new Center (
74- // Center is a layout widget. It takes a single child and positions it
75- // in the middle of the parent.
76- child: new Column (
77- // Column is also layout widget. It takes a list of children and
78- // arranges them vertically. By default, it sizes itself to fit its
79- // children horizontally, and tries to be as tall as its parent.
80- //
81- // Invoke "debug paint" (press "p" in the console where you ran
82- // "flutter run", or select "Toggle Debug Paint" from the Flutter tool
83- // window in IntelliJ) to see the wireframe for each widget.
84- //
85- // Column has various properties to control how it sizes itself and
86- // how it positions its children. Here we use mainAxisAlignment to
87- // center the children vertically; the main axis here is the vertical
88- // axis because Columns are vertical (the cross axis would be
89- // horizontal).
90- mainAxisAlignment: MainAxisAlignment .center,
91- children: < Widget > [
92- new Text (
93- 'You have pushed the button this many times:' ,
94- ),
95- new Text (
96- '$_counter ' ,
97- style: Theme .of (context).textTheme.display1,
98- ),
99- ],
16+ home: Scaffold (
17+ backgroundColor: Colors .blueGrey,
18+ appBar: AppBar (
19+ title: Text ('Flutter Weather App' ),
10020 ),
21+ body: Center (
22+ child: Column (
23+ mainAxisSize: MainAxisSize .min,
24+ children: < Widget > [
25+ Expanded (
26+ child: Column (
27+ mainAxisAlignment: MainAxisAlignment .center,
28+ children: < Widget > [
29+ Padding (
30+ padding: const EdgeInsets .all (8.0 ),
31+ child: Weather (),
32+ ),
33+ Padding (
34+ padding: const EdgeInsets .all (8.0 ),
35+ child: IconButton (
36+ icon: new Icon (Icons .refresh),
37+ tooltip: 'Refresh' ,
38+ onPressed: () => null ,
39+ color: Colors .white,
40+ ),
41+ ),
42+ ],
43+ ),
44+ ),
45+ SafeArea (
46+ child: Padding (
47+ padding: const EdgeInsets .all (8.0 ),
48+ child: Container (
49+ height: 200.0 ,
50+ child: ListView .builder (
51+ itemCount: 10 ,
52+ scrollDirection: Axis .horizontal,
53+ itemBuilder: (context, index) => WeatherItem ()
54+ ),
55+ ),
56+ ),
57+ )
58+ ]
59+ )
60+ )
10161 ),
102- floatingActionButton: new FloatingActionButton (
103- onPressed: _incrementCounter,
104- tooltip: 'Increment' ,
105- child: new Icon (Icons .add),
106- ), // This trailing comma makes auto-formatting nicer for build methods.
10762 );
10863 }
109- }
64+ }
0 commit comments