179 lines
6.3 KiB
Dart
179 lines
6.3 KiB
Dart
// import 'package:flutter/cupertino.dart';
|
|
// import 'package:flutter/material.dart';
|
|
// import 'package:flutter/src/widgets/framework.dart';
|
|
// import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
// import 'package:google_fonts/google_fonts.dart';
|
|
//
|
|
// import 'package:flutter_reorderable_grid_view/widgets/reorderable_builder.dart';
|
|
//
|
|
// import '../../../../data/models/bar_data.dart';
|
|
// import '../../../../models/chart_item.dart';
|
|
// import '../../../providers/chart_provider.dart';
|
|
// import '../../../themes/charts/barChart.dart';
|
|
//
|
|
// enum ReorderableType {
|
|
// gridView,
|
|
// gridViewCount,
|
|
// gridViewExtent,
|
|
// gridViewBuilder,
|
|
// }
|
|
//
|
|
// class BussinessDashboard extends ConsumerStatefulWidget {
|
|
// const BussinessDashboard({super.key});
|
|
//
|
|
// @override
|
|
// ConsumerState<BussinessDashboard> createState() => _BussinessDashboardState();
|
|
// }
|
|
//
|
|
// class _BussinessDashboardState extends ConsumerState<BussinessDashboard> {
|
|
// // final GlobalKey<SliverReorderableGridState> _gridKey = GlobalKey();
|
|
// final GlobalKey _gridKey = GlobalKey();
|
|
// ReorderableType reorderableType = ReorderableType.gridViewBuilder;
|
|
//
|
|
// final ScrollController _scrollController = ScrollController();
|
|
//
|
|
// List<String> items = ['A', 'B', 'C', 'D', 'E'];
|
|
//
|
|
// @override
|
|
// Widget build(BuildContext context) {
|
|
// List<ChartItem> chartItems = ref.watch(chartLayoutProvider);
|
|
//
|
|
// final charts = ref.watch(chartLayoutProvider);
|
|
// final notifier = ref.read(chartLayoutProvider.notifier);
|
|
// // void reorder(List<String> newItems) {
|
|
// // setState(() {
|
|
// // // final removed = items.removeAt(oldIndex);
|
|
// // items.insert(newItems);
|
|
// // });
|
|
// // }
|
|
//
|
|
// // void reorder(List<String> newItems) {
|
|
// // state = newItems; // or whatever logic you use
|
|
// // }
|
|
//
|
|
// final children = items
|
|
// .map(
|
|
// (e) => Container(
|
|
// key: ValueKey(e),
|
|
// color: Colors.blueAccent,
|
|
// child: Center(
|
|
// child: Text(
|
|
// e,
|
|
// style: TextStyle(color: Colors.white, fontSize: 24),
|
|
// ),
|
|
// ),
|
|
// ),
|
|
// )
|
|
// .toList();
|
|
//
|
|
// // Determine the current layout based on the number of items
|
|
// // Since you only have 3 items, you will have to create a separate state
|
|
// // to track the 1x3 (default) vs the custom 2-stacked + 1 layout
|
|
// // after the drag action.
|
|
//
|
|
// // For this example, we will stick to a reorderable grid/row layout.
|
|
//
|
|
// return Container(
|
|
// margin: EdgeInsets.all(10),
|
|
// child: Column(
|
|
// crossAxisAlignment: CrossAxisAlignment.start,
|
|
// children: [
|
|
// Container(
|
|
// height: 400, // fixed height to allow drag detection
|
|
// padding: EdgeInsets.all(12),
|
|
// child: ReorderableBuilder<ChartItem>(
|
|
// enableLongPress: true,
|
|
// enableDraggable: true,
|
|
// children: chartItems
|
|
// .map(
|
|
// (item) => Container(
|
|
// key: ValueKey(item.id),
|
|
// margin: EdgeInsets.all(4),
|
|
// color: Colors.blueAccent,
|
|
// alignment: Alignment.center,
|
|
// child: Text(
|
|
// item.title,
|
|
// style: TextStyle(color: Colors.white, fontSize: 24),
|
|
// ),
|
|
// ),
|
|
// )
|
|
// .toList(),
|
|
// onReorder: (reorderCallback) {
|
|
// final newList = reorderCallback(chartItems).cast<ChartItem>();
|
|
// ref.read(chartLayoutProvider.notifier).state = newList;
|
|
// },
|
|
// builder: (children) {
|
|
// return GridView.count(
|
|
// crossAxisCount: 2,
|
|
// mainAxisSpacing: 8,
|
|
// crossAxisSpacing: 8,
|
|
// children: children,
|
|
// shrinkWrap: true,
|
|
// physics: NeverScrollableScrollPhysics(),
|
|
// );
|
|
// },
|
|
// ),
|
|
// ),
|
|
//
|
|
// // Container(
|
|
// // height: 400,
|
|
// // child: ReorderableBuilder<ChartItem>(
|
|
// // scrollController: _scrollController,
|
|
// // enableLongPress: true, // ✅ enable drag on long press
|
|
// // enableDraggable: true,
|
|
// // children: chartItems
|
|
// // .map(
|
|
// // (item) => Container(
|
|
// // key: ValueKey(item.id),
|
|
// // color: Colors.blueAccent,
|
|
// // child: Center(
|
|
// // child: Text(
|
|
// // item.title, // show chart name
|
|
// // style: TextStyle(color: Colors.white, fontSize: 24),
|
|
// // ),
|
|
// // ),
|
|
// // ),
|
|
// // )
|
|
// // .toList(),
|
|
// // onReorder: (reorderCallback) {
|
|
// // final newList = reorderCallback(chartItems).cast<ChartItem>();
|
|
// // ref.read(chartLayoutProvider.notifier).state = newList;
|
|
// // },
|
|
// // builder: (children) {
|
|
// // return GridView.count(
|
|
// // crossAxisCount: 2,
|
|
// // mainAxisSpacing: 8,
|
|
// // crossAxisSpacing: 8,
|
|
// // padding: const EdgeInsets.all(12),
|
|
// // children: children,
|
|
// // );
|
|
// // },
|
|
// // ),
|
|
// // ),
|
|
// ],
|
|
// ),
|
|
// );
|
|
// }
|
|
// }
|
|
//
|
|
// // Placeholder for your chart widget
|
|
// class CustomBarChart extends StatelessWidget {
|
|
// final List<BarData> dataList;
|
|
// final List<String> labels;
|
|
//
|
|
// const CustomBarChart({required this.dataList, required this.labels, Key? key})
|
|
// : super(key: key);
|
|
//
|
|
// @override
|
|
// Widget build(BuildContext context) {
|
|
// // Implement your chart rendering here
|
|
// return Center(child: Text("Chart: ${dataList[0].value}"));
|
|
// }
|
|
// }
|
|
//
|
|
// final _headerStyle2 = GoogleFonts.poppins(
|
|
// fontSize: 12,
|
|
// color: Colors.black,
|
|
// fontWeight: FontWeight.w500,
|
|
// );
|