CarrotMarketApp - 나의 당근 화면 만들기

송민경's avatar
Apr 18, 2024
CarrotMarketApp - 나의 당근 화면 만들기

import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'my_carrot_header.dart'; class MyCarrotScreen extends StatelessWidget { const MyCarrotScreen({Key? key}); @override Widget build(BuildContext context) { return Scaffold( backgroundColor: Colors.grey[100], appBar: AppBar( title: const Text("나의 당근"), actions: [ IconButton(onPressed: () {}, icon: const Icon(Icons.settings)), ], bottom: const PreferredSize( preferredSize: Size.fromHeight(0.5), child: Divider(thickness: 0.5, endIndent: 16, color: Colors.grey), ), ), body: ListView( children: [ MyCarrotHeader(), const SizedBox(height: 8.0), ], ), ); } }
notion image
import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; class MyCarrotHeader extends StatelessWidget { const MyCarrotHeader({Key? key}); @override Widget build(BuildContext context) { return Card( elevation: 0.5, margin: EdgeInsets.zero, shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(0.0)), child: Padding( padding: EdgeInsets.symmetric(vertical: 20, horizontal: 16), child: Column( children: [ _buildProfileRow(), const SizedBox(height: 30), _buildProfileButton(), const SizedBox(height: 30), Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ _buildRoundTextButton("판매내역", FontAwesomeIcons.receipt), _buildRoundTextButton("구매내역", FontAwesomeIcons.shoppingBag), _buildRoundTextButton("관심목록", FontAwesomeIcons.heart), ], ), ], ), ), ); } Widget _buildProfileRow() { return Container(color: Colors.redAccent[100], height: 60); } Widget _buildProfileButton() { return Container(color: Colors.blue[100], height: 45); } Widget _buildRoundTextButton(String title, IconData iconData) { return Container(color: Colors.orange[100], height: 60, width: 60); } }
notion image
import 'package:carrot_market_ui/theme.dart'; import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; class MyCarrotHeader extends StatelessWidget { const MyCarrotHeader({Key? key}); @override Widget build(BuildContext context) { return Card( elevation: 0.5, margin: EdgeInsets.zero, shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(0.0)), child: Padding( padding: EdgeInsets.symmetric(vertical: 20, horizontal: 16), child: Column( children: [ _buildProfileRow(), const SizedBox(height: 30), _buildProfileButton(), const SizedBox(height: 30), Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ _buildRoundTextButton("판매내역", FontAwesomeIcons.receipt), _buildRoundTextButton("구매내역", FontAwesomeIcons.shoppingBag), _buildRoundTextButton("관심목록", FontAwesomeIcons.heart), ], ), ], ), ), ); } Widget _buildProfileRow() { return Row( children: [ Stack( children: [ SizedBox( width: 65, height: 65, child: ClipRRect( borderRadius: BorderRadius.circular(32.5), child: Image.network( "http://picsum.photos/200/100", fit: BoxFit.cover, ), ), ), Positioned( bottom: 0, right: 0, child: Container( width: 20, height: 20, decoration: BoxDecoration( borderRadius: BorderRadius.circular(15), color: Colors.grey[100], ), child: Icon( Icons.camera_alt_outlined, size: 15, ), ), ), ], ), SizedBox(width: 16), Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text("developer", style: textTheme().displayMedium), SizedBox(height: 10), Text("좌동 #00912"), ], ) ], ); } Widget _buildProfileButton() { return Container(color: Colors.blue[100], height: 45); } Widget _buildRoundTextButton(String title, IconData iconData) { return Container(color: Colors.orange[100], height: 60, width: 60); } }
notion image
notion image
import 'package:carrot_market_ui/theme.dart'; import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; class MyCarrotHeader extends StatelessWidget { const MyCarrotHeader({Key? key}); @override Widget build(BuildContext context) { return Card( elevation: 0.5, margin: EdgeInsets.zero, shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(0.0)), child: Padding( padding: EdgeInsets.symmetric(vertical: 20, horizontal: 16), child: Column( children: [ _buildProfileRow(), const SizedBox(height: 30), _buildProfileButton(), const SizedBox(height: 30), Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ _buildRoundTextButton("판매내역", FontAwesomeIcons.receipt), _buildRoundTextButton("구매내역", FontAwesomeIcons.shoppingBag), _buildRoundTextButton("관심목록", FontAwesomeIcons.heart), ], ), ], ), ), ); } Widget _buildProfileRow() { return Row( children: [ Stack( children: [ SizedBox( width: 65, height: 65, child: ClipRRect( borderRadius: BorderRadius.circular(32.5), child: Image.network( "http://picsum.photos/200/100", fit: BoxFit.cover, ), ), ), Positioned( bottom: 0, right: 0, child: Container( width: 20, height: 20, decoration: BoxDecoration( borderRadius: BorderRadius.circular(15), color: Colors.grey[100], ), child: Icon( Icons.camera_alt_outlined, size: 15, ), ), ), ], ), SizedBox(width: 16), Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text("developer", style: textTheme().displayMedium), SizedBox(height: 10), Text("좌동 #00912"), ], ) ], ); } Widget _buildProfileButton() { return InkWell( onTap: () {}, child: Container( decoration: BoxDecoration( border: Border.all(color: Color(0xFFD4D5DD), width: 1.0), borderRadius: BorderRadius.circular(6.0), ), height: 45, child: Center( child: Center( child: Text( "프로필 보기", style: textTheme().titleMedium, ), ), ), ), ); } Widget _buildRoundTextButton(String title, IconData iconData) { return Container(color: Colors.orange[100], height: 60, width: 60); } }
notion image
import 'package:carrot_market_ui/theme.dart'; import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; class MyCarrotHeader extends StatelessWidget { const MyCarrotHeader({Key? key}); @override Widget build(BuildContext context) { return Card( elevation: 0.5, margin: EdgeInsets.zero, shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(0.0)), child: Padding( padding: EdgeInsets.symmetric(vertical: 20, horizontal: 16), child: Column( children: [ _buildProfileRow(), const SizedBox(height: 30), _buildProfileButton(), const SizedBox(height: 30), Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ _buildRoundTextButton("판매내역", FontAwesomeIcons.receipt), _buildRoundTextButton("구매내역", FontAwesomeIcons.shoppingBag), _buildRoundTextButton("관심목록", FontAwesomeIcons.heart), ], ), ], ), ), ); } Widget _buildProfileRow() { return Row( children: [ Stack( children: [ SizedBox( width: 65, height: 65, child: ClipRRect( borderRadius: BorderRadius.circular(32.5), child: Image.network( "http://picsum.photos/200/100", fit: BoxFit.cover, ), ), ), Positioned( bottom: 0, right: 0, child: Container( width: 20, height: 20, decoration: BoxDecoration( borderRadius: BorderRadius.circular(15), color: Colors.grey[100], ), child: Icon( Icons.camera_alt_outlined, size: 15, ), ), ), ], ), SizedBox(width: 16), Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text("developer", style: textTheme().displayMedium), SizedBox(height: 10), Text("좌동 #00912"), ], ) ], ); } Widget _buildProfileButton() { return InkWell( onTap: () {}, child: Container( decoration: BoxDecoration( border: Border.all(color: Color(0xFFD4D5DD), width: 1.0), borderRadius: BorderRadius.circular(6.0), ), height: 45, child: Center( child: Center( child: Text( "프로필 보기", style: textTheme().titleMedium, ), ), ), ), ); } Widget _buildRoundTextButton(String title, IconData iconData) { return Column( children: [ Container( width: 60, height: 60, decoration: BoxDecoration( borderRadius: BorderRadius.circular(30.0), color: Color.fromRGBO(225, 226, 208, 1), border: Border.all(color: Color(0xFFD4D5DD), width: 0.5)), child: Icon(iconData, color: Colors.orange), ), SizedBox(height: 10), Text(title, style: textTheme().titleMedium), ], ); } }
import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; class IconMenu { final String title; final IconData iconData; IconMenu({required this.title, required this.iconData}); } final List<IconMenu> iconMenu1 = [ IconMenu(title: '내 동네 설정', iconData: FontAwesomeIcons.mapMarkerAlt), IconMenu(title: '동네 인증하기', iconData: FontAwesomeIcons.compressArrowsAlt), IconMenu(title: '키워드 알림', iconData: FontAwesomeIcons.tag), IconMenu(title: '모아보기', iconData: FontAwesomeIcons.borderAll) ]; final List<IconMenu> iconMenu2 = [ IconMenu(title: '동네생활 글', iconData: FontAwesomeIcons.edit), IconMenu(title: '동네생활 댓글', iconData: FontAwesomeIcons.commentDots), IconMenu(title: '동네생활 주제 목록', iconData: FontAwesomeIcons.star) ]; final List<IconMenu> iconMenu3 = [ IconMenu(title: '비즈프로필 관리', iconData: FontAwesomeIcons.store), IconMenu(title: '지역광고', iconData: FontAwesomeIcons.bullhorn) ];
notion image
import 'package:carrot_market_ui/theme.dart'; import 'package:flutter/material.dart'; import '../../models/icon_menu.dart'; class CardIconMenu extends StatelessWidget { final List<IconMenu> iconMenuList; CardIconMenu({required this.iconMenuList}); @override Widget build(BuildContext context) { return Card( elevation: 0.5, margin: EdgeInsets.zero, shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(0.0)), child: Padding( padding: EdgeInsets.all(16.0), child: Column( children: List.generate( iconMenuList.length, (index) => _buildRowIconItem( iconMenuList[index].title, iconMenuList[index].iconData), ), ), ), ); } Widget _buildRowIconItem(String title, IconData iconData){ return Container( height: 50, child: Row( children: [ Icon(iconData, size: 17), const SizedBox(width: 20), Text(title, style: textTheme().titleMedium) ], ), ); } }
import 'package:carrot_market_ui/models/icon_menu.dart'; import 'package:carrot_market_ui/screens/components/card_icon_menu.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'my_carrot_header.dart'; class MyCarrotScreen extends StatelessWidget { const MyCarrotScreen({Key? key}); @override Widget build(BuildContext context) { return Scaffold( backgroundColor: Colors.grey[100], appBar: AppBar( title: const Text("나의 당근"), actions: [ IconButton(onPressed: () {}, icon: const Icon(Icons.settings)), ], bottom: const PreferredSize( preferredSize: Size.fromHeight(0.5), child: Divider(thickness: 0.5, endIndent: 16, color: Colors.grey), ), ), body: ListView( children: [ MyCarrotHeader(), const SizedBox(height: 8.0), CardIconMenu(iconMenuList: iconMenu1), const SizedBox(height: 8.0), CardIconMenu(iconMenuList: iconMenu2), const SizedBox(height: 8.0), CardIconMenu(iconMenuList: iconMenu3), ], ), ); } }
notion image
Share article
RSSPowered by inblog