From be65ecf0dc66b5ea7c3f95f6b684bdc5a64c752a Mon Sep 17 00:00:00 2001 From: mo7rex Date: Mon, 29 Aug 2022 00:58:34 +0300 Subject: [PATCH 1/4] almost done --- images/book1.png | Bin 0 -> 64714 bytes images/user.jpg | Bin 0 -> 48428 bytes lib/add_book/addBook_body.dart | 26 +++++++ lib/add_book/book_field.dart | 32 ++++++++ lib/add_book/form.dart | 50 +++++++++++++ lib/add_book/main_add.dart | 50 +++++++++++++ lib/book_page/the_book.dart | 128 ++++++++++++++++++++++++++++++++ lib/cart/cart.dart | 31 ++++++++ lib/cart/cart_body.dart | 34 +++++++++ lib/home_page/book_model.dart | 37 +++++++++ lib/home_page/card_book.dart | 78 +++++++++++++++++++ lib/home_page/main.dart | 112 ++++++++++++++++++++++++++++ lib/home_page/menu_barr.dart | 74 ++++++++++++++++++ lib/home_page/search_field.dart | 40 ++++++++++ lib/main.dart | 20 ----- lib/saved/saved_body.dart | 34 +++++++++ lib/saved/saved_book.dart | 31 ++++++++ pubspec.lock | 7 ++ pubspec.yaml | 6 +- test/widget_test.dart | 2 +- 20 files changed, 768 insertions(+), 24 deletions(-) create mode 100644 images/book1.png create mode 100644 images/user.jpg create mode 100644 lib/add_book/addBook_body.dart create mode 100644 lib/add_book/book_field.dart create mode 100644 lib/add_book/form.dart create mode 100644 lib/add_book/main_add.dart create mode 100644 lib/book_page/the_book.dart create mode 100644 lib/cart/cart.dart create mode 100644 lib/cart/cart_body.dart create mode 100644 lib/home_page/book_model.dart create mode 100644 lib/home_page/card_book.dart create mode 100644 lib/home_page/main.dart create mode 100644 lib/home_page/menu_barr.dart create mode 100644 lib/home_page/search_field.dart delete mode 100644 lib/main.dart create mode 100644 lib/saved/saved_body.dart create mode 100644 lib/saved/saved_book.dart diff --git a/images/book1.png b/images/book1.png new file mode 100644 index 0000000000000000000000000000000000000000..34700a91225a43e3a03b4814bab8e42ab08815ce GIT binary patch literal 64714 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

xO=P>-2;vyoFOv3JA!DZ@H&svt^Y7>? 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 literal 0 HcmV?d00001 diff --git a/images/user.jpg b/images/user.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ae85fccfd9f4d53ceb199ad58c6de29521581bc2 GIT binary patch literal 48428 zcmb@tcT`hd_ca<25J9C#uS&0?bTHHhLKBb{dat1h0s_(mQEDOy0SQ$?C$t0*lp-o6 zASEDRKzdM+pn!lBft%<3z2CUsxOdz?KF3`dImtLDXP=#O)?RDwx#m9qe7*!=HU=4i z08~@}02Sp0IG+Rj1E8a!rK6>xqobv}c#)2tfti8f(j^AAt4x=fIoY_lIN3Njc=$yH zd3c5SI5@7$To)D-mz0v^7L>guD{)IyLQ>-2MyM`cyvRV$aE*cCngkCAkHr76oxcUJ z(9;5F0T-x*0Msm07g(syKLGeBUHz{C{%cg!7byL`NKZL>n;Ag;uTjxZ-v6FS`A^g= zH*R0hp<%V46_R%keSA$Jn~qIb_obyrbFT>H6z=~=Ym`R+(;(&0b(VjR{o4v<^FJ4( zVxeZeaa-qtg^+vb`7Ge_1u9C{F0cT!0OtT{0CnPjyY&D5pnXRA$0^}CZyDOAjNAXC z1l98=ez%%QxYzg~8qjc4X{(#!R-9V#;E(o)RNHsw+g`!CQDYiMl;a(@)Ysl1uP)Z!U0T>0{80 z*mbe$UYR-(Yw4($*6I>|G|5!nAzQ-y_n3jD13GqfvXd9wpOxgDX5t&nNAeZ_zi;mU z`*#2Dd#K!xm_KPXyFSjD8;f~zA?h+rTbo*<+MbKb z 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�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 createState() => _BookFormState(); +} + +class _BookFormState extends State { + @override + Widget build(BuildContext context) { + return Padding( + padding: EdgeInsets.symmetric(horizontal: 10), + child: Expanded( + child: Column( + children: [ + SizedBox(height: 56,), + BookField(txt: 'Book Name',ctrler: bookNameC), + SizedBox(height: 14,), + BookField(txt: 'Author Name',ctrler:authorC), + SizedBox(height: 14,), + BookField(txt: 'Price',ctrler: pricC), + SizedBox(height: 14,), + BookField(txt: 'Image link',ctrler: imgPathC), + SizedBox(height: 14,), + BookField(txt: 'Description',ctrler: descripC,isDes: true,), + SizedBox(height: 14,), + ElevatedButton(onPressed: (){ + Book.add(bookNameC.text,authorC.text,pricC.text,imgPathC.text,descripC.text,false.obs); + }, + style: ElevatedButton.styleFrom( + minimumSize: Size(double.infinity,55), + //padding: EdgeInsets.symmetric(horizontal: 24,vertical: 8), + primary: Colors.black, + elevation: 0, + ), + child: Text('Add',style: TextStyle(color: Colors.white),) + ), + + ], + ), + ), + );; + } +} diff --git a/lib/add_book/main_add.dart b/lib/add_book/main_add.dart new file mode 100644 index 0000000..5122e42 --- /dev/null +++ b/lib/add_book/main_add.dart @@ -0,0 +1,50 @@ +import 'package:flutter/material.dart'; +import 'package:book_store_app/home_page/menu_barr.dart'; +import 'addBook_body.dart'; +class AddBook extends StatefulWidget { + const AddBook({Key? key}) : super(key: key); + @override + State createState() => _Add_bookState(); +} +TextEditingController bookNameC=TextEditingController(); +TextEditingController authorC=TextEditingController(); +TextEditingController pricC=TextEditingController(); +TextEditingController imgPathC=TextEditingController(); +TextEditingController descripC=TextEditingController(); +class _Add_bookState extends State { + @override + Widget build(BuildContext context) { + return MaterialApp( + theme: ThemeData(scaffoldBackgroundColor: Colors.grey.shade100, + primarySwatch: Colors.grey), + home: Scaffold( + appBar: MyAppBar(context), + body: Stack( + children: const [ + AddBook_body(), + MenuBar(c3: Colors.black,flag: 'add',) + ], + ), + ) + ); + } + +} + +AppBar MyAppBar(BuildContext context) { + return AppBar( + backgroundColor: Colors.grey.shade100, + elevation: 0, + leading: TextButton(onPressed: () { + Navigator.pop(context); + }, + child:const Icon(Icons.arrow_back,color: Colors.black,) ,), + actions: const [ + Padding(padding: EdgeInsets.only(right: 20), + child: Icon(Icons.more_vert_rounded,color: Colors.black,size: 28,), + ) + + ], + + ); +} \ No newline at end of file diff --git a/lib/book_page/the_book.dart b/lib/book_page/the_book.dart new file mode 100644 index 0000000..faf0644 --- /dev/null +++ b/lib/book_page/the_book.dart @@ -0,0 +1,128 @@ +import 'package:book_store_app/home_page/book_model.dart'; +import 'package:book_store_app/home_page/card_book.dart'; +import 'package:flutter/material.dart'; +import 'package:book_store_app/add_book/main_add.dart'; +import 'package:get/get.dart'; +class BookPage extends StatefulWidget { + //final String title,auther,price,desc,imgPath; + final Book book; + const BookPage({Key? key,required this.book}) : super(key: key); + @override + State createState() => _BookPageState(); +} + +class _BookPageState extends State { + + @override + Widget build(BuildContext context) { + return MaterialApp( + theme: ThemeData(scaffoldBackgroundColor: Colors.grey.shade100, + primarySwatch: Colors.grey), + home: Scaffold( + appBar: MyAppBar(context), + body: Padding( + padding: EdgeInsets.symmetric(horizontal: 40), + child: Center( + child: Column( + //mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + SizedBox(height: 12,), + ClipRRect( + borderRadius: BorderRadius.only(topRight: Radius.circular(8),bottomRight: Radius.circular(8)), + child: Image(image: NetworkImage(widget.book.imgPath), + width: 210, + ) + ), + const SizedBox(height: 12,), + Text(widget.book.title,style: TextStyle( + fontSize: 24, fontWeight: FontWeight.w600 + ),), + Text(widget.book.author,style: TextStyle( + fontSize: 14,color: Colors.black54 + ),), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Rate(),Rate(),Rate(),Rate(),Rate(), + Text('4.0/5.0') + ], + ), + Padding( + padding: EdgeInsets.all(8.0), + child: Text(widget.book.desc,style: TextStyle( + fontSize: 14,color: Colors.black54,height: 1.6 + ),), + ), + SizedBox(height: 20,), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: const [ + BookDetBtn(txt: 'Preview',ic: Icons.preview), + SizedBox(width: 12,), + BookDetBtn(txt: 'Reviews',ic: Icons.reviews_outlined), + ], + ), + SizedBox(height: 20,), + + + ElevatedButton(onPressed: (){ + if(widget.book.inCart.value==false) + { + widget.book.addToCart(); + } + else + { + widget.book.removeFromCart(); + } + }, + style: ElevatedButton.styleFrom( + minimumSize: Size(double.infinity,70), + padding: EdgeInsets.symmetric(horizontal: 24,vertical: 12), + primary: Colors.black, + elevation: 0, + ), + child: Obx(() { + return Text(widget.book.inCart.value? + ('Remove From the cart'.obs).value + :('Buy Now for \$${widget.book.price}'.obs).value,style: TextStyle(color: Colors.white),); + } + ), + ) + ], + ), + ), + ), + ) + ); + } + +} + +class BookDetBtn extends StatelessWidget { + final String txt; + final IconData ic; + const BookDetBtn({ + Key? key, required this.txt, required this.ic, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return Expanded( + child: ElevatedButton(onPressed: (){}, + style: ElevatedButton.styleFrom( + //padding: EdgeInsets.symmetric(horizontal: 24,vertical: 12), + minimumSize: Size(150, 50), + primary: Colors.white, + elevation: 0, + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + Icon(ic), + Text(txt), + ], + ), + ), + ); + } +} \ No newline at end of file diff --git a/lib/cart/cart.dart b/lib/cart/cart.dart new file mode 100644 index 0000000..013e3e4 --- /dev/null +++ b/lib/cart/cart.dart @@ -0,0 +1,31 @@ + +import 'package:flutter/material.dart'; +import 'package:book_store_app/home_page/menu_barr.dart'; +import 'package:book_store_app/add_book/main_add.dart'; +import 'cart_body.dart'; +class Cart extends StatefulWidget { + const Cart({Key? key}) : super(key: key); + @override + State createState() => _CartState(); +} + +class _CartState extends State { + @override + Widget build(BuildContext context) { + return MaterialApp( + theme: ThemeData(scaffoldBackgroundColor: Colors.grey.shade100, + primarySwatch: Colors.grey), + home: Scaffold( + appBar: MyAppBar(context), + body: Stack( + children: const [ + CartBody(txtHeader: 'Cart'), + MenuBar(c2: Colors.black, flag: 'cart',) + ], + ), + ) + ); + } + +} + diff --git a/lib/cart/cart_body.dart b/lib/cart/cart_body.dart new file mode 100644 index 0000000..629202b --- /dev/null +++ b/lib/cart/cart_body.dart @@ -0,0 +1,34 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import '../home_page/book_model.dart'; +import '../home_page/card_book.dart'; +class CartBody extends StatelessWidget { + final String txtHeader; + + const CartBody({ + Key? key, required this.txtHeader, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return Padding( + padding: EdgeInsets.symmetric(horizontal: 40), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox(height: 28,), + Text(txtHeader, style: TextStyle( + fontSize: 24, fontWeight: FontWeight.w600 + ),), + const SizedBox(height: 36,), + Obx(() { + return Column( + children: Book.books.where((e) => e.inCart.value).map((e) => CardBook(book: e)).toList(), + ); + } + ) + ], + ), + ); + } +} \ No newline at end of file diff --git a/lib/home_page/book_model.dart b/lib/home_page/book_model.dart new file mode 100644 index 0000000..e29517e --- /dev/null +++ b/lib/home_page/book_model.dart @@ -0,0 +1,37 @@ +import 'package:get/get.dart'; +class Book{ + final String title; + final String author; + final String price,imgPath,desc; + final RxBool inCart,isSaved; + //Book(this.title, this.author, this.price, this.imgPath, this.desc, [this.inCart]); + Book(String tit,String auth,String p,String img,String de,[bool? inCart,bool? isSaved]) + :inCart = (inCart??false).obs, + isSaved= (isSaved??false).obs, + title=tit, + author=auth, + price=p, + imgPath=img, + desc=de; + + + static RxList books=[].obs; + static add(String title,String author,String price,String imgPath,String desc,RxBool incart){ + if (incart.value==null) + incart.value=false; + books.add(Book(title,author,price,imgPath,desc)); + } + addToCart(){ + inCart.value=true; + } + removeFromCart(){ + inCart.value=false; + } + makeItSaved(){ + isSaved.value=true; + } + removeFromSaved(){ + isSaved.value=false; + } + +} \ No newline at end of file diff --git a/lib/home_page/card_book.dart b/lib/home_page/card_book.dart new file mode 100644 index 0000000..afe9a9f --- /dev/null +++ b/lib/home_page/card_book.dart @@ -0,0 +1,78 @@ + +import 'package:book_store_app/book_page/the_book.dart'; +import 'package:book_store_app/home_page/book_model.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +class CardBook extends StatefulWidget { + final Book book; + const CardBook({Key? key,required this.book}) : super(key: key); + + @override + State createState() => _CardBookState(); +} + +class _CardBookState extends State { + + @override + Widget build(BuildContext context) { + + return Padding( + padding: EdgeInsets.only(bottom: 24), + child: InkWell( + onTap: (){ + Navigator.push( + context, + MaterialPageRoute(builder: (context) => BookPage(book: widget.book,)), + ); + }, + child: Row( + children: [ + ClipRRect( + borderRadius: BorderRadius.only(topRight: Radius.circular(8),bottomRight: Radius.circular(8)), + child: Image(image: NetworkImage(widget.book.imgPath),width: 72) + ), + SizedBox(width: 28,), + Container( + height: 93, + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(widget.book.title,style: const TextStyle( + fontSize: 16,fontWeight: FontWeight.w600 + ),), + + Text(widget.book.author,style: const TextStyle( + fontSize: 12,fontWeight: FontWeight.w500,color: Colors.grey + ),), + Text('\$${widget.book.price}',style: const TextStyle( + fontSize: 14,fontWeight: FontWeight.w600 + ),), + Row( + children: [ + Rate(), + Rate(),Rate(),Rate(),Rate(), + + ], + ) + ], + ), + ), + Spacer(), + Obx( + () { + return TextButton(onPressed: (){ + (widget.book.isSaved.value==false)? + widget.book.makeItSaved(): + widget.book.removeFromSaved(); + }, child:Icon(widget.book.isSaved.value==false?Icons.bookmark_add_outlined:Icons.bookmark_added)); + } + ), + + ], + ), + ), + ); + } +} +Icon Rate() => Icon(Icons.star,color: Colors.yellow.shade600,); diff --git a/lib/home_page/main.dart b/lib/home_page/main.dart new file mode 100644 index 0000000..cdaa3b7 --- /dev/null +++ b/lib/home_page/main.dart @@ -0,0 +1,112 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:get/get.dart'; +import 'menu_barr.dart'; +import 'card_book.dart'; +import 'book_model.dart'; +import 'search_field.dart'; +void main() { + SystemChrome.setSystemUIOverlayStyle( + const SystemUiOverlayStyle( + statusBarColor: Colors.transparent, + ), + ); + + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({Key? key}) : super(key: key); + static const String _title = 'Flutter Code Sample'; + @override + Widget build(BuildContext context) { + return MaterialApp( + theme: new ThemeData(scaffoldBackgroundColor: Colors.grey.shade100, + primarySwatch: Colors.grey), + home: MyHomePage(), + ); + } + + +} +class MyHomePage extends StatefulWidget { + const MyHomePage({Key? key}) : super(key: key); + @override + State createState() => _MyHomePageState(); + + + +} +class _MyHomePageState extends State { + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: MyAppBarHome(), + + body: Stack( + children: [ + Padding( + padding: EdgeInsets.symmetric(horizontal: 40), + child:Column( + children: [ + SizedBox(height: 28), + Search(), + SizedBox(height: 28), + BookListText(), + SizedBox(height: 28,), + Expanded( + child: Obx( + () { + return ListView( + controller: ScrollController(), + children: Book.books.where((e) => e.title.contains(query)).map((e) => CardBook(book: e,)).toList(), + ); + } + ), + ) + ], + ), + ), + MenuBar(c1: Colors.black,flag: 'home',) + ], + ), + ); + } +} + +AppBar MyAppBarHome() { + return AppBar( + title: Text('Hi, Ali',style: TextStyle(color: Colors.black,fontSize: 14),textAlign: TextAlign.left,), + backgroundColor: Colors.grey.shade100, + elevation: 0, + leading: Padding( + padding: EdgeInsets.all(7), + child: ClipRRect( + borderRadius: BorderRadius.circular(12), + child: Image(image: AssetImage('images/user.jpg'),), + ), + ), + actions: const [ + Padding(padding: EdgeInsets.only(right: 20), + child: Icon(Icons.more_vert_rounded,color: Colors.black,size: 28,), + ) + + ], + + ); +} + +Align BookListText() { + return const Align( + alignment: Alignment.topLeft, + child: Text('Book List',style: TextStyle( + fontSize: 24,fontWeight: FontWeight.w600 + ),), + ); +} + + + + + + diff --git a/lib/home_page/menu_barr.dart b/lib/home_page/menu_barr.dart new file mode 100644 index 0000000..a1cc071 --- /dev/null +++ b/lib/home_page/menu_barr.dart @@ -0,0 +1,74 @@ +import 'package:book_store_app/cart/cart.dart'; +import 'package:book_store_app/home_page/main.dart'; +import 'package:flutter/material.dart'; +import 'package:book_store_app/saved/saved_book.dart'; +import 'package:book_store_app/add_book/main_add.dart'; +class MenuBar extends StatelessWidget { + final Color? c1,c2,c3,c4; + final String? flag; + const MenuBar({ + Key? key, this.c1, this.c2, this.c3, this.flag, this.c4, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return Container( + alignment: Alignment.bottomCenter, + padding: EdgeInsets.only(bottom: 28), + child: Container( + decoration: BoxDecoration( + boxShadow: const [ + BoxShadow( + color: Colors.black12, + spreadRadius: 4, + blurRadius: 14, + offset: Offset(5,7) + ) + ], + borderRadius: BorderRadius.circular(18), + color: Colors.white, + + ), + width: 270, + padding: EdgeInsets.symmetric(vertical: 10), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + TextButton(onPressed: (){ + if (flag!='home') { + Navigator.push( + context, + MaterialPageRoute(builder: (context) => const MyApp()), + ); + } + }, child: Icon(Icons.home_outlined,color: c1,)), + TextButton(onPressed: (){ + if (flag!='cart') { + Navigator.push( + context, + MaterialPageRoute(builder: (context) => const Cart()), + ); + } + }, child: Icon(Icons.shopping_cart_outlined,color: c2)), + TextButton(onPressed: (){ + if(flag!='saved') { + Navigator.push( + context, + MaterialPageRoute(builder: (context) => const SavedBooks()), + ); + } + }, child: Icon(Icons.bookmark_outline_outlined,color: c4)), + TextButton(onPressed: (){ + if(flag!='add') { + Navigator.push( + context, + MaterialPageRoute(builder: (context) => const AddBook()), + ); + } + }, child: Icon(Icons.add_outlined,color: c3)), + ], + ), + ), + ); + } +} diff --git a/lib/home_page/search_field.dart b/lib/home_page/search_field.dart new file mode 100644 index 0000000..41b54f1 --- /dev/null +++ b/lib/home_page/search_field.dart @@ -0,0 +1,40 @@ + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +TextEditingController s=TextEditingController (); +String query=''; +class Search extends StatefulWidget { + const Search({ + Key? key, + }) : super(key: key); + + @override + State createState() => _SearchState(); +} + +class _SearchState extends State { + @override + Widget build(BuildContext context) { + return Container( + padding: EdgeInsets.only(left: 10), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(32), + ), + child: TextField( + controller: s, + onChanged:(x) { + query=x; + }, + decoration: const InputDecoration( + hintStyle: TextStyle(fontSize: 17), + hintText: 'Search', + suffixIcon: Icon(Icons.search), + border: InputBorder.none, + contentPadding: EdgeInsets.symmetric(vertical: 20), + ), + + ), + ); + } +} \ No newline at end of file diff --git a/lib/main.dart b/lib/main.dart deleted file mode 100644 index bcc58f7..0000000 --- a/lib/main.dart +++ /dev/null @@ -1,20 +0,0 @@ -import 'package:flutter/material.dart'; - -void main() { - runApp(const MyApp()); -} - -class MyApp extends StatelessWidget { - const MyApp({Key? key}) : super(key: key); - - @override - Widget build(BuildContext context) { - return const MaterialApp( - home: Scaffold( - body: Center( - child: Text("Book Store App"), - ), - ), - ); - } -} diff --git a/lib/saved/saved_body.dart b/lib/saved/saved_body.dart new file mode 100644 index 0000000..b52143c --- /dev/null +++ b/lib/saved/saved_body.dart @@ -0,0 +1,34 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import '../home_page/book_model.dart'; +import '../home_page/card_book.dart'; +class SavedBody extends StatelessWidget { + final String txtHeader; + + const SavedBody({ + Key? key, required this.txtHeader, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return Padding( + padding: EdgeInsets.symmetric(horizontal: 40), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox(height: 28,), + Text(txtHeader, style: TextStyle( + fontSize: 24, fontWeight: FontWeight.w600 + ),), + const SizedBox(height: 36,), + Obx(() { + return Column( + children: Book.books.where((e) => e.isSaved.value).map((e) => CardBook(book: e)).toList(), + ); + } + ) + ], + ), + ); + } +} \ No newline at end of file diff --git a/lib/saved/saved_book.dart b/lib/saved/saved_book.dart new file mode 100644 index 0000000..a997dd9 --- /dev/null +++ b/lib/saved/saved_book.dart @@ -0,0 +1,31 @@ + +import 'package:book_store_app/saved/saved_body.dart'; +import 'package:flutter/material.dart'; +import 'package:book_store_app/home_page/menu_barr.dart'; +import 'package:book_store_app/add_book/main_add.dart'; +import 'package:book_store_app/cart/cart_body.dart'; +class SavedBooks extends StatefulWidget { + const SavedBooks({Key? key}) : super(key: key); + @override + State createState() => _SavedBooksState(); +} + +class _SavedBooksState extends State { + @override + Widget build(BuildContext context) { + return MaterialApp( + theme: ThemeData(scaffoldBackgroundColor: Colors.grey.shade100, + primarySwatch: Colors.grey), + home: Scaffold( + appBar: MyAppBar(context), + body: Stack( + children: const [ + SavedBody(txtHeader: 'Saved Books'), + MenuBar(c4: Colors.black, flag: 'saved',) + ], + ), + ) + ); + } + +} diff --git a/pubspec.lock b/pubspec.lock index 7bc8bdd..62f34da 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -74,6 +74,13 @@ packages: description: flutter source: sdk version: "0.0.0" + get: + dependency: "direct main" + description: + name: get + url: "https://pub.dartlang.org" + source: hosted + version: "4.6.5" lints: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index cd0f457..a839c0c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -30,10 +30,10 @@ dependencies: flutter: sdk: flutter - # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.2 + get: ^4.6.5 dev_dependencies: flutter_test: @@ -58,8 +58,8 @@ flutter: uses-material-design: true # To add assets to your application, add an assets section, like this: - # assets: - # - images/a_dot_burr.jpeg + assets: + - images/ # - images/a_dot_ham.jpeg # An image asset can refer to one or more resolution-specific "variants", see diff --git a/test/widget_test.dart b/test/widget_test.dart index 7730be6..bf4f540 100644 --- a/test/widget_test.dart +++ b/test/widget_test.dart @@ -8,7 +8,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:book_store_app/main.dart'; +import 'package:book_store_app/home_page/main.dart'; void main() { testWidgets('Counter increments smoke test', (WidgetTester tester) async { From 6954a6af585a3816ce8af4577ceb38aef1b2aa6e Mon Sep 17 00:00:00 2001 From: mo7rex Date: Mon, 29 Aug 2022 19:28:55 +0300 Subject: [PATCH 2/4] add some edits --- lib/add_book/form.dart | 53 +++++++++++++++++------------------ lib/book_page/the_book.dart | 2 +- lib/home_page/book_model.dart | 4 +-- lib/home_page/card_book.dart | 2 +- lib/home_page/main.dart | 2 +- 5 files changed, 31 insertions(+), 32 deletions(-) diff --git a/lib/add_book/form.dart b/lib/add_book/form.dart index 05cd9b2..3a85744 100644 --- a/lib/add_book/form.dart +++ b/lib/add_book/form.dart @@ -16,34 +16,33 @@ class _BookFormState extends State { Widget build(BuildContext context) { return Padding( padding: EdgeInsets.symmetric(horizontal: 10), - child: Expanded( - child: Column( - children: [ - SizedBox(height: 56,), - BookField(txt: 'Book Name',ctrler: bookNameC), - SizedBox(height: 14,), - BookField(txt: 'Author Name',ctrler:authorC), - SizedBox(height: 14,), - BookField(txt: 'Price',ctrler: pricC), - SizedBox(height: 14,), - BookField(txt: 'Image link',ctrler: imgPathC), - SizedBox(height: 14,), - BookField(txt: 'Description',ctrler: descripC,isDes: true,), - SizedBox(height: 14,), - ElevatedButton(onPressed: (){ - Book.add(bookNameC.text,authorC.text,pricC.text,imgPathC.text,descripC.text,false.obs); - }, - style: ElevatedButton.styleFrom( - minimumSize: Size(double.infinity,55), - //padding: EdgeInsets.symmetric(horizontal: 24,vertical: 8), - primary: Colors.black, - elevation: 0, - ), - child: Text('Add',style: TextStyle(color: Colors.white),) - ), + child: ListView( + scrollDirection: Axis.vertical, + children: [ + SizedBox(height: 56,), + BookField(txt: 'Book Name',ctrler: bookNameC), + SizedBox(height: 14,), + BookField(txt: 'Author Name',ctrler:authorC), + SizedBox(height: 14,), + BookField(txt: 'Price',ctrler: pricC), + SizedBox(height: 14,), + BookField(txt: 'Image link',ctrler: imgPathC), + SizedBox(height: 14,), + BookField(txt: 'Description',ctrler: descripC,isDes: true,), + SizedBox(height: 14,), + ElevatedButton(onPressed: (){ + Book.add(bookNameC.text,authorC.text,pricC.text,imgPathC.text,descripC.text,false.obs); + }, + style: ElevatedButton.styleFrom( + minimumSize: Size(double.infinity,55), + //padding: EdgeInsets.symmetric(horizontal: 24,vertical: 8), + primary: Colors.black, + elevation: 0, + ), + child: Text('Add',style: TextStyle(color: Colors.white),) + ), - ], - ), + ], ), );; } diff --git a/lib/book_page/the_book.dart b/lib/book_page/the_book.dart index faf0644..7b16c19 100644 --- a/lib/book_page/the_book.dart +++ b/lib/book_page/the_book.dart @@ -34,7 +34,7 @@ class _BookPageState extends State { ) ), const SizedBox(height: 12,), - Text(widget.book.title,style: TextStyle( + Text(widget.book.title.value,style: TextStyle( fontSize: 24, fontWeight: FontWeight.w600 ),), Text(widget.book.author,style: TextStyle( diff --git a/lib/home_page/book_model.dart b/lib/home_page/book_model.dart index e29517e..88e5fc1 100644 --- a/lib/home_page/book_model.dart +++ b/lib/home_page/book_model.dart @@ -1,6 +1,6 @@ import 'package:get/get.dart'; class Book{ - final String title; + final RxString title; final String author; final String price,imgPath,desc; final RxBool inCart,isSaved; @@ -8,7 +8,7 @@ class Book{ Book(String tit,String auth,String p,String img,String de,[bool? inCart,bool? isSaved]) :inCart = (inCart??false).obs, isSaved= (isSaved??false).obs, - title=tit, + title=tit.obs, author=auth, price=p, imgPath=img, diff --git a/lib/home_page/card_book.dart b/lib/home_page/card_book.dart index afe9a9f..7bc78bb 100644 --- a/lib/home_page/card_book.dart +++ b/lib/home_page/card_book.dart @@ -38,7 +38,7 @@ class _CardBookState extends State { mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text(widget.book.title,style: const TextStyle( + Text(widget.book.title.value,style: const TextStyle( fontSize: 16,fontWeight: FontWeight.w600 ),), diff --git a/lib/home_page/main.dart b/lib/home_page/main.dart index cdaa3b7..44efda0 100644 --- a/lib/home_page/main.dart +++ b/lib/home_page/main.dart @@ -59,7 +59,7 @@ class _MyHomePageState extends State { () { return ListView( controller: ScrollController(), - children: Book.books.where((e) => e.title.contains(query)).map((e) => CardBook(book: e,)).toList(), + children: Book.books.where((e) => e.title.value.contains(query)).map((e) => CardBook(book: e,)).toList(), ); } ), From c5b38ae8bff676d89584ea8ad7963272b937c445 Mon Sep 17 00:00:00 2001 From: computiqtech Date: Mon, 29 Aug 2022 22:33:42 +0300 Subject: [PATCH 3/4] Fix Bottom Overflowed By Pixels --- .vscode/launch.json | 38 +++++++++++++ lib/add_book/addBook_body.dart | 30 ++++++----- lib/add_book/book_field.dart | 19 +++---- lib/add_book/form.dart | 62 +++++++++++---------- lib/home_page/menu_barr.dart | 98 ++++++++++++++++++++-------------- lib/{home_page => }/main.dart | 8 +-- test/widget_test.dart | 2 +- 7 files changed, 160 insertions(+), 97 deletions(-) create mode 100644 .vscode/launch.json rename lib/{home_page => }/main.dart (94%) diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..2bf7721 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,38 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Flutter: Attach to Device", + "type": "dart", + "request": "attach" + }, + { + "args": ["--extensionDevelopmentPath=${workspaceFolder}"], + "name": "Launch Extension", + "outFiles": ["${workspaceFolder}/out/**/*.js"], + "preLaunchTask": "npm", + "request": "launch", + "type": "extensionHost" + }, + { + "name": "Mohammed-Ali--book_store_app", + "request": "launch", + "type": "dart" + }, + { + "name": "Mohammed-Ali--book_store_app (profile mode)", + "request": "launch", + "type": "dart", + "flutterMode": "profile" + }, + { + "name": "Mohammed-Ali--book_store_app (release mode)", + "request": "launch", + "type": "dart", + "flutterMode": "release" + } + ] +} diff --git a/lib/add_book/addBook_body.dart b/lib/add_book/addBook_body.dart index f9c6eef..b17d75e 100644 --- a/lib/add_book/addBook_body.dart +++ b/lib/add_book/addBook_body.dart @@ -1,4 +1,3 @@ - import 'package:flutter/material.dart'; import 'package:book_store_app/add_book/form.dart'; @@ -9,18 +8,23 @@ class AddBook_body extends StatelessWidget { @override Widget build(BuildContext context) { - return Padding( - padding: EdgeInsets.symmetric(horizontal: 40), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: const [ - SizedBox(height: 28,), - Text('Add Book',style: TextStyle( - fontSize: 24,fontWeight: FontWeight.w600 - ),), - BookForm(), - ], + return SingleChildScrollView( + child: Padding( + padding: EdgeInsets.symmetric(horizontal: 40), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox( + height: 28, + ), + Text( + 'Add Book', + style: TextStyle(fontSize: 24, fontWeight: FontWeight.w600), + ), + BookForm(), + ], + ), ), ); } -} \ No newline at end of file +} diff --git a/lib/add_book/book_field.dart b/lib/add_book/book_field.dart index 1183785..ee1d916 100644 --- a/lib/add_book/book_field.dart +++ b/lib/add_book/book_field.dart @@ -1,32 +1,33 @@ - import 'package:flutter/material.dart'; + class BookField extends StatelessWidget { - const BookField ({Key? key, required this.txt, required this.ctrler, this.isDes }) : super(key: key); + const BookField( + {Key? key, required this.txt, required this.ctrler, this.isDes}) + : super(key: key); final String txt; final TextEditingController ctrler; final bool? isDes; @override Widget build(BuildContext context) { return Container( - padding: EdgeInsets.only(left: 20), + padding: const EdgeInsets.only(left: 20), + margin: const EdgeInsets.only(bottom: 15.0), decoration: BoxDecoration( color: Colors.white, - borderRadius: BorderRadius.circular(32), + borderRadius: BorderRadius.circular(32), ), child: TextField( - textInputAction:(isDes==null?TextInputAction.next:TextInputAction.newline), + textInputAction: + (isDes == null ? TextInputAction.next : TextInputAction.newline), controller: ctrler, - maxLines: isDes==null?1:4, + maxLines: isDes == null ? 1 : 4, decoration: InputDecoration( hintStyle: TextStyle(fontSize: 17), hintText: '$txt', border: InputBorder.none, contentPadding: EdgeInsets.symmetric(vertical: 20), ), - ), ); } } - - diff --git a/lib/add_book/form.dart b/lib/add_book/form.dart index 3a85744..dac0ec6 100644 --- a/lib/add_book/form.dart +++ b/lib/add_book/form.dart @@ -1,9 +1,9 @@ - import 'package:flutter/material.dart'; import 'package:book_store_app/add_book/book_field.dart'; import 'package:book_store_app/add_book/main_add.dart'; import 'package:book_store_app/home_page/book_model.dart'; import 'package:get/get.dart'; + class BookForm extends StatefulWidget { const BookForm({Key? key}) : super(key: key); @@ -14,36 +14,40 @@ class BookForm extends StatefulWidget { class _BookFormState extends State { @override Widget build(BuildContext context) { - return Padding( - padding: EdgeInsets.symmetric(horizontal: 10), - child: ListView( - scrollDirection: Axis.vertical, + return SingleChildScrollView( + reverse: true, + child: Column( children: [ - SizedBox(height: 56,), - BookField(txt: 'Book Name',ctrler: bookNameC), - SizedBox(height: 14,), - BookField(txt: 'Author Name',ctrler:authorC), - SizedBox(height: 14,), - BookField(txt: 'Price',ctrler: pricC), - SizedBox(height: 14,), - BookField(txt: 'Image link',ctrler: imgPathC), - SizedBox(height: 14,), - BookField(txt: 'Description',ctrler: descripC,isDes: true,), - SizedBox(height: 14,), - ElevatedButton(onPressed: (){ - Book.add(bookNameC.text,authorC.text,pricC.text,imgPathC.text,descripC.text,false.obs); - }, - style: ElevatedButton.styleFrom( - minimumSize: Size(double.infinity,55), - //padding: EdgeInsets.symmetric(horizontal: 24,vertical: 8), - primary: Colors.black, - elevation: 0, - ), - child: Text('Add',style: TextStyle(color: Colors.white),) - ), - + SizedBox( + height: 56, + ), + BookField(txt: 'Book Name', ctrler: bookNameC), + BookField(txt: 'Author Name', ctrler: authorC), + BookField(txt: 'Price', ctrler: pricC), + BookField(txt: 'Image link', ctrler: imgPathC), + BookField( + txt: 'Description', + ctrler: descripC, + isDes: true, + ), + ElevatedButton( + onPressed: () { + Book.add(bookNameC.text, authorC.text, pricC.text, + imgPathC.text, descripC.text, false.obs); + }, + style: ElevatedButton.styleFrom( + minimumSize: Size(double.infinity, 55), + //padding: EdgeInsets.symmetric(horizontal: 24,vertical: 8), + primary: Colors.black, + elevation: 0, + ), + child: Text( + 'Add', + style: TextStyle(color: Colors.white), + )), ], ), - );; + ); + ; } } diff --git a/lib/home_page/menu_barr.dart b/lib/home_page/menu_barr.dart index a1cc071..5874e8e 100644 --- a/lib/home_page/menu_barr.dart +++ b/lib/home_page/menu_barr.dart @@ -1,13 +1,19 @@ import 'package:book_store_app/cart/cart.dart'; -import 'package:book_store_app/home_page/main.dart'; +import 'package:book_store_app/main.dart'; import 'package:flutter/material.dart'; import 'package:book_store_app/saved/saved_book.dart'; import 'package:book_store_app/add_book/main_add.dart'; + class MenuBar extends StatelessWidget { - final Color? c1,c2,c3,c4; + final Color? c1, c2, c3, c4; final String? flag; const MenuBar({ - Key? key, this.c1, this.c2, this.c3, this.flag, this.c4, + Key? key, + this.c1, + this.c2, + this.c3, + this.flag, + this.c4, }) : super(key: key); @override @@ -19,53 +25,63 @@ class MenuBar extends StatelessWidget { decoration: BoxDecoration( boxShadow: const [ BoxShadow( - color: Colors.black12, - spreadRadius: 4, - blurRadius: 14, - offset: Offset(5,7) - ) + color: Colors.black12, + spreadRadius: 4, + blurRadius: 14, + offset: Offset(5, 7)) ], borderRadius: BorderRadius.circular(18), color: Colors.white, - ), width: 270, padding: EdgeInsets.symmetric(vertical: 10), child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ - TextButton(onPressed: (){ - if (flag!='home') { - Navigator.push( - context, - MaterialPageRoute(builder: (context) => const MyApp()), - ); - } - }, child: Icon(Icons.home_outlined,color: c1,)), - TextButton(onPressed: (){ - if (flag!='cart') { - Navigator.push( - context, - MaterialPageRoute(builder: (context) => const Cart()), - ); - } - }, child: Icon(Icons.shopping_cart_outlined,color: c2)), - TextButton(onPressed: (){ - if(flag!='saved') { - Navigator.push( - context, - MaterialPageRoute(builder: (context) => const SavedBooks()), - ); - } - }, child: Icon(Icons.bookmark_outline_outlined,color: c4)), - TextButton(onPressed: (){ - if(flag!='add') { - Navigator.push( - context, - MaterialPageRoute(builder: (context) => const AddBook()), - ); - } - }, child: Icon(Icons.add_outlined,color: c3)), + TextButton( + onPressed: () { + if (flag != 'home') { + Navigator.push( + context, + MaterialPageRoute(builder: (context) => const MyApp()), + ); + } + }, + child: Icon( + Icons.home_outlined, + color: c1, + )), + TextButton( + onPressed: () { + if (flag != 'cart') { + Navigator.push( + context, + MaterialPageRoute(builder: (context) => const Cart()), + ); + } + }, + child: Icon(Icons.shopping_cart_outlined, color: c2)), + TextButton( + onPressed: () { + if (flag != 'saved') { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => const SavedBooks()), + ); + } + }, + child: Icon(Icons.bookmark_outline_outlined, color: c4)), + TextButton( + onPressed: () { + if (flag != 'add') { + Navigator.push( + context, + MaterialPageRoute(builder: (context) => const AddBook()), + ); + } + }, + child: Icon(Icons.add_outlined, color: c3)), ], ), ), diff --git a/lib/home_page/main.dart b/lib/main.dart similarity index 94% rename from lib/home_page/main.dart rename to lib/main.dart index 44efda0..f254aa8 100644 --- a/lib/home_page/main.dart +++ b/lib/main.dart @@ -1,10 +1,10 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:get/get.dart'; -import 'menu_barr.dart'; -import 'card_book.dart'; -import 'book_model.dart'; -import 'search_field.dart'; +import 'home_page/menu_barr.dart'; +import 'home_page/card_book.dart'; +import 'home_page/book_model.dart'; +import 'home_page/search_field.dart'; void main() { SystemChrome.setSystemUIOverlayStyle( const SystemUiOverlayStyle( diff --git a/test/widget_test.dart b/test/widget_test.dart index bf4f540..7730be6 100644 --- a/test/widget_test.dart +++ b/test/widget_test.dart @@ -8,7 +8,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:book_store_app/home_page/main.dart'; +import 'package:book_store_app/main.dart'; void main() { testWidgets('Counter increments smoke test', (WidgetTester tester) async { From b303e3fb6526fba79cdc7cf81ab63be5e288d251 Mon Sep 17 00:00:00 2001 From: mo7rex Date: Tue, 30 Aug 2022 13:42:40 +0300 Subject: [PATCH 4/4] edits on the form --- lib/add_book/book_field.dart | 2 +- lib/add_book/form.dart | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/add_book/book_field.dart b/lib/add_book/book_field.dart index ee1d916..e35d242 100644 --- a/lib/add_book/book_field.dart +++ b/lib/add_book/book_field.dart @@ -23,7 +23,7 @@ class BookField extends StatelessWidget { maxLines: isDes == null ? 1 : 4, decoration: InputDecoration( hintStyle: TextStyle(fontSize: 17), - hintText: '$txt', + hintText: txt, border: InputBorder.none, contentPadding: EdgeInsets.symmetric(vertical: 20), ), diff --git a/lib/add_book/form.dart b/lib/add_book/form.dart index dac0ec6..904a33e 100644 --- a/lib/add_book/form.dart +++ b/lib/add_book/form.dart @@ -34,6 +34,10 @@ class _BookFormState extends State { onPressed: () { Book.add(bookNameC.text, authorC.text, pricC.text, imgPathC.text, descripC.text, false.obs); + bookNameC.text=''; authorC.text=''; pricC.text=''; + imgPathC.text=''; descripC.text=''; + setState(() { + }); }, style: ElevatedButton.styleFrom( minimumSize: Size(double.infinity, 55), @@ -41,10 +45,11 @@ class _BookFormState extends State { primary: Colors.black, elevation: 0, ), - child: Text( + child: const Text( 'Add', style: TextStyle(color: Colors.white), )), + SizedBox(height: 90,), ], ), );