import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Calculator',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const MyHomePage(title: 'Calculator'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.title});
final String title;
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter++;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Expanded(
child: Container(
color: Theme.of(context).primaryColor,
child: Align(
alignment: Alignment.centerRight,
child: Padding(
padding: const EdgeInsets.all(10.0),
child: Text('0',
style: Theme.of(context).textTheme.displayLarge!.copyWith(color: Colors.white),
),
),
),
),
),
Expanded(
child: GridView.count(crossAxisCount: 4,
shrinkWrap: true,
padding: const EdgeInsets.all(0),
children: [
CalculatorButton(backgroundColor: Theme.of(context).primaryColorLight, foregroundColor: Theme.of(context).primaryColorDark, text:'CE',),
CalculatorButton(backgroundColor: Theme.of(context).primaryColorLight, foregroundColor: Theme.of(context).primaryColorDark, text:'C',),
CalculatorButton(backgroundColor: Theme.of(context).primaryColorLight, foregroundColor: Theme.of(context).primaryColorDark, text:'BS',),
CalculatorButton(backgroundColor: Theme.of(context).primaryColorLight, foregroundColor: Theme.of(context).primaryColorDark, text:'/',),
CalculatorButton(backgroundColor: Theme.of(context).primaryColorLight, foregroundColor: Theme.of(context).primaryColorDark, text:'7',),
CalculatorButton(backgroundColor: Theme.of(context).primaryColorLight, foregroundColor: Theme.of(context).primaryColorDark, text:'8',),
CalculatorButton(backgroundColor: Theme.of(context).primaryColorLight, foregroundColor: Theme.of(context).primaryColorDark, text:'9',),
CalculatorButton(backgroundColor: Theme.of(context).primaryColorLight, foregroundColor: Theme.of(context).primaryColorDark, text:'X',),
CalculatorButton(backgroundColor: Theme.of(context).primaryColorLight, foregroundColor: Theme.of(context).primaryColorDark, text:'4',),
CalculatorButton(backgroundColor: Theme.of(context).primaryColorLight, foregroundColor: Theme.of(context).primaryColorDark, text:'5',),
CalculatorButton(backgroundColor: Theme.of(context).primaryColorLight, foregroundColor: Theme.of(context).primaryColorDark, text:'6',),
CalculatorButton(backgroundColor: Theme.of(context).primaryColorLight, foregroundColor: Theme.of(context).primaryColorDark, text:'-',),
CalculatorButton(backgroundColor: Theme.of(context).primaryColorLight, foregroundColor: Theme.of(context).primaryColorDark, text:'1',),
CalculatorButton(backgroundColor: Theme.of(context).primaryColorLight, foregroundColor: Theme.of(context).primaryColorDark, text:'2',),
CalculatorButton(backgroundColor: Theme.of(context).primaryColorLight, foregroundColor: Theme.of(context).primaryColorDark, text:'3',),
CalculatorButton(backgroundColor: Theme.of(context).primaryColorLight, foregroundColor: Theme.of(context).primaryColorDark, text:'+',),
CalculatorButton(backgroundColor: Theme.of(context).primaryColorLight, foregroundColor: Theme.of(context).primaryColorDark, text:'+/-',),
CalculatorButton(backgroundColor: Theme.of(context).primaryColorLight, foregroundColor: Theme.of(context).primaryColorDark, text:'0',),
CalculatorButton(backgroundColor: Theme.of(context).primaryColorLight, foregroundColor: Theme.of(context).primaryColorDark, text:',',),
CalculatorButton(backgroundColor: Theme.of(context).primaryColorLight, foregroundColor: Theme.of(context).primaryColorDark, text:'=',),
],
),
),
],
),
),
);
}
}
class CalculatorButton extends StatelessWidget {
const CalculatorButton(
{super.key,
required this.backgroundColor,
required this.foregroundColor,
required this.text}
);
final Color backgroundColor;
final Color foregroundColor;
final String text;
@override
Widget build(BuildContext context) {
return Container(
color: backgroundColor,
child: Center(
child: Text(
text,
style: Theme.of(context).textTheme.headlineMedium!.copyWith(
color: foregroundColor),
),
),
);
}
}