Files
flutter_server_box/lib/view/page/setting/srv_detail_seq.dart
2023-12-15 12:01:55 +08:00

65 lines
1.6 KiB
Dart

import 'package:flutter/material.dart';
import 'package:toolbox/core/extension/context/locale.dart';
import 'package:toolbox/data/res/store.dart';
import '../../../core/extension/order.dart';
import '../../widget/appbar.dart';
import '../../widget/cardx.dart';
class ServerDetailOrderPage extends StatefulWidget {
const ServerDetailOrderPage({super.key});
@override
State<ServerDetailOrderPage> createState() => _ServerDetailOrderPageState();
}
class _ServerDetailOrderPageState extends State<ServerDetailOrderPage> {
final Order<String> _cardsOrder = [];
@override
void initState() {
super.initState();
_cardsOrder.addAll(Stores.setting.detailCardOrder.fetch());
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: CustomAppBar(
title: Text(l10n.serverDetailOrder),
),
body: _buildBody(),
);
}
Widget _buildBody() {
return ReorderableListView.builder(
footer: const SizedBox(height: 77),
onReorder: (oldIndex, newIndex) => setState(() {
_cardsOrder.move(
oldIndex,
newIndex,
property: Stores.setting.detailCardOrder,
);
}),
padding: const EdgeInsets.all(17),
buildDefaultDragHandles: false,
itemBuilder: (_, index) => _buildItem(index, _cardsOrder[index]),
itemCount: _cardsOrder.length,
);
}
Widget _buildItem(int index, String id) {
return ReorderableDelayedDragStartListener(
key: ValueKey('$index'),
index: index,
child: CardX(
child: ListTile(
title: Text(id),
trailing: const Icon(Icons.drag_handle),
),
),
);
}
}