Exp 6 (A)
Exp 6 (A)
a)
Custom Widgets
Program:
// lib/main.dart
import 'package:flutter/material.dart';
import 'widgets/custom_title.dart';
import 'widgets/custom_button.dart';
import 'widgets/labeled_icon.dart';
void main() {
runApp(MyApp());
@override
return MaterialApp(
home: Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
CustomTitle(text: 'Welcome!'),
SizedBox(height: 20),
LabeledIcon(
icon: Icons.star,
),
SizedBox(height: 20),
CustomButton(
onPressed: () {
print("Button pressed!");
},
),
],
),
),
),
);
Program:
// lib/widgets/custom_button.dart
import 'package:flutter/material.dart';
class CustomButton extends StatelessWidget {
const CustomButton({
Key? key,
required this.label,
required this.onPressed,
}) : super(key: key);
@override
return ElevatedButton(
onPressed: onPressed,
style: ElevatedButton.styleFrom(
backgroundColor: Colors.blueAccent,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12),
),
),
child: Text(
label,
),
);
Program:
// lib/widgets/custom_counter_display.dart
import 'package:flutter/material.dart';
const CustomCounterDisplay({
Key? key,
required this.counter,
}) : super(key: key);
@override
return Text(
'Counter: $counter',
);
Program:
// lib/widgets/custom_icon_text_row.dart
import 'package:flutter/material.dart';
const CustomIconTextRow({
Key? key,
required this.icon,
required this.text,
}) : super(key: key);
@override
return Row(
children: [
SizedBox(width: 8),
Text(
text,
),
],
);
}
}
Program:
// lib/widgets/custom_title.dart
import 'package:flutter/material.dart';
@override
return Text(
text,
style: TextStyle(
fontSize: 28,
fontWeight: FontWeight.bold,
color: Colors.blueAccent,
),
textAlign: TextAlign.center,
);
Program:
// lib/widgets/labeled_icon.dart
import 'package:flutter/material.dart';
const LabeledIcon({
Key? key,
required this.icon,
required this.label,
}) : super(key: key);
@override
return Row(
mainAxisSize: MainAxisSize.min,
children: [
SizedBox(width: 8),
Text(
label,
),
],
);
}
Output: