flutter create my_app | Create new project |
flutter run | Run app |
flutter run -d chrome | Run on Chrome |
flutter run -d ios | Run on iOS |
flutter build apk | Build Android APK |
flutter build ios | Build iOS |
flutter build web | Build web |
flutter pub get | Get packages |
flutter pub add package_name | Add package |
flutter doctor | Check setup |
flutter clean | Clean build files |
flutter test | Run tests |
flutter analyze | Analyze code |
flutter devices | List devices |
Container(
width: 100,
height: 100,
padding: EdgeInsets.all(16),
margin: EdgeInsets.all(8),
decoration: BoxDecoration(
color: Colors.blue,
borderRadius: BorderRadius.circular(8),
),
child: Text('Hello'),
) Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text('Left'),
Text('Right'),
],
) Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('Top'),
Text('Bottom'),
],
) Stack(
children: [
Container(color: Colors.blue),
Positioned(
top: 10,
left: 10,
child: Text('Overlay'),
),
],
) Row(
children: [
Expanded(child: Container(color: Colors.red)),
Expanded(flex: 2, child: Container(color: Colors.blue)),
],
) SizedBox(width: 20, height: 20)
SizedBox.expand() // Fill parent Text(
'Hello World',
style: TextStyle(
fontSize: 24,
fontWeight: FontWeight.bold,
color: Colors.blue,
),
textAlign: TextAlign.center,
maxLines: 2,
overflow: TextOverflow.ellipsis,
) Image.network('https://example.com/image.png')
Image.asset('assets/image.png')
Image.file(File('path/to/file')) Icon(Icons.home, size: 24, color: Colors.blue) ElevatedButton(
onPressed: () {},
child: Text('Click'),
)
TextButton(onPressed: () {}, child: Text('Text'))
IconButton(icon: Icon(Icons.add), onPressed: () {}) TextField(
controller: _controller,
decoration: InputDecoration(
labelText: 'Email',
hintText: 'Enter email',
prefixIcon: Icon(Icons.email),
),
onChanged: (value) {},
onSubmitted: (value) {},
) class CounterWidget extends StatefulWidget {
@override
_CounterWidgetState createState() => _CounterWidgetState();
}
class _CounterWidgetState extends State<CounterWidget> {
int _counter = 0;
void _increment() {
setState(() {
_counter++;
});
}
@override
Widget build(BuildContext context) {
return Column(
children: [
Text('Count: $_counter'),
ElevatedButton(
onPressed: _increment,
child: Text('Increment'),
),
],
);
}
} class CounterProvider extends ChangeNotifier {
int _count = 0;
int get count => _count;
void increment() {
_count++;
notifyListeners();
}
} ChangeNotifierProvider(
create: (context) => CounterProvider(),
child: MyApp(),
) // Watch for changes
final count = context.watch<CounterProvider>().count;
// Read without rebuilding
final provider = context.read<CounterProvider>();
provider.increment(); Consumer<CounterProvider>(
builder: (context, provider, child) {
return Text('Count: ${provider.count}');
},
) ListView(
children: [
ListTile(title: Text('Item 1')),
ListTile(title: Text('Item 2')),
],
) ListView.builder(
itemCount: items.length,
itemBuilder: (context, index) {
return ListTile(
title: Text(items[index]),
);
},
) ListView.separated(
itemCount: items.length,
separatorBuilder: (context, index) => Divider(),
itemBuilder: (context, index) {
return ListTile(title: Text(items[index]));
},
) GridView.builder(
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,
crossAxisSpacing: 10,
mainAxisSpacing: 10,
),
itemCount: items.length,
itemBuilder: (context, index) {
return Card(child: Text(items[index]));
},
) FutureBuilder<String>(
future: fetchData(),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return CircularProgressIndicator();
}
if (snapshot.hasError) {
return Text('Error: ${snapshot.error}');
}
return Text('Data: ${snapshot.data}');
},
) StreamBuilder<int>(
stream: counterStream,
builder: (context, snapshot) {
if (!snapshot.hasData) {
return CircularProgressIndicator();
}
return Text('Count: ${snapshot.data}');
},
) import 'package:http/http.dart' as http;
Future<String> fetchData() async {
final response = await http.get(
Uri.parse('https://api.example.com/data'),
);
if (response.statusCode == 200) {
return response.body;
}
throw Exception('Failed to load');
} final _formKey = GlobalKey<FormState>();
Form(
key: _formKey,
child: Column(
children: [
TextFormField(
validator: (value) {
if (value == null || value.isEmpty) {
return 'Please enter some text';
}
return null;
},
),
ElevatedButton(
onPressed: () {
if (_formKey.currentState!.validate()) {
// Process data
}
},
child: Text('Submit'),
),
],
),
) class _MyFormState extends State<MyForm> {
final _controller = TextEditingController();
@override
void dispose() {
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return TextField(
controller: _controller,
);
}
} class _MyWidgetState extends State<MyWidget> {
@override
void initState() {
super.initState();
// Called once when widget is created
}
@override
void didChangeDependencies() {
super.didChangeDependencies();
// Called when dependencies change
}
@override
void didUpdateWidget(MyWidget oldWidget) {
super.didUpdateWidget(oldWidget);
// Called when parent rebuilds
}
@override
void dispose() {
// Cleanup
super.dispose();
}
@override
Widget build(BuildContext context) {
return Container();
}
}