• phangkosal.oait99@gmail.com
flutter furniture app ui

Flutter Furniture App UI – App UI Design using Flutter with Free Source Code

This section will show you how to use flutter to design a furniture app UI step by step.

We can use the flutter widget to create app UI in a fast way, as a result above you will see the source code to create furniture app UI.

  1. furniture_home_screen
import 'package:flutter/material.dart';
import 'package:learn_flutter_pro/screen/furniture/furniture_model.dart';

class FurnitureHomeScreen extends StatelessWidget {
  List furnutureList = [
    FurnitureModel(
        title: 'Wingback Chair',
        cost: '1,512',
        description: 'Modern wingback chair with 8 colors choices',
        thumbnail:
            'https://cdn.shopify.com/s/files/1/0028/2571/5830/products/store_item_sku_180011959_1445x.png?v=1652975728'),
    FurnitureModel(
        title: 'Nashville chair',
        cost: '1,512',
        description: 'Modern wingback chair with 8 colors choices',
        thumbnail:
            'https://cdn.shopify.com/s/files/1/0028/2571/5830/products/store_item_sku_180013753_1445x.png?v=1652975973'),
    FurnitureModel(
        title: 'Nashville chair',
        cost: '1,512',
        description: 'Modern wingback chair with 8 colors choices',
        thumbnail:
            'https://cdn.shopify.com/s/files/1/0028/2571/5830/products/store_item_sku_180015062_1445x.png?v=1652975740')
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Stack(
        children: [
          Container(
            width: 100,
            decoration: BoxDecoration(
                color: Colors.blueAccent.withOpacity(0.1)
            ),
          ),
          SingleChildScrollView(
            padding: EdgeInsets.symmetric(horizontal: 20),
            child: Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              children: [
                SizedBox(height: 60,),
                Row(
                  children: [
                    IconButton(onPressed: () {}, icon: Icon(Icons.menu)),
                    Spacer(),
                    IconButton(onPressed: () {}, icon: Icon(Icons.search)),
                    IconButton(
                        onPressed: () {},
                        icon: CircleAvatar(
                          radius: 35,
                          backgroundImage: NetworkImage(
                              'https://d2rd7etdn93tqb.cloudfront.net/wp-content/uploads/2018/07/girl-with-curly-hair-laughing-unsplash-071318.jpg'),
                        )),
                  ],
                ),
                SizedBox(
                  height: 20,
                ),
                Container(
                  height: 200,
                  decoration: BoxDecoration(
                      borderRadius: BorderRadius.circular(20),
                      color: Colors.white,
                      boxShadow: [
                        BoxShadow(
                            color: Colors.grey.withOpacity(0.2),
                            spreadRadius: 0.2,
                            blurRadius: 7,
                            offset: Offset(0, 1))
                      ]),
                  child: Padding(
                      padding: EdgeInsets.all(20),
                      child: Row(
                        children: [
                          Column(
                            crossAxisAlignment: CrossAxisAlignment.start,
                            mainAxisAlignment: MainAxisAlignment.spaceBetween,
                            children: [
                              Container(child: Text("Colection".toUpperCase())),
                              RichText(
                                  text: TextSpan(children: [
                                    TextSpan(
                                        text: "New\n",
                                        style: TextStyle(
                                            fontSize: 28,
                                            color: Colors.blueAccent,
                                            fontWeight: FontWeight.bold)),
                                    TextSpan(
                                        text: "Arrivals",
                                        style: TextStyle(
                                            fontSize: 28,
                                            fontWeight: FontWeight.bold,
                                            color: Colors.black)),
                                  ])),
                              Text(
                                "we provide all modern furniture \ncollection for modern life in 2022 ",
                                style: TextStyle(
                                    fontSize: 10, color: Colors.black54),
                              ),
                              Column(
                                children: [
                                  Text(
                                    "Shop Now".toUpperCase(),
                                    style: TextStyle(
                                      fontWeight: FontWeight.bold,
                                    ),
                                  ),
                                  SizedBox(
                                    height: 2,
                                  ),
                                  Container(
                                    width: 65,
                                    decoration: BoxDecoration(
                                        borderRadius: BorderRadius.circular(10),
                                        border: Border.all(
                                            width: 1.5,
                                            color: Colors.blueAccent)),
                                  )
                                ],
                              )
                            ],
                          ),
                          SizedBox(
                            width: 15,
                          ),
                          Expanded(
                              child: Image.network(
                                  'https://www.godrejinterio.com/imagestore/B2C/56101502SD00944/56101502SD00944_01_803x602.png'))
                        ],
                      )),
                ),
                SizedBox(
                  height: 20,
                ),
                Text(
                  "BEST SELLING",
                  style: TextStyle(fontWeight: FontWeight.bold, fontSize: 18),
                ),
                SizedBox(
                  height: 10,
                ),
                Container(
                  height: 300,
                  child: ListView.separated(
                      scrollDirection: Axis.horizontal,
                      shrinkWrap: true,
                      itemBuilder: (context, index) {
                        return _buildFurnitureCard(furnutureList[index]);
                      },
                      separatorBuilder: (context, index) {
                        return SizedBox(
                          width: 20,
                        );
                      },
                      itemCount: furnutureList.length),
                ),
                SizedBox(
                  height: 25,
                ),
                Text(
                  "TRENDING",
                  style: TextStyle(fontWeight: FontWeight.bold, fontSize: 18),
                ),
                SizedBox(
                  height: 10,
                ),
                Container(
                  height: 200,
                  decoration: BoxDecoration(
                      borderRadius: BorderRadius.circular(20),
                      color: Colors.white,
                      boxShadow: [
                        BoxShadow(
                            color: Colors.grey.withOpacity(0.2),
                            spreadRadius: 0.2,
                            blurRadius: 7,
                            offset: Offset(0, 1))
                      ]),
                  child: Padding(
                      padding: EdgeInsets.all(20),
                      child: Row(
                        children: [
                          Column(
                            crossAxisAlignment: CrossAxisAlignment.start,
                            mainAxisAlignment: MainAxisAlignment.spaceBetween,
                            children: [
                              Container(child: Text("Colection".toUpperCase())),
                              RichText(
                                  text: TextSpan(children: [
                                    TextSpan(
                                        text: "New\n",
                                        style: TextStyle(
                                            fontSize: 28,
                                            color: Colors.blueAccent,
                                            fontWeight: FontWeight.bold)),
                                    TextSpan(
                                        text: "Arrivals",
                                        style: TextStyle(
                                            fontSize: 28,
                                            fontWeight: FontWeight.bold,
                                            color: Colors.black)),
                                  ])),
                              Text(
                                "we provide all modern furniture \ncollection for modern life in 2022 ",
                                style: TextStyle(
                                    fontSize: 10, color: Colors.black54),
                              ),
                              Column(
                                children: [
                                  Text(
                                    "Shop Now".toUpperCase(),
                                    style: TextStyle(
                                      fontWeight: FontWeight.bold,
                                    ),
                                  ),
                                  SizedBox(
                                    height: 2,
                                  ),
                                  Container(
                                    width: 65,
                                    decoration: BoxDecoration(
                                        borderRadius: BorderRadius.circular(10),
                                        border: Border.all(
                                            width: 1.5,
                                            color: Colors.blueAccent)),
                                  )
                                ],
                              )
                            ],
                          ),
                          SizedBox(
                            width: 15,
                          ),
                          Expanded(
                              child: Image.network(
                                  'https://www.godrejinterio.com/imagestore/B2C/56101502SD00944/56101502SD00944_01_803x602.png'))
                        ],
                      )),
                ),
              ],
            ),
          ),

        ],
      ),
      floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
      floatingActionButton: FloatingActionButton(
        backgroundColor: Colors.indigoAccent,
        child: Icon(Icons.bookmark_border),
        onPressed: () {},
      ),
      bottomNavigationBar: BottomAppBar(
        shape: CircularNotchedRectangle(),
        child: Container(
          padding: EdgeInsets.all(10),
          child: Row(
            mainAxisAlignment: MainAxisAlignment.spaceAround,
            children: [
              IconButton(
                  onPressed: () {},
                  icon: Icon(
                    Icons.home,
                    color: Colors.indigoAccent,
                    size: 25,
                  )),
              SizedBox(
                width: 40,
              ),
              IconButton(
                  onPressed: () {},
                  icon: Icon(
                    Icons.shopping_bag_rounded,
                    color: Colors.grey,
                    size: 25,
                  ))
            ],
          ),
        ),
      ),
    );
  }

  _buildFurnitureCard(FurnitureModel furniture) {
    return Container(
        width: 165,
        child: Stack(
          children: [
            Container(
              width: double.infinity,
              height: 290,
              decoration: BoxDecoration(
                  color: Colors.white,
                  borderRadius: BorderRadius.circular(10),
                  boxShadow: [
                    BoxShadow(
                        color: Colors.grey.withOpacity(0.1),
                        blurRadius: 5,
                        spreadRadius: 5,
                        offset: Offset(0, 2))
                  ]),
              padding: EdgeInsets.symmetric(horizontal: 20, vertical: 10),
              child: Column(
                mainAxisAlignment: MainAxisAlignment.spaceAround,
                children: [
                  Image.network(
                    '${furniture.thumbnail}',
                    height: 140,
                  ),
                  Column(
                    crossAxisAlignment: CrossAxisAlignment.start,
                    children: [
                      Text(
                        "${furniture.title}",
                        style: TextStyle(
                            fontSize: 18, fontWeight: FontWeight.bold),
                      ),
                      Text(
                        '${furniture.description}',
                        style: TextStyle(color: Colors.black54, fontSize: 11),
                      ),
                      Text(
                        "\$${furniture.cost}",
                        style: TextStyle(
                            fontSize: 18,
                            fontWeight: FontWeight.bold,
                            color: Colors.blueAccent),
                      ),
                    ],
                  )
                ],
              ),
            ),
            Positioned(
              bottom: 0,
              right: 0,
              child: Container(
                width: 40,
                height: 40,
                decoration: BoxDecoration(
                    borderRadius: BorderRadius.circular(10),
                    color: Colors.blueAccent),
                child: Icon(
                  Icons.bookmark_border,
                  color: Colors.white,
                ),
              ),
            )
          ],
        ));
  }
}

2. furniture_detail_screen

import 'package:flutter/material.dart';
import 'package:learn_flutter_pro/screen/furniture/furniture_model.dart';

class FurnitureDetailScreen extends StatelessWidget {
  List furnitureGallary = [
    'https://cdn.pixabay.com/photo/2019/03/21/03/29/chair-4070161__340.png',
    'https://i.ebayimg.com/images/g/PjIAAOSwOKtieN73/s-l500.png',
    'https://images.thdstatic.com/productImages/973bcdb6-62a3-4231-a1bd-780c278ba269/svn/navy-wetiny-gaming-chairs-sd-w24417915-e1_600.jpg',
    'https://images.thdstatic.com/productImages/1d3a69c0-8936-48e2-b205-9f1148639b00/svn/blue-athmile-gaming-chairs-gz-w24417915-64_300.jpg',
    'https://images.thdstatic.com/productImages/973bcdb6-62a3-4231-a1bd-780c278ba269/svn/navy-wetiny-gaming-chairs-sd-w24417915-e1_600.jpg',
    'https://i.ebayimg.com/images/g/PjIAAOSwOKtieN73/s-l500.png',
  ];

  _buildCircle({required Color circleColor}) {
    return Container(
      width: 20,
      height: 20,
      padding: EdgeInsets.symmetric(horizontal: 20),
      margin: EdgeInsets.only(right: 15),
      decoration: BoxDecoration(
          borderRadius: BorderRadius.circular(15), color: circleColor),
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Stack(
        children: [
          Container(
            width: 100,
            decoration:
                BoxDecoration(color: Colors.blueAccent.withOpacity(0.1)),
          ),
          SingleChildScrollView(
            padding: EdgeInsets.symmetric(horizontal: 20),
            child: Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              children: [
                SizedBox(
                  height: 60,
                ),
                Row(
                  children: [
                    IconButton(
                        onPressed: () {}, icon: Icon(Icons.arrow_back_ios_new)),
                    Spacer(),
                    IconButton(
                        onPressed: () {}, icon: Icon(Icons.bookmark_border)),
                  ],
                ),
                SizedBox(
                  height: 2,
                ),
                Container(
                  width: double.infinity,
                  height: 280,
                  child: Padding(
                      padding: EdgeInsets.all(20),
                      child: Image.network(
                        'https://cdn.shopify.com/s/files/1/0028/2571/5830/products/store_item_sku_180015062_1445x.png?v=1652975740',
                        fit: BoxFit.fitHeight,
                      )),
                ),
                SizedBox(
                  height: 20,
                ),
                Container(
                  height: 80,
                  child: ListView.separated(
                      scrollDirection: Axis.horizontal,
                      itemBuilder: (context, index) {
                        return Container(
                          decoration: BoxDecoration(
                              borderRadius: BorderRadius.circular(20),
                              color: Colors.white),
                          height: 40,
                          width: 80,
                          padding: EdgeInsets.all(10),
                          child: Image.network(furnitureGallary[index]),
                        );
                      },
                      separatorBuilder: (context, index) {
                        return SizedBox(
                          width: 10,
                        );
                      },
                      itemCount: furnitureGallary.length),
                ),
                SizedBox(
                  height: 20,
                ),
                Container(
                  height: 230,
                  child: Column(
                    mainAxisAlignment: MainAxisAlignment.spaceBetween,
                    crossAxisAlignment: CrossAxisAlignment.start,
                    children: [
                      Text(
                        "Nashville Armechair",
                        style:
                            TextStyle(fontWeight: FontWeight.bold, fontSize: 22),
                      ),
                      Text(
                        "\$1895",
                        style: TextStyle(
                            fontWeight: FontWeight.bold,
                            fontSize: 22,
                            color: Colors.indigoAccent),
                      ),
                      Container(
                        child: Row(
                          children: [
                            Column(
                              crossAxisAlignment: CrossAxisAlignment.start,
                              children: [
                                Text(
                                  "Color: ",
                                  style: TextStyle(
                                      fontWeight: FontWeight.bold, fontSize: 18),
                                ),
                                SizedBox(
                                  height: 8,
                                ),
                                Row(
                                  children: [
                                    Container(
                                      width: 34,
                                      height: 34,
                                      decoration: BoxDecoration(
                                          border: Border.all(
                                              width: 2, color: Colors.indigo),
                                          borderRadius:
                                              BorderRadius.circular(20)),
                                      padding: EdgeInsets.all(5),
                                      child: Container(
                                        alignment: Alignment.center,
                                        width: 20,
                                        height: 20,
                                        decoration: BoxDecoration(
                                            borderRadius:
                                                BorderRadius.circular(10),
                                            color: Colors.indigo),
                                      ),
                                    ),
                                    SizedBox(
                                      width: 15,
                                    ),
                                    _buildCircle(circleColor: Colors.red),
                                    _buildCircle(circleColor: Colors.orange),
                                    _buildCircle(circleColor: Colors.green)
                                  ],
                                )
                              ],
                            ),
                            Spacer(),
                            Column(
                              crossAxisAlignment: CrossAxisAlignment.start,
                              children: [
                                Text(
                                  "Quantity: ",
                                  style: TextStyle(
                                      fontWeight: FontWeight.bold, fontSize: 18),
                                ),
                                SizedBox(
                                  height: 8,
                                ),
                                Row(
                                  children: [
                                    Container(
                                      height: 40,
                                      width: 40,
                                      decoration: BoxDecoration(
                                          color:
                                              Colors.blueAccent.withOpacity(0.2),
                                          borderRadius:
                                              BorderRadius.circular(10)),
                                      child: Center(
                                        child: Icon(Icons.remove),
                                      ),
                                    ),
                                    SizedBox(
                                      width: 10,
                                    ),
                                    Text(
                                      "1",
                                      style: TextStyle(
                                          fontSize: 18,
                                          fontWeight: FontWeight.bold),
                                    ),
                                    SizedBox(
                                      width: 10,
                                    ),
                                    Container(
                                      height: 40,
                                      width: 40,
                                      decoration: BoxDecoration(
                                          color:
                                              Colors.blueAccent.withOpacity(0.2),
                                          borderRadius:
                                              BorderRadius.circular(10)),
                                      child: Center(
                                        child: Icon(Icons.add),
                                      ),
                                    ),
                                  ],
                                )
                              ],
                            )
                          ],
                        ),
                      ),
                      Text(
                          "Today modern technology furniture has develop with many benefit and also comfortable. so to get more confortable modern technology furniture has develop with many benefit and also comfortable."),
                    ],
                  ),
                )
              ],
            ),
          ),
        ],
      ),
      bottomSheet: Container(
        height: 80,
        width: double.infinity,
        decoration: BoxDecoration(
          color: Colors.indigo
        ),
        child: Row(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Icon(Icons.shopping_cart_outlined,color: Colors.white,),
            SizedBox(width: 10,),
            Text("ADD TO CARD",style: TextStyle(fontWeight: FontWeight.w600,fontSize: 22,color: Colors.white),),
          ],
        ),
      ),
    );
  }
}

3. Furniture cart screen

import 'package:flutter/material.dart';
import 'package:learn_flutter_pro/screen/furniture/furniture_model.dart';

class FurnitureCartScreen extends StatelessWidget {
  List furnutureList = [
    FurnitureModel(
        title: 'Wingback Chair',
        cost: '1,512',
        description: 'Modern wingback chair with 8 colors choices',
        thumbnail:
            'https://cdn.shopify.com/s/files/1/0028/2571/5830/products/store_item_sku_180011959_1445x.png?v=1652975728'),
    FurnitureModel(
        title: 'Nashville chair',
        cost: '1,512',
        description: 'Modern wingback chair with 8 colors choices',
        thumbnail:
            'https://cdn.shopify.com/s/files/1/0028/2571/5830/products/store_item_sku_180013753_1445x.png?v=1652975973'),
    FurnitureModel(
        title: 'Nashville chair',
        cost: '1,512',
        description: 'Modern wingback chair with 8 colors choices',
        thumbnail:
            'https://cdn.shopify.com/s/files/1/0028/2571/5830/products/store_item_sku_180015062_1445x.png?v=1652975740'),
    FurnitureModel(
        title: 'Modern chair',
        cost: '1,512',
        description: 'Modern wingback chair with 8 colors choices',
        thumbnail:
        'https://cdn.pixabay.com/photo/2019/03/21/03/29/chair-4070161__340.png'),
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.white,
      appBar: AppBar(
        elevation: 0,
        backgroundColor: Colors.white,
        title: Row(
          mainAxisAlignment: MainAxisAlignment.spaceBetween,
          children: [
            IconButton(
                onPressed: () {}, icon: Icon(Icons.arrow_back_ios_new,color: Colors.black)),
            Text(
              "CARD",
              style: TextStyle(fontWeight: FontWeight.bold, fontSize: 18,color: Colors.black),
            ),
            IconButton(onPressed: () {}, icon: Icon(Icons.more_horiz,color: Colors.black)),
          ],
        ),
      ),
      body: SingleChildScrollView(
        padding: EdgeInsets.symmetric(horizontal: 20,vertical: 20),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          mainAxisAlignment: MainAxisAlignment.start,
          children: [
            ListView.separated(
                physics: NeverScrollableScrollPhysics(),
                shrinkWrap: true,
                itemBuilder: (context, index) {
                  return _buildFurnitureCard(furnutureList[index]);
                },
                separatorBuilder: (context, index) {
                  return SizedBox(
                    height: 20,
                  );
                },
                itemCount: furnutureList.length),
          ],
        ),
      ),
      bottomSheet: Container(
        height: 100,
        width: double.infinity,
        decoration: BoxDecoration(color: Colors.blueAccent.withOpacity(0.2)),
        child: Row(
          mainAxisAlignment: MainAxisAlignment.center,
          crossAxisAlignment: CrossAxisAlignment.center,
          children: [
            Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              mainAxisAlignment: MainAxisAlignment.center,
              children: [
                Text("Total Price for 4 Item(s)"),
                Text(
                  "\$99,240",
                  style: TextStyle(
                      color: Colors.indigo,
                      fontSize: 26,
                      fontWeight: FontWeight.w600),
                )
              ],
            ),
            SizedBox(
              width: 25,
            ),
            Container(
              height: 50,
              width: 160,
              decoration: BoxDecoration(
                  borderRadius: BorderRadius.circular(10),
                  color: Colors.indigo),
              child: Center(
                  child: Text(
                "BUY NOW",
                style: TextStyle(
                    fontWeight: FontWeight.w600,
                    fontSize: 20,
                    color: Colors.white),
              )),
            )
          ],
        ),
      ),
    );
  }

  _buildFurnitureCard(FurnitureModel furniture) {
    return Container(
      width: double.infinity,
      height: 120,
      decoration: BoxDecoration(
          color: Colors.white,
          borderRadius: BorderRadius.circular(10),
          boxShadow: [
            BoxShadow(
                color: Colors.grey.withOpacity(0.1),
                blurRadius: 5,
                spreadRadius: 5,
                offset: Offset(0, 2))
          ]),
      padding: EdgeInsets.symmetric(horizontal: 15, vertical: 10),
      child: Row(
        crossAxisAlignment: CrossAxisAlignment.start,
        mainAxisAlignment: MainAxisAlignment.spaceBetween,
        children: [
          Image.network(
            '${furniture.thumbnail}',
            width: 80,
          ),
          Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            mainAxisAlignment: MainAxisAlignment.spaceAround,
            children: [
              Text(
                "${furniture.title}",
                style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
              ),
              Text(
                'Quantity: 1',
                style: TextStyle(color: Colors.black54, fontSize: 14),
              ),
              Text(
                'Color: Reyal Blue',
                style: TextStyle(color: Colors.black54, fontSize: 14),
              ),
              Row(
                crossAxisAlignment: CrossAxisAlignment.start,
                mainAxisAlignment: MainAxisAlignment.start,
                children: [
                  Icon(
                    Icons.delete_forever,
                    size: 18,
                    color: Colors.indigo,
                  ),
                  Text(
                    "REMOVE",
                    style: TextStyle(
                        color: Colors.indigo, fontWeight: FontWeight.bold),
                  )
                ],
              )
            ],
          ),
          Text(
            "\$${furniture.cost}",
            style: TextStyle(color: Colors.indigo,fontWeight: FontWeight.bold,fontSize: 18),
          )
        ],
      ),
    );
  }
}

4. furniture model

class FurnitureModel{
  late String title;
  late String cost;
  late String description;
  late String thumbnail;

  FurnitureModel({required this.title,required this.cost,required this.description,required this.thumbnail});
}

Result:

Spread the love

0 thoughts on “Flutter Furniture App UI – App UI Design using Flutter with Free Source Code

  1. I would like to thnkx for the efforts you have put in writing this blog. I am hoping the same high-grade blog post from you in the upcoming as well. In fact your creative writing abilities has inspired me to get my own blog now. Really the blogging is spreading its wings quickly. Your write up is a good example of it.

Leave a Reply

Your email address will not be published. Required fields are marked *