shop_home_page.dart 2.39 KB
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:wow_english/common/extension/string_extension.dart';
import 'package:wow_english/common/widgets/we_app_bar.dart';
import 'package:wow_english/pages/shop/home/widgets/lesson_card_item.dart';
import 'package:wow_english/route/route.dart';

import 'bloc/shop_home_bloc.dart';

class ShopHomePage extends StatelessWidget {
  const ShopHomePage({super.key});

  @override
  Widget build(BuildContext context) {
    return BlocProvider(
      create: (context) => ShopHomeBloc(),
      child: _ShopHomeView(),
    );
  }
}

class _ShopHomeView extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return BlocListener<ShopHomeBloc,ShopHomeState>(
      listener: (context, state) {},
      child: _shopHomeWidget(),
    );
  }

  Widget _shopHomeWidget() => BlocBuilder<ShopHomeBloc,ShopHomeState>(builder: (context, state){
    return Scaffold(
      appBar: WEAppBar(
        actions: [
          IconButton(
            icon: Image.asset(
              'check_lesson'.assetPng,
              width: 40,
              height: 40,
            ),
            color: Colors.white,
            onPressed: () {
              Navigator.of(context).pushNamed(AppRouteName.exLesson);
            },
          ),
          IconButton(
            icon: Image.asset(
              'shop'.assetPng,
              width: 40,
              height: 40,
            ),
            color: Colors.white,
            onPressed: () {
              EasyLoading.showToast('购前须知');
            },
          )
        ],
      ),
      body: Center(
        child: Padding(
          padding: EdgeInsets.symmetric(vertical: 25.h,horizontal: 25.w),
          child: GridView.builder(
              itemCount: 4,
              gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
                crossAxisCount: 2,
                childAspectRatio: 2,
                mainAxisSpacing: 14.h,
                crossAxisSpacing : 4.5.w,
              ),
              itemBuilder: (BuildContext context,int index){
                return LessonCardItem(
                  onTap: (){
                    EasyLoading.showToast('购买');
                  });
              }),
        ),
      ),
    );
  });
}