fix: Resolve all compilation errors - GroupCategory conflicts, ref access, privacy types, and icon/color properties
This commit is contained in:
parent
d01be18b12
commit
04c632eae2
|
|
@ -12,7 +12,7 @@ import '../../models/beacon.dart';
|
||||||
import '../../models/cluster.dart';
|
import '../../models/cluster.dart';
|
||||||
import '../../models/board_entry.dart';
|
import '../../models/board_entry.dart';
|
||||||
import '../../models/local_intel.dart';
|
import '../../models/local_intel.dart';
|
||||||
import '../../models/group.dart';
|
import '../../models/group.dart' as group_models;
|
||||||
import '../../services/api_service.dart';
|
import '../../services/api_service.dart';
|
||||||
import '../../services/auth_service.dart';
|
import '../../services/auth_service.dart';
|
||||||
import '../../services/local_intel_service.dart';
|
import '../../services/local_intel_service.dart';
|
||||||
|
|
@ -2408,19 +2408,19 @@ class _PulsingLocationIndicatorState extends State<_PulsingLocationIndicator>
|
||||||
}
|
}
|
||||||
|
|
||||||
// ─── Create Group inline form ─────────────────────────────────────────
|
// ─── Create Group inline form ─────────────────────────────────────────
|
||||||
class _CreateGroupInline extends StatefulWidget {
|
class _CreateGroupInline extends ConsumerStatefulWidget {
|
||||||
final VoidCallback onCreated;
|
final VoidCallback onCreated;
|
||||||
const _CreateGroupInline({required this.onCreated});
|
const _CreateGroupInline({required this.onCreated});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<_CreateGroupInline> createState() => _CreateGroupInlineState();
|
ConsumerState<_CreateGroupInline> createState() => _CreateGroupInlineState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _CreateGroupInlineState extends State<_CreateGroupInline> {
|
class _CreateGroupInlineState extends ConsumerState<_CreateGroupInline> {
|
||||||
final _nameCtrl = TextEditingController();
|
final _nameCtrl = TextEditingController();
|
||||||
final _descCtrl = TextEditingController();
|
final _descCtrl = TextEditingController();
|
||||||
bool _privacy = false;
|
bool _privacy = false;
|
||||||
GroupCategory _category = GroupCategory.general;
|
group_models.GroupCategory _category = group_models.GroupCategory.general;
|
||||||
bool _submitting = false;
|
bool _submitting = false;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|
@ -2434,7 +2434,7 @@ class _CreateGroupInlineState extends State<_CreateGroupInline> {
|
||||||
await api.createGroup(
|
await api.createGroup(
|
||||||
name: _nameCtrl.text.trim(),
|
name: _nameCtrl.text.trim(),
|
||||||
description: _descCtrl.text.trim(),
|
description: _descCtrl.text.trim(),
|
||||||
category: GroupCategory.fromString(_category.value),
|
category: _category,
|
||||||
isPrivate: _privacy,
|
isPrivate: _privacy,
|
||||||
);
|
);
|
||||||
widget.onCreated();
|
widget.onCreated();
|
||||||
|
|
@ -2494,12 +2494,12 @@ class _CreateGroupInlineState extends State<_CreateGroupInline> {
|
||||||
Row(children: [
|
Row(children: [
|
||||||
Text('Visibility:', style: TextStyle(fontSize: 13, color: SojornColors.basicBlack.withValues(alpha: 0.6))),
|
Text('Visibility:', style: TextStyle(fontSize: 13, color: SojornColors.basicBlack.withValues(alpha: 0.6))),
|
||||||
const SizedBox(width: 12),
|
const SizedBox(width: 12),
|
||||||
ChoiceChip(label: const Text('Public'), selected: _privacy == 'public',
|
ChoiceChip(label: const Text('Public'), selected: !_privacy,
|
||||||
onSelected: (_) => setState(() => _privacy = 'public'),
|
onSelected: (_) => setState(() => _privacy = false),
|
||||||
selectedColor: AppTheme.brightNavy.withValues(alpha: 0.15)),
|
selectedColor: AppTheme.brightNavy.withValues(alpha: 0.15)),
|
||||||
const SizedBox(width: 8),
|
const SizedBox(width: 8),
|
||||||
ChoiceChip(label: const Text('Private'), selected: _privacy == 'private',
|
ChoiceChip(label: const Text('Private'), selected: _privacy,
|
||||||
onSelected: (_) => setState(() => _privacy = 'private'),
|
onSelected: (_) => setState(() => _privacy = true),
|
||||||
selectedColor: AppTheme.brightNavy.withValues(alpha: 0.15)),
|
selectedColor: AppTheme.brightNavy.withValues(alpha: 0.15)),
|
||||||
]),
|
]),
|
||||||
const SizedBox(height: 14),
|
const SizedBox(height: 14),
|
||||||
|
|
@ -2508,24 +2508,17 @@ class _CreateGroupInlineState extends State<_CreateGroupInline> {
|
||||||
Wrap(
|
Wrap(
|
||||||
spacing: 6,
|
spacing: 6,
|
||||||
runSpacing: 6,
|
runSpacing: 6,
|
||||||
children: GroupCategory.values.map((cat) => ChoiceChip(
|
children: group_models.GroupCategory.values.map((cat) => ChoiceChip(
|
||||||
label: Row(
|
label: Text(cat.displayName),
|
||||||
mainAxisSize: MainAxisSize.min,
|
|
||||||
children: [
|
|
||||||
Icon(cat.icon, size: 14, color: _category == cat ? SojornColors.basicWhite : cat.color),
|
|
||||||
const SizedBox(width: 4),
|
|
||||||
Text(cat.displayName),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
selected: _category == cat,
|
selected: _category == cat,
|
||||||
onSelected: (_) => setState(() => _category = cat),
|
onSelected: (_) => setState(() => _category = cat),
|
||||||
selectedColor: cat.color,
|
selectedColor: AppTheme.navyBlue,
|
||||||
labelStyle: TextStyle(
|
labelStyle: TextStyle(
|
||||||
fontSize: 12, fontWeight: FontWeight.w600,
|
fontSize: 12, fontWeight: FontWeight.w600,
|
||||||
color: _category == cat ? SojornColors.basicWhite : cat.color,
|
color: _category == cat ? Colors.white : Colors.black87,
|
||||||
),
|
),
|
||||||
backgroundColor: cat.color.withValues(alpha: 0.08),
|
backgroundColor: AppTheme.navyBlue.withValues(alpha: 0.08),
|
||||||
side: BorderSide(color: cat.color.withValues(alpha: 0.2)),
|
side: BorderSide(color: AppTheme.navyBlue.withValues(alpha: 0.2)),
|
||||||
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)),
|
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)),
|
||||||
showCheckmark: false,
|
showCheckmark: false,
|
||||||
visualDensity: VisualDensity.compact,
|
visualDensity: VisualDensity.compact,
|
||||||
|
|
|
||||||
|
|
@ -730,15 +730,15 @@ class _CapsuleCard extends StatelessWidget {
|
||||||
}
|
}
|
||||||
|
|
||||||
// ── Create Group Form (non-encrypted, public/private) ─────────────────
|
// ── Create Group Form (non-encrypted, public/private) ─────────────────
|
||||||
class _CreateGroupForm extends StatefulWidget {
|
class _CreateGroupForm extends ConsumerStatefulWidget {
|
||||||
final VoidCallback onCreated;
|
final VoidCallback onCreated;
|
||||||
const _CreateGroupForm({required this.onCreated});
|
const _CreateGroupForm({required this.onCreated});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<_CreateGroupForm> createState() => _CreateGroupFormState();
|
ConsumerState<_CreateGroupForm> createState() => _CreateGroupFormState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _CreateGroupFormState extends State<_CreateGroupForm> {
|
class _CreateGroupFormState extends ConsumerState<_CreateGroupForm> {
|
||||||
final _nameCtrl = TextEditingController();
|
final _nameCtrl = TextEditingController();
|
||||||
final _descCtrl = TextEditingController();
|
final _descCtrl = TextEditingController();
|
||||||
bool _privacy = false;
|
bool _privacy = false;
|
||||||
|
|
@ -813,15 +813,15 @@ class _CreateGroupFormState extends State<_CreateGroupForm> {
|
||||||
const SizedBox(width: 12),
|
const SizedBox(width: 12),
|
||||||
ChoiceChip(
|
ChoiceChip(
|
||||||
label: const Text('Public'),
|
label: const Text('Public'),
|
||||||
selected: _privacy == 'public',
|
selected: !_privacy,
|
||||||
onSelected: (_) => setState(() => _privacy = 'public'),
|
onSelected: (_) => setState(() => _privacy = false),
|
||||||
selectedColor: AppTheme.brightNavy.withValues(alpha: 0.15),
|
selectedColor: AppTheme.brightNavy.withValues(alpha: 0.15),
|
||||||
),
|
),
|
||||||
const SizedBox(width: 8),
|
const SizedBox(width: 8),
|
||||||
ChoiceChip(
|
ChoiceChip(
|
||||||
label: const Text('Private'),
|
label: const Text('Private'),
|
||||||
selected: _privacy == 'private',
|
selected: _privacy,
|
||||||
onSelected: (_) => setState(() => _privacy = 'private'),
|
onSelected: (_) => setState(() => _privacy = true),
|
||||||
selectedColor: AppTheme.brightNavy.withValues(alpha: 0.15),
|
selectedColor: AppTheme.brightNavy.withValues(alpha: 0.15),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|
|
||||||
|
|
@ -395,7 +395,7 @@ class CompactGroupCard extends StatelessWidget {
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
if (widget.showReason && widget.reason != null) ...[
|
if (showReason && reason != null) ...[
|
||||||
const SizedBox(height: 6),
|
const SizedBox(height: 6),
|
||||||
Container(
|
Container(
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 6, vertical: 2),
|
padding: const EdgeInsets.symmetric(horizontal: 6, vertical: 2),
|
||||||
|
|
@ -404,7 +404,7 @@ class CompactGroupCard extends StatelessWidget {
|
||||||
borderRadius: BorderRadius.circular(6),
|
borderRadius: BorderRadius.circular(6),
|
||||||
),
|
),
|
||||||
child: Text(
|
child: Text(
|
||||||
widget.reason!,
|
reason!,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 9,
|
fontSize: 9,
|
||||||
color: Colors.blue[700],
|
color: Colors.blue[700],
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue