83 lines
2.3 KiB
Dart
83 lines
2.3 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:get/get.dart';
|
|
import 'package:marco/controller/tenant/all_organization_controller.dart';
|
|
import 'package:marco/helpers/widgets/my_text.dart';
|
|
import 'package:marco/model/all_organization_model.dart';
|
|
|
|
class AllOrganizationListView extends StatelessWidget {
|
|
final AllOrganizationController controller;
|
|
|
|
/// Optional callback when an organization is tapped
|
|
final void Function(AllOrganization)? onTapOrganization;
|
|
|
|
const AllOrganizationListView({
|
|
super.key,
|
|
required this.controller,
|
|
this.onTapOrganization,
|
|
});
|
|
|
|
Widget _loadingPlaceholder() {
|
|
return ListView.separated(
|
|
itemCount: 5,
|
|
separatorBuilder: (_, __) => const Divider(height: 1),
|
|
itemBuilder: (context, index) {
|
|
return Padding(
|
|
padding: const EdgeInsets.symmetric(vertical: 8.0, horizontal: 16.0),
|
|
child: Row(
|
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
children: [
|
|
Container(
|
|
width: 150,
|
|
height: 14,
|
|
color: Colors.grey.shade400,
|
|
),
|
|
Container(
|
|
width: 18,
|
|
height: 18,
|
|
decoration: BoxDecoration(
|
|
color: Colors.grey.shade400,
|
|
shape: BoxShape.circle,
|
|
),
|
|
),
|
|
],
|
|
),
|
|
);
|
|
},
|
|
);
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Obx(() {
|
|
if (controller.isLoadingOrganizations.value) {
|
|
return _loadingPlaceholder();
|
|
}
|
|
|
|
if (controller.organizations.isEmpty) {
|
|
return Center(
|
|
child: MyText.bodyMedium(
|
|
"No organizations found",
|
|
color: Colors.grey,
|
|
),
|
|
);
|
|
}
|
|
|
|
return ListView.separated(
|
|
itemCount: controller.organizations.length,
|
|
separatorBuilder: (_, __) => const Divider(height: 1),
|
|
itemBuilder: (context, index) {
|
|
final org = controller.organizations[index];
|
|
return ListTile(
|
|
title: Text(org.name),
|
|
onTap: () {
|
|
if (onTapOrganization != null) {
|
|
onTapOrganization!(org);
|
|
}
|
|
},
|
|
);
|
|
},
|
|
);
|
|
});
|
|
}
|
|
}
|