addParticipants method

Widget addParticipants(
  1. BuildContext context,
  2. ContactItemStyle style,
  3. TextStyle noData,
  4. CopyMeetLinkStyle copyMeetLinkStyle,
)

Implementation

Widget addParticipants(BuildContext context, ContactItemStyle style,
    TextStyle noData, CopyMeetLinkStyle copyMeetLinkStyle) {
  return Obx(() {
    return Column(
      crossAxisAlignment: CrossAxisAlignment.start,
      children: [
        Padding(
          padding: const EdgeInsets.only(top: 10.0, left: 10.0, bottom: 5.0),
          child: Text(
            getTranslated("meetLink"),
            style: copyMeetLinkStyle.titleTextStyle,
          ),
        ),
        Row(
          children: [
            Container(
              width: 50,
              height: 50,
              margin: const EdgeInsets.all(10.0),
              decoration: copyMeetLinkStyle.leadingStyle.iconDecoration,
              child: Center(
                child: Icon(
                  Icons.link,
                  color: copyMeetLinkStyle.leadingStyle.iconColor,
                  size: 18,
                ),
              ),
            ),
            Expanded(
                child: Text(
              controller.meetLink.value,
              style: copyMeetLinkStyle.linkTextStyle,
            )),
            IconButton(
              onPressed: () {
                if (controller.meetLink.value.isEmpty) return;
                Clipboard.setData(ClipboardData(
                    text:
                        Constants.webChatLogin + controller.meetLink.value));
                toToast(getTranslated("linkCopied"));
              },
              icon: AppUtils.svgIcon(
                  icon: copyIcon,
                  fit: BoxFit.contain,
                  colorFilter: ColorFilter.mode(
                      copyMeetLinkStyle.copyIconColor, BlendMode.srcIn)),
            ),
          ],
        ),
        const AppDivider(),
        Expanded(
          child: Stack(
            children: [
              Visibility(
                  visible: !controller.isPageLoading.value &&
                      controller.usersList.isEmpty,
                  child: Center(
                    child: Padding(
                      padding: const EdgeInsets.symmetric(vertical: 20.0),
                      child: Text(
                        getTranslated("noContactsFound"),
                        style: noData,
                      ),
                    ),
                  )),
              controller.isPageLoading.value
                  ? const Center(
                      child: Padding(
                      padding: EdgeInsets.all(16.0),
                      child: CircularProgressIndicator(),
                    ))
                  : const Offstage(),
              Column(
                children: [
                  controller.isPageLoading.value
                      ? Expanded(child: Container())
                      : Expanded(
                          child: ListView.builder(
                              itemCount: controller.scrollable.value
                                  ? controller.usersList.length +
                                      (controller.groupId.isEmpty ? 1 : 0)
                                  : controller.usersList.length,
                              controller: controller.scrollController,
                              physics: const AlwaysScrollableScrollPhysics(),
                              itemBuilder: (BuildContext context, int index) {
                                if (index >= controller.usersList.length &&
                                    controller.usersList.isNotEmpty &&
                                    controller.groupId.isEmpty) {
                                  return const Center(
                                      child: CircularProgressIndicator());
                                } else if (controller.usersList.isNotEmpty) {
                                  var item = controller.usersList[index];
                                  return ContactItem(
                                    item: item,
                                    onAvatarClick: () {
                                      // controller.showProfilePopup(item.obs);
                                    },
                                    spanTxt: controller.searchQuery.text,
                                    isCheckBoxVisible:
                                        controller.isCheckBoxVisible,
                                    checkValue: controller
                                        .selectedUsersJIDList
                                        .contains(item.jid),
                                    onCheckBoxChange: (value) {
                                      controller.onListItemPressed(item);
                                    },
                                    onListItemPressed: () {
                                      controller.onListItemPressed(item);
                                    },
                                    contactItemStyle: style,
                                  );
                                } else {
                                  return const Offstage();
                                }
                              }),
                        ),
                  Obx(() {
                    return controller.groupCallMembersCount.value > 0
                        ? InkWell(
                            onTap: () {
                              controller.makeCall();
                            },
                            child: Container(
                                height: 50,
                                decoration: AppStyleConfig
                                    .addParticipantsPageStyle
                                    .buttonDecoration,
                                /*decoration: const BoxDecoration(
                              color: buttonBgColor,
                              shape: BoxShape.rectangle,
                              borderRadius: BorderRadius.only(
                                  topLeft: Radius.circular(2), topRight: Radius.circular(2))
                          ),*/
                                child: Center(
                                  child: Row(
                                    mainAxisAlignment:
                                        MainAxisAlignment.center,
                                    crossAxisAlignment:
                                        CrossAxisAlignment.center,
                                    children: [
                                      AppUtils.svgIcon(
                                        icon: addParticipantsInCall,
                                        colorFilter: ColorFilter.mode(
                                            AppStyleConfig
                                                .addParticipantsPageStyle
                                                .buttonIconColor,
                                            BlendMode.srcIn),
                                      ),
                                      const SizedBox(
                                        width: 8,
                                      ),
                                      Text(
                                        getTranslated(
                                                "selectedParticipantsToCall")
                                            .replaceFirst("%d",
                                                "${(controller.groupCallMembersCount.value)}"),
                                        style: AppStyleConfig
                                            .addParticipantsPageStyle
                                            .buttonTextStyle,
                                        // style: const TextStyle(color: Colors.white, fontSize: 14, fontWeight: FontWeight.w500, fontFamily: 'sf_ui'),
                                      )
                                    ],
                                  ),
                                )),
                          )
                        : const Offstage();
                  })
                ],
              )
            ],
          ),
        ),
      ],
    );
  });
}