Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // https://imgur.com/bQ7isDj
- import 'package:flutter/material.dart';
- void main() => runApp(MyApp());
- class MyApp extends StatelessWidget {
- const MyApp({Key? key}) : super(key: key);
- @override
- Widget build(BuildContext context) {
- Color color = Theme.of(context).primaryColor;
- Widget buttonSection = Row(
- mainAxisAlignment: MainAxisAlignment.spaceEvenly,
- children: [
- _buildButtonColumn(color, Icons.call, "CALL"),
- _buildButtonColumn(color, Icons.near_me, "ROUTE"),
- _buildButtonColumn(color, Icons.share, "SHARE"),
- ],
- );
- return MaterialApp(
- title: "Flutter layout demo",
- home: Scaffold(
- appBar: AppBar(
- title: const Text("Flutter layout demo"),
- ),
- body: ListView(
- children: [
- Image.network(
- "https://raw.githubusercontent.com/flutter/website/master/examples/layout/lakes/step5/images/lake.jpg",
- width: 600,
- height: 240,
- fit: BoxFit.cover,
- ),
- titleSection,
- buttonSection,
- textSection,
- ],
- ),
- ),
- );
- }
- Column _buildButtonColumn(Color color, IconData icon, String label) {
- return Column(
- mainAxisSize: MainAxisSize.min,
- mainAxisAlignment: MainAxisAlignment.center,
- children: [
- Icon(
- icon,
- color: color,
- ),
- Container(
- margin: EdgeInsets.only(top: 8),
- child: Text(
- label,
- style: TextStyle(
- fontSize: 12.0,
- fontWeight: FontWeight.w400,
- color: color,
- ),
- ),
- ),
- ],
- );
- }
- }
- Widget textSection = const Padding(
- padding: EdgeInsets.all(32),
- child: Text(
- 'Lake Oeschinen lies at the foot of the Blüemlisalp in the Bernese '
- 'Alps. Situated 1,578 meters above sea level, it is one of the '
- 'larger Alpine Lakes. A gondola ride from Kandersteg, followed by a '
- 'half-hour walk through pastures and pine forest, leads you to the '
- 'lake, which warms to 20 degrees Celsius in the summer. Activities '
- 'enjoyed here include rowing, and riding the summer toboggan run.',
- softWrap: true,
- ),
- );
- Widget titleSection = Container(
- padding: const EdgeInsets.all(32.0),
- child: Row(
- children: [
- Expanded(
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- Container(
- padding: const EdgeInsets.only(bottom: 8),
- child: const Text(
- "Oeschinen Lake Campground",
- style: TextStyle(
- fontWeight: FontWeight.bold,
- ),
- ),
- ),
- Text(
- "Kandersteg, Switzerland",
- style: TextStyle(
- color: Colors.grey[500],
- ),
- ),
- ],
- ),
- ),
- FavoriteWidget(),
- ],
- ),
- );
- class FavoriteWidget extends StatefulWidget {
- const FavoriteWidget({Key? key}) : super(key: key);
- @override
- _FavoriteWidgetState createState() => _FavoriteWidgetState();
- }
- class _FavoriteWidgetState extends State<FavoriteWidget> {
- bool _isFavorited = true;
- int _favoriteCount = 41;
- @override
- Widget build(BuildContext context) {
- return Row(
- mainAxisSize: MainAxisSize.min,
- children: [
- Container(
- padding: const EdgeInsets.all(0),
- child: IconButton(
- padding: const EdgeInsets.all(0),
- alignment: Alignment.centerRight,
- icon: (_isFavorited
- ? const Icon(Icons.star)
- : const Icon(Icons.star_border)),
- color: Colors.red[500],
- onPressed: _toggleFavorite,
- ),
- ),
- SizedBox(
- width: 18,
- child: SizedBox(
- child: Text("$_favoriteCount"),
- ),
- ),
- ],
- );
- }
- void _toggleFavorite() {
- setState(() {
- if (_isFavorited) {
- _favoriteCount -= 1;
- _isFavorited = false;
- } else {
- _favoriteCount += 1;
- _isFavorited = true;
- }
- });
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement