본문 바로가기

Flutter

고객센터 페이지, 결제/취소 내역

두개의 페이지다 별 다른 기능을 아직 넣지 못하고 그림만 그렸다..

 

 

 

고객센터

import 'package:finalproject_front/constants.dart';
import 'package:finalproject_front/size.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/src/foundation/key.dart';
import 'package:flutter/src/widgets/framework.dart';

class PaymentInstallmentListPage extends StatelessWidget {
  const PaymentInstallmentListPage({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: _buildAppbar(context),
      body: ListView(
        children: [
          _buildInstallmentLists(context),
        ],
      ),
    );
  }

  Column _buildInstallmentLists(
    BuildContext context,
  ) {
    return Column(
      children: [
        SizedBox(height: gap_l),
        _buildSalesList(context, "깔끔하고 감각적인 최고의 홈페이지를 제작해드립니다", "50,000",
            "22.01.09", "/lessonDetail"),
        SizedBox(height: gap_l),
        _buildSalesList(context, "출장 메이크업을 합리적인 가격에 진행해 드립니다", "77,000",
            "22.01.09", "/lessonDetail"),
        SizedBox(height: gap_l),
        _buildSalesList(context, "천연향료 에센셜오일을 알아본 후 향수를 만들어드립니다", "70,000",
            "22.01.09", "/lessonDetail"),
        SizedBox(height: gap_l),
        _buildSalesList(context, "레슨경력 7년차 전문댄서가 맞춤형 댄스 수업해 드립니다", "50,000",
            "22.01.09", "/lessonDetail"),
        SizedBox(height: gap_l),
        _buildSalesList(context, "깔끔하고 감각적인 최고의 홈페이지를 제작해드립니다", "50,000",
            "22.01.09", "/lessonDetail"),
        SizedBox(height: gap_l),
        _buildSalesList(context, "깔끔하고 감각적인 최고의 홈페이지를 제작해드립니다", "50,000",
            "22.01.09", "/lessonDetail"),
        SizedBox(height: gap_l),
        _buildSalesList(context, "깔끔하고 감각적인 최고의 홈페이지를 제작해드립니다", "50,000",
            "22.01.09", "/lessonDetail"),
        SizedBox(height: gap_l),
        _buildSalesList(context, "깔끔하고 감각적인 최고의 홈페이지를 제작해드립니다", "50,000",
            "22.01.09", "/lessonDetail"),
        SizedBox(height: gap_l),
      ],
    );
  }

  InkWell _buildSalesList(
      context, String saletitle, String price, String date, String routePath) {
    return InkWell(
      onTap: () {
        Navigator.pushNamed(context, "${routePath}");
      },
      child: Container(
        child: Padding(
          padding: const EdgeInsets.symmetric(horizontal: 20),
          child: Container(
            decoration: BoxDecoration(
              border: Border.all(color: gBorderColor, width: 3),
              borderRadius: BorderRadius.circular(10),
            ),
            child: Padding(
              padding: const EdgeInsets.all(15.0),
              child: Column(
                children: [
                  Column(
                    crossAxisAlignment: CrossAxisAlignment.start,
                    children: [
                      Container(
                        width: 320,
                        height: 50,
                        child: Text(
                          "${saletitle}.",
                          style: TextStyle(
                              fontSize: 14, fontWeight: FontWeight.bold),
                          maxLines: 2,
                          overflow: TextOverflow.ellipsis,
                        ),
                      ),
                      Row(
                        mainAxisAlignment: MainAxisAlignment.spaceBetween,
                        children: [
                          Text(
                            "가격 : ${price}원",
                            style: TextStyle(fontSize: 14),
                          ),
                          Text(
                            "결제 날짜 : ${date}",
                            style: TextStyle(fontSize: 14),
                          ),
                        ],
                      )
                    ],
                  ),
                ],
              ),
            ),
          ),
        ),
      ),
    );
  }

  AppBar _buildAppbar(BuildContext context) {
    return AppBar(
      backgroundColor: Colors.white,
      elevation: 1.0,
      leading: IconButton(
          icon: Icon(
            CupertinoIcons.back,
            color: Colors.black,
            size: 30,
          ),
          onPressed: () {
            Navigator.pop(context);
          }),
      title: Text(
        "결제/취소내역",
        style: TextStyle(
          color: Colors.black,
          fontSize: 20,
          fontWeight: FontWeight.bold,
        ),
      ),
      centerTitle: true,
    );
  }
}

 

고객센터

import 'package:finalproject_front/constants.dart';
import 'package:finalproject_front/size.dart';

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/src/foundation/key.dart';
import 'package:flutter/src/widgets/framework.dart';

class CustomerServicePage extends StatelessWidget {
  const CustomerServicePage({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: _buildAppbar(context),
      body: ListView(
        children: [
          Padding(
            padding: const EdgeInsets.symmetric(horizontal: 20),
            child: Column(
              children: [
                _buildImageBox("https://picsum.photos/200"),
                _buildCustomerNotice(),
                _buildFrequentlyAskedQuestion(),
              ],
            ),
          )
        ],
      ),
    );
  }

  Container _buildFrequentlyAskedQuestion() {
    return Container(
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          SizedBox(
            height: gap_xl,
          ),
          Text(
            "FAQ",
            style: TextStyle(fontSize: 14, fontWeight: FontWeight.bold),
          ),
          _buildFaqList("[서비스 소개] 이걸 완료할 수 있을까요?"),
          _buildFaqList("[이용 방법] 전문가에게 어떻게 문의하나요?"),
          _buildFaqList("[문제 해결] 거래 중 분쟁이 발생하면 어떡하나요?"),
          _buildFaqList("[이용 방법] 쿠폰은 어떻게 사용하나요?"),
        ],
      ),
    );
  }

  Column _buildFaqList(String faqText) {
    return Column(
      crossAxisAlignment: CrossAxisAlignment.start,
      children: [
        Padding(
          padding: const EdgeInsets.only(top: 8, bottom: 8),
          child: Text(
            "${faqText}",
            style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
          ),
        ),
        Divider(
          thickness: 1,
          color: gBorderColor,
        )
      ],
    );
  }

  Container _buildCustomerNotice() {
    return Container(
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          Text(
            "공지사항",
            style: TextStyle(fontSize: 14, fontWeight: FontWeight.bold),
          ),
          _buildNotice("11월 고객센터 운영시간 안내"),
          _buildNotice("사칭하는 메시지, 조심하세요!"),
          _buildNotice("패널티 정책 안내(시행일: 7월 4일)"),
          _buildNotice("개인정보처리방침 계정 안내(시행일: 1월 7일)"),
        ],
      ),
    );
  }

  Column _buildNotice(String noticeText) {
    return Column(
      crossAxisAlignment: CrossAxisAlignment.start,
      children: [
        Padding(
          padding: const EdgeInsets.only(top: 8, bottom: 8),
          child: Text(
            "${noticeText}",
            style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
          ),
        ),
        Divider(
          thickness: 1,
          color: gBorderColor,
        )
      ],
    );
  }

  Padding _buildImageBox(String imagePath) {
    return Padding(
      padding: const EdgeInsets.only(top: 20, bottom: 30),
      child: Container(
        height: 100,
        width: double.infinity,
        decoration: BoxDecoration(
          borderRadius: BorderRadius.circular(10),
          image: DecorationImage(image: NetworkImage("${imagePath}"), fit: BoxFit.cover),
        ),
      ),
    );
  }

  AppBar _buildAppbar(BuildContext context) {
    return AppBar(
      elevation: 1.0,
      leading: IconButton(
        onPressed: () {
          Navigator.pop(context);
        },
        icon: Icon(
          CupertinoIcons.back,
          color: Colors.black,
          size: 26,
        ),
      ),
      centerTitle: true,
      title: TextButton(
        onPressed: () {},
        child: Text(
          "크몽 고객센터",
          style: TextStyle(color: Colors.black, fontSize: 20, fontWeight: FontWeight.bold),
        ),
      ),
    );
  }
}

'Flutter' 카테고리의 다른 글

클래스 리스트  (0) 2022.12.21
클래스 등록하기  (1) 2022.12.21
주문하기 페이지  (0) 2022.12.20
검색페이지  (0) 2022.12.20
찜 목록 리스트  (0) 2022.12.20