buildSessions method

dynamic buildSessions(
  1. dynamic context,
  2. List sessions
)

Implementation

Widget buildSessions(BuildContext context, List<DeviceRecord> sessions) {
  final unverifiedSessions = sessions.where((s) => !s.isVerified()).toList();

  if (unverifiedSessions.isEmpty) {
    return CustomScrollView(
      slivers: [
        SliverToBoxAdapter(
          child: Padding(
            padding: const EdgeInsetsDirectional.symmetric(
              horizontal: 20,
              vertical: 15,
            ),
            child: Text(
              L10n.of(context).verifiedSessionsDescription,
              style: Theme.of(context).textTheme.bodyMedium,
            ),
          ),
        ),
        SliverList.builder(
          itemBuilder: (context, index) => SessionCard(
            deviceRecord: sessions[index],
          ),
          itemCount: sessions.length,
        ),
      ],
    );
  }

  final slivers = [
    SliverToBoxAdapter(
      child: Padding(
        padding: const EdgeInsetsDirectional.symmetric(
          horizontal: 20,
          vertical: 15,
        ),
        child: Row(
          children: [
            Padding(
              padding: const EdgeInsets.only(right: 10),
              child: Icon(
                Atlas.shield_exclamation_thin,
                color: Theme.of(context).colorScheme.error,
              ),
            ),
            Text(
              L10n.of(context).unverifiedSessions,
              style: Theme.of(context).textTheme.headlineSmall,
            ),
          ],
        ),
      ),
    ),
    SliverToBoxAdapter(
      child: Padding(
        padding: const EdgeInsetsDirectional.symmetric(
          horizontal: 20,
          vertical: 15,
        ),
        child: Text(
          L10n.of(context).unverifiedSessionsDescription,
          style: Theme.of(context).textTheme.bodyMedium,
        ),
      ),
    ),
    SliverList.builder(
      itemBuilder: (context, index) => SessionCard(
        deviceRecord: unverifiedSessions[index],
      ),
      itemCount: unverifiedSessions.length,
    ),
  ];

  final verifiedSessions = sessions.where((s) => s.isVerified()).toList();

  if (verifiedSessions.isNotEmpty) {
    slivers.addAll([
      SliverToBoxAdapter(
        child: Padding(
          padding: const EdgeInsetsDirectional.symmetric(
            horizontal: 20,
            vertical: 15,
          ),
          child: Text(
            '${L10n.of(context).verified} ${L10n.of(context).sessions}',
            style: Theme.of(context).textTheme.headlineSmall,
          ),
        ),
      ),
      SliverList.builder(
        itemBuilder: (context, index) => SessionCard(
          deviceRecord: verifiedSessions[index],
        ),
        itemCount: verifiedSessions.length,
      ),
    ]);
  }
  return CustomScrollView(slivers: slivers);
}