diff --git a/dropdown_button/lib/example.dart b/dropdown_button/lib/example.dart new file mode 100644 index 0000000..72e294b --- /dev/null +++ b/dropdown_button/lib/example.dart @@ -0,0 +1,70 @@ +import 'package:flutter/material.dart'; + +// Example: the focused code for this app. +// A DropdownButton that lets the user pick a fruit from a list. +class Example extends StatefulWidget { + const Example({super.key}); + + @override + State createState() => _ExampleState(); +} + +class _ExampleState extends State { + final List _fruits = [ + "Apple", + "Banana", + "Pineapple", + "Mango", + "Grapes" + ]; + + late List> _dropDownMenuItems; + late String _selectedFruit; + + @override + void initState() { + _dropDownMenuItems = buildAndGetDropDownMenuItems(_fruits); + _selectedFruit = _dropDownMenuItems[0].value!; + super.initState(); + } + + List> buildAndGetDropDownMenuItems( + List fruits) { + List> items = []; + for (String fruit in fruits) { + items.add(DropdownMenuItem(value: fruit, child: Text(fruit))); + } + return items; + } + + void changedDropDownItem(String? selectedFruit) { + setState(() { + _selectedFruit = selectedFruit!; + }); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text("DropDown Button Example"), + ), + body: Container( + child: Center( + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text("Please choose a fruit: "), + DropdownButton( + value: _selectedFruit, + items: _dropDownMenuItems, + onChanged: changedDropDownItem, + ) + ], + ), + ), + ), + ); + } +} diff --git a/dropdown_button/lib/main.dart b/dropdown_button/lib/main.dart index 1dd4aac..3a5690f 100644 --- a/dropdown_button/lib/main.dart +++ b/dropdown_button/lib/main.dart @@ -1,68 +1,20 @@ import 'package:flutter/material.dart'; -void main() => runApp(MyApp()); +import 'example.dart'; -class MyApp extends StatefulWidget { - const MyApp({super.key}); - - @override - State createState() { - return MyAppState(); - } +void main() { + runApp(const MyApp()); } -class MyAppState extends State { - final List _fruits = ["Apple", "Banana", "Pineapple", "Mango", "Grapes"]; - - late List> _dropDownMenuItems; - late String _selectedFruit; - - @override - void initState() { - _dropDownMenuItems = buildAndGetDropDownMenuItems(_fruits); - _selectedFruit = _dropDownMenuItems[0].value!; - super.initState(); - } - - List> buildAndGetDropDownMenuItems( - List fruits) { - List> items = []; - for (String fruit in fruits) { - items.add(DropdownMenuItem(value: fruit, child: Text(fruit))); - } - return items; - } - - void changedDropDownItem(String? selectedFruit) { - setState(() { - _selectedFruit = selectedFruit!; - }); - } +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( debugShowCheckedModeBanner: false, - home: Scaffold( - appBar: AppBar( - title: Text("DropDown Button Example"), - ), - body: Container( - child: Center( - child: Column( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Text("Please choose a fruit: "), - DropdownButton( - value: _selectedFruit, - items: _dropDownMenuItems, - onChanged: changedDropDownItem, - ) - ], - )), - ), - ), + title: "DropDown Button Example", + home: const Example(), ); } } diff --git a/simple_material_app/lib/example.dart b/simple_material_app/lib/example.dart new file mode 100644 index 0000000..47fea5e --- /dev/null +++ b/simple_material_app/lib/example.dart @@ -0,0 +1,21 @@ +import 'package:flutter/material.dart'; + +// Example: the focused code for this app. +// Shows a single centered Text widget inside a plain Material app. +class Example extends StatelessWidget { + const Example({super.key}); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text("Simple Material App"), + ), + body: Container( + child: const Center( + child: Text("Hello World!"), + ), + ), + ); + } +} diff --git a/simple_material_app/lib/main.dart b/simple_material_app/lib/main.dart index 2c96a51..f7086a2 100644 --- a/simple_material_app/lib/main.dart +++ b/simple_material_app/lib/main.dart @@ -1,23 +1,19 @@ import 'package:flutter/material.dart'; +import 'example.dart'; + void main() { - runApp(MaterialApp( - // Title + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); + + @override + Widget build(BuildContext context) { + return MaterialApp( title: "Simple Material App", - // Home - home: Scaffold( - // Appbar - appBar: AppBar( - // Title - title: Text("Simple Material App"), - ), - // Body - body: Container( - // Center the content - child: Center( - // Add Text - child: Text("Hello World!"), - ), - ), - ))); -} \ No newline at end of file + home: const Example(), + ); + } +} diff --git a/stateful_widget/lib/example.dart b/stateful_widget/lib/example.dart new file mode 100644 index 0000000..07c7853 --- /dev/null +++ b/stateful_widget/lib/example.dart @@ -0,0 +1,53 @@ +import 'package:flutter/material.dart'; + +// Example: the focused code for this app. +// A StatefulWidget that cycles through a list of strings each time the +// button is pressed. +class Example extends StatefulWidget { + const Example({super.key}); + + @override + State createState() => _ExampleState(); +} + +class _ExampleState extends State { + int counter = 0; + List strings = ['Flutter', 'is', 'cool', "and", "awesome!"]; + String displayedString = "Hello World!"; + + void onPressOfButton() { + setState(() { + displayedString = strings[counter]; + counter = counter < 4 ? counter + 1 : 0; + }); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text("Stateful Widget"), + backgroundColor: Colors.green, + ), + body: Container( + child: Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text(displayedString, style: TextStyle(fontSize: 40.0)), + Padding(padding: EdgeInsets.all(10.0)), + ElevatedButton( + style: ElevatedButton.styleFrom(backgroundColor: Colors.red), + onPressed: onPressOfButton, + child: Text( + "Press me", + style: TextStyle(color: Colors.white), + ), + ) + ], + ), + ), + ), + ); + } +} diff --git a/stateful_widget/lib/main.dart b/stateful_widget/lib/main.dart index 6b9f91d..0c410de 100644 --- a/stateful_widget/lib/main.dart +++ b/stateful_widget/lib/main.dart @@ -1,58 +1,19 @@ import 'package:flutter/material.dart'; +import 'example.dart'; + void main() { - runApp(MaterialApp( - home: MyButton(), - )); + runApp(const MyApp()); } -class MyButton extends StatefulWidget { - const MyButton({super.key}); - - @override - MyButtonState createState() { - return MyButtonState(); - } -} - -class MyButtonState extends State { - int counter = 0; - List strings = ['Flutter', 'is', 'cool', "and", "awesome!"]; - String displayedString = "Hello World!"; - - void onPressOfButton() { - setState(() { - displayedString = strings[counter]; - counter = counter < 4 ? counter + 1 : 0; - }); - } +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar( - title: Text("Stateful Widget"), - backgroundColor: Colors.green, - ), - body: Container( - child: Center( - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Text(displayedString, style: TextStyle(fontSize: 40.0)), - Padding(padding: EdgeInsets.all(10.0)), - ElevatedButton( - style: ElevatedButton.styleFrom(backgroundColor: Colors.red), - onPressed: onPressOfButton, - child: Text( - "Press me", - style: TextStyle(color: Colors.white), - ), - ) - ], - ), - ), - ), + return MaterialApp( + title: "Stateful Widget", + home: const Example(), ); } } diff --git a/using_gradient/lib/example.dart b/using_gradient/lib/example.dart new file mode 100644 index 0000000..1e2d4e9 --- /dev/null +++ b/using_gradient/lib/example.dart @@ -0,0 +1,33 @@ +import 'package:flutter/material.dart'; + +import 'utils.dart' as utils; + +// Example: the focused code for this app. +// A Container whose background uses a custom LinearGradient. +class Example extends StatelessWidget { + const Example({super.key}); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text("Using Gradient"), + ), + body: Container( + // Decoration + decoration: BoxDecoration( + // Add Gradient + gradient: utils.getCustomGradient(), + ), + // Center the content + child: const Center( + // Add Text + child: Text( + "Hello World!", + style: TextStyle(color: Colors.white), + ), + ), + ), + ); + } +} diff --git a/using_gradient/lib/main.dart b/using_gradient/lib/main.dart index 5ee3b74..375e067 100644 --- a/using_gradient/lib/main.dart +++ b/using_gradient/lib/main.dart @@ -1,30 +1,19 @@ import 'package:flutter/material.dart'; -import './utils.dart' as utils; +import 'example.dart'; void main() { - runApp(MaterialApp( - // Title - title: "Using Gradient", - // Home - home: Scaffold( - // Appbar - appBar: AppBar( - // Title - title: Text("Using Gradient"), - ), - // Body - body: Container( - // Center the content - decoration: BoxDecoration( - // Add Gradient - gradient: utils.getCustomGradient()), - // Center the content - child: Center( - // Add Text - child: Text( - "Hello World!", - style: TextStyle(color: Colors.white), - ), - ))))); + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); + + @override + Widget build(BuildContext context) { + return MaterialApp( + title: "Using Gradient", + home: const Example(), + ); + } } diff --git a/using_tabs/lib/example.dart b/using_tabs/lib/example.dart new file mode 100644 index 0000000..b48287a --- /dev/null +++ b/using_tabs/lib/example.dart @@ -0,0 +1,74 @@ +import 'package:flutter/material.dart'; + +import 'tabs/first.dart'; +import 'tabs/second.dart'; +import 'tabs/third.dart'; + +// Example: the focused code for this app. +// A TabController wired to a TabBar (in the AppBar) and a TabBarView +// showing three tabs. +class Example extends StatefulWidget { + const Example({super.key}); + + @override + State createState() => _ExampleState(); +} + +// SingleTickerProviderStateMixin is used for animation +class _ExampleState extends State with SingleTickerProviderStateMixin { + late TabController controller; + + @override + void initState() { + super.initState(); + // Initialize the Tab Controller + controller = TabController(length: 3, vsync: this); + } + + @override + void dispose() { + // Dispose of the Tab Controller + controller.dispose(); + super.dispose(); + } + + TabBar getTabBar() { + return TabBar( + tabs: [ + // set icon to the tab + const Tab(icon: Icon(Icons.favorite)), + const Tab(icon: Icon(Icons.adb)), + const Tab(icon: Icon(Icons.airport_shuttle)), + ], + // setup the controller + controller: controller, + ); + } + + TabBarView getTabBarView(List tabs) { + return TabBarView( + // set the controller + controller: controller, + // Add tabs as widgets + children: tabs, + ); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + // Appbar + appBar: AppBar( + // Title + title: const Text("Using Tabs"), + // Set the background color of the App Bar + backgroundColor: Colors.blue, + // Set the bottom property of the Appbar to include a Tab Bar + bottom: getTabBar(), + ), + // Set the TabBar view as the body of the Scaffold + body: + getTabBarView([const First(), const Second(), const Third()]), + ); + } +} diff --git a/using_tabs/lib/main.dart b/using_tabs/lib/main.dart index 4e834c5..544e26d 100644 --- a/using_tabs/lib/main.dart +++ b/using_tabs/lib/main.dart @@ -1,89 +1,19 @@ import 'package:flutter/material.dart'; -import 'package:using_tabs/tabs/first.dart'; -import 'package:using_tabs/tabs/second.dart'; -import 'package:using_tabs/tabs/third.dart'; + +import 'example.dart'; void main() { - runApp(MaterialApp( - // Title - title: "Using Tabs", - // Home - home: MyHome())); + runApp(const MyApp()); } -class MyHome extends StatefulWidget { - const MyHome({super.key}); +class MyApp extends StatelessWidget { + const MyApp({super.key}); - @override - MyHomeState createState() => MyHomeState(); -} - -// SingleTickerProviderStateMixin is used for animation -class MyHomeState extends State with SingleTickerProviderStateMixin { - /* - *-------------------- Setup Tabs ------------------* - */ - // Create a tab controller -late TabController controller; - - @override - void initState() { - super.initState(); - - // Initialize the Tab Controller - controller = TabController(length: 3, vsync: this); - } - - @override - void dispose() { - // Dispose of the Tab Controller - controller.dispose(); - super.dispose(); - } - - TabBar getTabBar() { - return TabBar( - tabs: [ - Tab( - // set icon to the tab - icon: Icon(Icons.favorite), - ), - Tab( - icon: Icon(Icons.adb), - ), - Tab( - icon: Icon(Icons.airport_shuttle), - ), - ], - // setup the controller - controller: controller, - ); - } - - TabBarView getTabBarView(var tabs) { - return TabBarView( - // Add tabs as widgets - children: tabs, - // set the controller - controller: controller, - ); - } - - /* - *-------------------- Setup the page by setting up tabs in the body ------------------* - */ @override Widget build(BuildContext context) { - return Scaffold( - // Appbar - appBar: AppBar( - // Title - title: Text("Using Tabs"), - // Set the background color of the App Bar - backgroundColor: Colors.blue, - // Set the bottom property of the Appbar to include a Tab Bar - bottom: getTabBar()), - // Set the TabBar view as the body of the Scaffold - body: getTabBarView([First(), Second(), Third()])); + return MaterialApp( + title: "Using Tabs", + home: const Example(), + ); } }