Compare commits

...

4 Commits
master ... lab3

Author SHA1 Message Date
dyakonovr
6bbfbf2586 сдано 2024-09-11 15:36:09 +04:00
dyakonovr
f1d002f7dc Test 2024-09-10 23:08:58 +04:00
dyakonovr
f93387655a Готово (еще не сдано) 2024-09-10 23:06:35 +04:00
dyakonovr
79abdf88b7 Fix spaces 2024-09-10 20:22:56 +04:00
2 changed files with 73 additions and 28 deletions

BIN
cart_example.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

View File

@ -11,11 +11,12 @@ class MyApp extends StatelessWidget {
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
debugShowCheckedModeBanner: false,
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const MyHomePage(title: 'Дьяконов Руслан ПИбд-33'),
home: const MyHomePage(title: 'Lab 3: Cards'),
);
}
}
@ -30,39 +31,83 @@ class MyHomePage extends StatefulWidget {
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: Text(widget.title),
),
body: Padding(
padding: const EdgeInsets.all(30),
child: ListView.separated(
itemBuilder: (context, index) =>
Card(name: "test $index", price: 11.0),
separatorBuilder: (context, index) => const SizedBox(height: 20),
itemCount: 2,
)));
}
}
void _incrementCounter() {
class Card extends StatefulWidget {
const Card({super.key, required this.name, required this.price});
final String name;
final double price;
@override
State<StatefulWidget> createState() => _CardState();
}
class _CardState extends State<Card> {
bool _isFavourite = true;
void toggleIsFavourite() {
setState(() {
_counter++;
_isFavourite = !_isFavourite;
});
}
@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>[
const Text(
'You have pushed the button this many times:',
),
Text(
'$_counter',
style: Theme.of(context).textTheme.headlineMedium,
),
],
return Stack(
children: [
Container(
padding: const EdgeInsets.only(top: 50, bottom: 15, left: 40, right: 40),
decoration: BoxDecoration(
border: Border.all(color: Colors.black12, width: 2),
borderRadius: BorderRadius.circular(20)),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Center(
child: Image.network(
"https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTtAT11wKgHrJBUYzIBFogucXg0a9fE0fQXDQ&s"),
),
Padding(
padding: EdgeInsets.only(top: 50),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(widget.name, style: TextStyle(fontSize: 17)),
Text("${widget.price} Руб",
style: TextStyle(fontSize: 17, color: Colors.orange))
],
),
)
],
),
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: const Icon(Icons.add),
));
Positioned(
right: 10,
top: 10,
child: IconButton(
icon: Icon(_isFavourite ? Icons.favorite : Icons.favorite_border),
color: Colors.red,
onPressed: toggleIsFavourite,
)
)
],
);
}
}