Introduction
Mobile development is an ever-evolving industry. Flutter and Dart have emerged as a powerful duos for building high-quality cross-platform apps. In this tutorial, we will dive deep into Flutter & Dart and get started on the mobile development journey.
Why Choose Flutter and Dart?
Flutter offers a rich set of pre-designed widgets and the freedom to create custom widgets, while Dart is a powerful, expressive language that’s easy to learn. Flutter’s hot reload helps you quickly and easily experiment, build UIs, add features, and fix bugs.
Setting Up Flutter and Dart
To start with Flutter and Dart, ensure your environment is set up:
Download Flutter SDK from the Flutter website.
Add Flutter to the system path.
Install Dart SDK as well.
Run
flutter doctor
to ensure that everything is set up properly.
Creating Your First Flutter App: Use the command line to create your first app:
flutter create my_first_app
.cd my_first_app
.flutter run
.
Exploring Directory Structure: Understand the basic structure of a Flutter app.
lib/
: Contains the Dart code files.test/
: Contains test files.pubspec.yaml
: Manages dependencies and assets.
Widgets: Building Blocks of Flutter
In Flutter, everything is a widget. There are two types of widgets, Stateless and Stateful.
Stateless Widget Example
dartCopy codeclass HelloWorld extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Center(
child: Text('Hello World!'),
);
}
}
Stateful Widget Example
dartCopy codeclass Counter extends StatefulWidget {
@override
_CounterState createState() => _CounterState();
}
class _CounterState extends State<Counter> {
int count = 0;
void incrementCounter() {
setState(() {
count++;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Counter'),
),
body: Center(
child: Text('Count: $count'),
),
floatingActionButton: FloatingActionButton(
onPressed: incrementCounter,
child: Icon(Icons.add),
),
);
}
}
Navigating Between Pages
Flutter provides navigation and routing to navigate between pages.
dartCopy codeNavigator.push(
context,
MaterialPageRoute(builder: (context) => SecondPage()),
);
Custom Theming
Flutter allows for easy customization of themes.
dartCopy codeMaterialApp(
theme: ThemeData(
primarySwatch: Colors.blue,
brightness: Brightness.light,
),
home: MyHomePage(),
);
Testing
Testing is an essential part of app development. Flutter provides a rich set of testing features.
dartCopy codevoid main() {
test('Counter increments', () {
final counter = Counter();
counter.increment();
expect(counter.value, 1);
});
}
Conclusion
Flutter, with Dart, provides a powerful platform for creating high-quality native interfaces on iOS and Android in record time. This tutorial serves as a stepping stone in your Flutter journey. Keep experimenting, and happy coding!