projectBlockNew method

dynamic projectBlockNew(
  1. int index,
  2. void setState(
    1. VoidCallback fn
    ),
  3. List<ProjectList> dataList
)

Implementation

projectBlockNew(int index, void Function(VoidCallback fn) setState, List<ProjectList> dataList) {
  return Bounce(
    duration: const Duration(milliseconds: 200),
    onPressed: () {
      /*List<String> listImage = [];
      listImage.add("${dataList[index].bannerData?.imageWebFull}&h=480&zc=2");
      if (dataList[index].campaignArray?.isNotEmpty ?? false)
      {
        for (var i=0; i < dataList[index].campaignArray!.length; i++)
        {
          listImage.add(checkValidStringNew(dataList[index].campaignArray![i].bannerFull));
        }
      }
      Navigator.push(context, PageRouteBuilder(
        pageBuilder: (context, animation, secondaryAnimation) => FullScreenImageNew("", listImage, 0),
        transitionsBuilder: (context, animation, secondaryAnimation, child) {
          const begin = Offset(0.0, 1.0);
          const end = Offset.zero;
          const curve = Curves.ease;
          var tween = Tween(begin: begin, end: end).chain(CurveTween(curve: curve));
          return SlideTransition(
            position: animation.drive(tween),
            child: child,
          );
        },
      ));*/

      startActivity(context, ProjectWebPageScreen(dataList[index],masterUserId));

    },
    child: Container(
      margin: getCommonMarginCard(),
      decoration: getCommonCard(),
      child: Column(
        mainAxisAlignment: MainAxisAlignment.start,
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          ClipRRect(
            borderRadius: BorderRadius.only(topLeft: Radius.circular(kBorderRadius),topRight: Radius.circular(kBorderRadius)),
            child: SizedBox(
              height: 320,
              child: Stack(
                children: [
                  PageView.builder(
                    controller: dataList[index].controller,
                    itemCount: dataList[index].imageList?.length ?? 0,
                    physics: const BouncingScrollPhysics(),
                    scrollDirection: Axis.horizontal,
                    itemBuilder: (context, indexInner) {
                      return Stack(
                        children: [
                          CachedNetworkImage(
                            imageUrl: "${dataList[index].imageList?[indexInner]}&h=500&q=100",
                            placeholder: (context, url) {
                              return Image.asset('assets/images/bg_gray.jpeg',fit: BoxFit.cover,
                                width: MediaQuery.of(context).size.width,
                                height: 320,);
                            },
                            errorWidget: (context, url, error) {
                              return Image.asset('assets/images/bg_gray.jpeg',fit: BoxFit.cover,
                                width: MediaQuery.of(context).size.width,
                                height: 320,);
                            },
                            fit: BoxFit.cover,
                            width: MediaQuery.of(context).size.width,
                            height: 320,
                          ),
                          Positioned(
                            top: 12,
                            right: 12,
                            child: Container(
                              height: 36,
                              width: 36,
                              padding: const EdgeInsets.only(left: 4),
                              decoration: const BoxDecoration(
                                  shape: BoxShape.circle,
                                  color: white
                              ),
                              child: LikeButton(
                                mainAxisAlignment: MainAxisAlignment.center,
                                crossAxisAlignment: CrossAxisAlignment.center,
                                size: 22,
                                isLiked: dataList[index].isFavoriteMark == 1,
                                circleColor: const CircleColor(start: black, end: gray),
                                bubblesColor: const BubblesColor(
                                  dotPrimaryColor: black,
                                  dotSecondaryColor: gray,
                                ),
                                likeBuilder: (bool isLiked) {
                                  return Image.asset(
                                    isLiked ? "assets/images/saved_fill.png" : "assets/images/saved.png",
                                    color: isLiked ? black : black,
                                  );
                                },
                                onTap: (isLike) async {
                                  setState(() {
                                    if (dataList[index].isFavoriteMark == 1)
                                    {
                                      dataList[index].isFavoriteMark = 0;
                                    }
                                    else
                                    {
                                      dataList[index].isFavoriteMark = 1;
                                    }
                                  });

                                  getFavProject(dataList[index]);

                                  var dataGetSet = dataList[index];
                                  dataList.remove(dataGetSet);
                                  dataList.insert(0, dataGetSet);

                                  return true;
                                },
                              ),
                            ),
                          ),
                        ],
                      );
                    },
                  ),
                  Positioned(
                    bottom: 22,
                    child: Visibility(
                      visible: checkImageLenth(dataList[index].imageList!) >1,
                      child: Container(
                        width: MediaQuery.of(context).size.width - 44,
                        alignment: Alignment.center,
                        child: SmoothPageIndicator(
                          controller: dataList[index].controller,
                          count: dataList[index].imageList?.length ?? 0,
                          effect: const ScrollingDotsEffect(
                            fixedCenter: false,
                            dotHeight: 6,
                            dotWidth: 6,
                            activeDotColor: white,
                            dotColor: grayNew,
                            // strokeWidth: 5,
                          ),
                        ),
                      ),
                    ),
                  ),
                ],
              ),
            ),
          ),
          const Gap(12),
          Column(
            mainAxisAlignment: MainAxisAlignment.start,
            crossAxisAlignment: CrossAxisAlignment.start,
            children: [
              Row(
                crossAxisAlignment: CrossAxisAlignment.center,
                mainAxisAlignment: MainAxisAlignment.start,
                children: [
                  Expanded(
                    child: Container(
                      margin: const EdgeInsets.only(left: 12,right: 12),
                      child: Text(
                        checkValidStringWithToDisplayCase(dataList[index].projectTitle.toString().trim()),
                        overflow: TextOverflow.clip,
                        style: getTitleStyleCard(),
                      ),
                    ),
                  ),
                  Row(
                    mainAxisAlignment: MainAxisAlignment.start,
                    crossAxisAlignment: CrossAxisAlignment.center,
                    children: [
                      const Gap(12),
                      Material(
                        color: Colors.transparent,
                        child: InkWell(
                          customBorder: const CircleBorder(),
                          onTap: () {
                            getShareClick(dataList[index]);
                          },
                          child: SizedBox(
                            width: 42,
                            height: 42,
                            child: Padding(
                              padding: const EdgeInsets.all(10.0),
                              child: Image.asset('assets/images/ic_share.png', width: 16, height: 16,color: dataList[index].shareUrl?.websiteUrl?.isNotEmpty ?? false ? black : graySemiDark),
                            ),
                          ),
                        ),
                      ),
                      Material(
                        color: Colors.transparent,
                        child: InkWell(
                          customBorder: const CircleBorder(),
                          onTap: () {
                            getDownloadClick(dataList[index]);
                          },
                          child: SizedBox(
                            width: 42,
                            height: 42,
                            child: Padding(
                              padding: const EdgeInsets.all(10.0),
                              child: Image.asset('assets/images/ic_view.png', width: 16, height: 16,color: dataList[index].shareUrl?.websiteUrl?.isNotEmpty ?? false ? black : graySemiDark ),
                            ),
                          ),
                        ),
                      ),
                      Visibility(
                        visible: (ISWHITELABEL && getIsCp()) ? false : true,
                        child: Material(
                          color: Colors.transparent,
                          child: InkWell(
                            customBorder: const CircleBorder(),
                            onTap: () {
                              getInquiryClick(dataList[index],"");
                            },
                            child: SizedBox(
                              width: 42,
                              height: 42,
                              child: Padding(
                                padding: const EdgeInsets.all(10.0),
                                child: Image.asset('assets/images/ic_add.png', width: 16, height: 16,color: dataList[index].shareUrl?.websiteUrl?.isNotEmpty ?? false ? black : graySemiDark),
                              ),
                            ),
                          ),
                        ),
                      ),
                    ],
                  ),
                ],
              ),
              const Gap(8),
              Container(
                margin: const EdgeInsets.only(left: 12,right: 12),
                child: Column(
                  crossAxisAlignment: CrossAxisAlignment.start,
                  mainAxisAlignment: MainAxisAlignment.start,
                  children: [
                    Row(
                      crossAxisAlignment: CrossAxisAlignment.center,
                      mainAxisAlignment: MainAxisAlignment.start,
                      children: [
                        Image.asset("assets/images/ic_building.png",width: 24,height: 24,),
                        const Gap(6),
                        Flexible(
                          child: Text(
                            checkValidStringWithToDisplayCase(dataList[index].sizePrice).toString(),
                            overflow: TextOverflow.clip,
                            style: const TextStyle(fontWeight: FontWeight.w400,color: black,fontSize: 16),
                          ),
                        ),
                      ],
                    ),
                    const Gap(6),
                    Row(
                      crossAxisAlignment: CrossAxisAlignment.center,
                      mainAxisAlignment: MainAxisAlignment.start,
                      children: [
                        Image.asset("assets/images/ic_location.png",width: 24,height: 24,),
                        const Gap(6),
                        Flexible(
                          child: Text(checkValidStringWithToDisplayCase(dataList[index].location).toString(),
                              overflow: TextOverflow.clip,
                              style: const TextStyle(fontWeight: FontWeight.w400,color: black,fontSize: 16)
                          ),
                        ),
                      ],
                    ),
                  ],
                ),
              ),
              const Gap(8),
              Container(
                margin: const EdgeInsets.only(left: 12,right: 12),
                child: Row(
                  crossAxisAlignment: CrossAxisAlignment.center,
                  mainAxisAlignment: MainAxisAlignment.start,
                  children: [
                    Stack(
                      alignment: Alignment.center,
                      children: [
                        SizedBox(
                          height: 24,width: 24,
                          child: CircularProgressIndicator(
                            value: double.parse(dataList[index].constructionData2?.progressPercent.toString() ?? "0") / 100,
                            color: Colors.green,
                            strokeWidth: 2,
                            backgroundColor: gray,
                          ),
                        ),
                        Text(dataList[index].constructionData2?.progressPercent.toString() ?? "0",style: const TextStyle(fontSize: 12,color: black,fontWeight: FontWeight.w400),)
                      ],
                    ),
                    const Gap(6),
                    Flexible(
                      child: Text(checkValidStringWithToDisplayCase(dataList[index].status),
                          overflow: TextOverflow.clip,
                          style: const TextStyle(fontWeight: FontWeight.w400,color: black,fontSize: 16)
                      ),
                    ),
                  ],
                ),
              ),
              const Gap(12),
              Visibility(
                visible: (ISWHITELABEL && getIsCp()) ? true : false ,
                child: dataList[index].inquiryTypes != null ? Container(
                  height: 40,
                  margin: const EdgeInsets.only(left: 12),
                  alignment: Alignment.centerLeft,
                  child: ListView.builder(
                    shrinkWrap: true,
                    scrollDirection: Axis.horizontal,
                    physics: const NeverScrollableScrollPhysics(),
                    itemCount: dataList[index].inquiryTypes!.length,
                    itemBuilder: (context, indexInner) {
                      return GestureDetector(
                        behavior: HitTestBehavior.opaque,
                        onTap: (){
                          getInquiryClick(dataList[index],checkValidString(dataList[index].inquiryTypes![indexInner].type));
                        },
                        child: Container(
                          alignment: Alignment.center,
                          margin: const EdgeInsets.only(right: 12),
                          padding: const EdgeInsets.only(left: 20, right: 20,bottom: 10,top: 10),
                          decoration: BoxDecoration(
                            color: white,
                            borderRadius: const BorderRadius.all(Radius.circular(22)),
                            border: Border.all(color: grayNew, width: 1),
                          ),
                          child: Row(
                            mainAxisAlignment: MainAxisAlignment.start,
                            crossAxisAlignment: CrossAxisAlignment.center,
                            children: [
                              Text(
                                checkValidStringWithToDisplayCase(dataList[index].inquiryTypes![indexInner].type),
                                style: const TextStyle(
                                  fontSize: 16,
                                  fontWeight: FontWeight.w400,
                                  color: black,
                                ),
                                overflow: TextOverflow.ellipsis,
                              ),
                            ],
                          ),
                        ),
                      );
                    },
                  ),
                ) :Container(),
              )
            ],
          ),
          /* const Gap(2),
          const Divider(color: graySemiDark ,height: 0.3,thickness: 0.3,indent: 12,endIndent: 12),*/
          const Gap(12),
          /*const Divider(color: grayDarkNew,thickness: 0.7,height: 0.7,)*/
        ],
      ),
    ),
  );
}