Готово (еще не сдано)

This commit is contained in:
dyakonovr 2024-09-10 23:06:35 +04:00
parent 79abdf88b7
commit f93387655a
2 changed files with 70 additions and 27 deletions

BIN
cart_example.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

View File

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