This commit is contained in:
DavidMakarov 2024-10-02 22:38:49 +04:00
parent 3cce012c58
commit 22cc6a561b
3 changed files with 102 additions and 39 deletions

View File

@ -12,57 +12,120 @@ class MyApp extends StatelessWidget {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
colorScheme: ColorScheme.fromSeed(seedColor: Colors.lightGreen),
useMaterial3: true,
),
home: const MyHomePage(title: 'Макаров Давид Вячеславович'),
home: const MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.title});
final String title;
const MyHomePage({super.key});
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter++;
});
}
List<_CardData> data = [
_CardData(
textData: "Random picture",
imageUrl: "https://loremflickr.com/150/150"),
_CardData(
textData: "Another picture",
imageUrl: "https://loremflickr.com/150/150?random=12"),
_CardData(
textData: "200x200 picture",
imageUrl: "https://loremflickr.com/200/200"),
_CardData(
textData: "100x150 picture",
imageUrl: "https://loremflickr.com/100/150"),
_CardData(
textData: "300x150 picture",
imageUrl: "https://loremflickr.com/350/150"),
];
@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,
),
],
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: Text(
'Item list',
),
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: const Icon(Icons.add),
),
body: SingleChildScrollView(
child: Column(
children: data.map((d) => _Card.withData(d)).toList(),
),
));
}
}
class _CardData {
final String textData;
final String imageUrl;
const _CardData({required this.textData, required this.imageUrl});
}
class _Card extends StatelessWidget {
String text;
String imageUrl;
_Card({super.key, required this.text, required this.imageUrl});
factory _Card.withData(_CardData d) => _Card(
text: d.textData,
imageUrl: d.imageUrl,
);
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.all(8.0),
child: Container(
margin: EdgeInsets.all(5.0),
padding: EdgeInsets.all(8.0),
decoration: BoxDecoration(
color: Theme.of(context).colorScheme.inversePrimary,
borderRadius: BorderRadius.circular(20)),
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
ClipRRect(
borderRadius: BorderRadius.circular(20),
child: SizedBox(
width: 150,
height: 150,
child: Image.network(
imageUrl == ""
? "https://loremflickr.com/150/150?random=1"
: imageUrl,
fit: BoxFit.cover,
),
),
),
Expanded(
child: Padding(
padding: const EdgeInsets.only(left: 16.0, top: 16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
text,
style: Theme.of(context).textTheme.headlineSmall,
),
Text(
"This is card with picture and text",
style: Theme.of(context).textTheme.labelSmall,
),
],
),
),
)
],
)),
);
}
}

View File

@ -66,10 +66,10 @@ packages:
dependency: "direct dev"
description:
name: flutter_lints
sha256: "3f41d009ba7172d5ff9be5f6e6e6abb4300e263aab8866d2a0842ed2a70f8f0c"
sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1"
url: "https://pub.dev"
source: hosted
version: "4.0.0"
version: "5.0.0"
flutter_test:
dependency: "direct dev"
description: flutter
@ -103,10 +103,10 @@ packages:
dependency: transitive
description:
name: lints
sha256: "976c774dd944a42e83e2467f4cc670daef7eed6295b10b36ae8c85bcbf828235"
sha256: "3315600f3fb3b135be672bf4a178c55f274bebe368325ae18462c89ac1e3b413"
url: "https://pub.dev"
source: hosted
version: "4.0.0"
version: "5.0.0"
matcher:
dependency: transitive
description:

View File

@ -45,7 +45,7 @@ dev_dependencies:
# activated in the `analysis_options.yaml` file located at the root of your
# package. See that file for information about deactivating specific lint
# rules and activating additional ones.
flutter_lints: ^4.0.0
flutter_lints: ^5.0.0
# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec