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/images/book1.png b/images/book1.png new file mode 100644 index 0000000..34700a9 Binary files /dev/null and b/images/book1.png differ diff --git a/images/user.jpg b/images/user.jpg new file mode 100644 index 0000000..ae85fcc Binary files /dev/null and b/images/user.jpg differ diff --git a/lib/add_book/addBook_body.dart b/lib/add_book/addBook_body.dart new file mode 100644 index 0000000..b17d75e --- /dev/null +++ b/lib/add_book/addBook_body.dart @@ -0,0 +1,30 @@ +import 'package:flutter/material.dart'; +import 'package:book_store_app/add_book/form.dart'; + +class AddBook_body extends StatelessWidget { + const AddBook_body({ + Key? key, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + 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(), + ], + ), + ), + ); + } +} diff --git a/lib/add_book/book_field.dart b/lib/add_book/book_field.dart new file mode 100644 index 0000000..e35d242 --- /dev/null +++ b/lib/add_book/book_field.dart @@ -0,0 +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); + final String txt; + final TextEditingController ctrler; + final bool? isDes; + @override + Widget build(BuildContext context) { + return Container( + padding: const EdgeInsets.only(left: 20), + margin: const EdgeInsets.only(bottom: 15.0), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(32), + ), + child: TextField( + textInputAction: + (isDes == null ? TextInputAction.next : TextInputAction.newline), + controller: ctrler, + 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 new file mode 100644 index 0000000..904a33e --- /dev/null +++ b/lib/add_book/form.dart @@ -0,0 +1,58 @@ +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); + + @override + State createState() => _BookFormState(); +} + +class _BookFormState extends State { + @override + Widget build(BuildContext context) { + return SingleChildScrollView( + reverse: true, + child: Column( + children: [ + 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); + bookNameC.text=''; authorC.text=''; pricC.text=''; + imgPathC.text=''; descripC.text=''; + setState(() { + }); + }, + style: ElevatedButton.styleFrom( + minimumSize: Size(double.infinity, 55), + //padding: EdgeInsets.symmetric(horizontal: 24,vertical: 8), + primary: Colors.black, + elevation: 0, + ), + child: const Text( + 'Add', + style: TextStyle(color: Colors.white), + )), + SizedBox(height: 90,), + ], + ), + ); + ; + } +} 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..7b16c19 --- /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.value,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..88e5fc1 --- /dev/null +++ b/lib/home_page/book_model.dart @@ -0,0 +1,37 @@ +import 'package:get/get.dart'; +class Book{ + final RxString 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.obs, + 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..7bc78bb --- /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.value,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/menu_barr.dart b/lib/home_page/menu_barr.dart new file mode 100644 index 0000000..5874e8e --- /dev/null +++ b/lib/home_page/menu_barr.dart @@ -0,0 +1,90 @@ +import 'package:book_store_app/cart/cart.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 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 index bcc58f7..f254aa8 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,20 +1,112 @@ import 'package:flutter/material.dart'; - +import 'package:flutter/services.dart'; +import 'package:get/get.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( + 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 const MaterialApp( - home: Scaffold( - body: Center( - child: Text("Book Store App"), - ), + 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.value.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/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