Files
GymLink_Flutter/lib/pages/order_info.dart
2024-06-16 23:33:38 +03:00

220 lines
9.1 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import 'package:flutter/material.dart';
import 'package:flutter_markdown/flutter_markdown.dart';
import 'package:gymlink_module_web/components/app_bar.dart';
import 'package:gymlink_module_web/components/heading.dart';
import 'package:gymlink_module_web/interfaces/items.dart';
import 'package:lazy_load_scrollview/lazy_load_scrollview.dart';
final GymHistoryItemDetail item = GymHistoryItemDetail.fromJson({
"id": "12345",
"date": "01.01.1970",
"sum": "45000",
"pay_url": "url",
"receiver": "Иванов Иван Иванович",
"email": "a@a.ru",
"address": "г. Москва, ул. Пушкина, д. 17",
"providers": [
{
"id": "123",
"name": "Поставщик 1",
"status": "Доставлен",
"items": [
{"photo": "url", "id": "123", "count": 2, "price": "15000"},
{"photo": "url", "id": "123", "count": 2, "price": "15000"}
]
},
{
"id": "123",
"name": "Поставщик 1",
"status": "Доставляется",
"items": [
{"photo": "url", "id": "123", "count": 2, "price": "15000"}
]
}
]
});
//FIXME: Починить скролл
class OrderInfoPage extends StatefulWidget {
final String id;
const OrderInfoPage({super.key, required this.id});
@override
State<StatefulWidget> createState() => _OrderInfoPageState();
}
class _OrderInfoPageState extends State<OrderInfoPage> {
GymHistoryItemDetail? detail;
final _scrollController = ScrollController();
@override
void initState() {
super.initState();
setState(() {
detail = item;
});
debugPrint("AAAAAAAAAAAA${detail?.toRawJson()}");
}
Future<void> _onRefresh() {
return Future.delayed(const Duration(milliseconds: 1000));
}
Widget _buildContent() {
return Column(
children: [
GymLinkHeader(title: "Заказ #${detail?.id} от ${detail?.date}"),
Expanded(
child: LazyLoadScrollView(
onEndOfPage: _onRefresh,
child: Scrollbar(
controller: _scrollController,
child: ListView(
controller: _scrollController,
children: [
ListView.builder(
itemCount: 3,
physics: const NeverScrollableScrollPhysics(),
shrinkWrap: true,
itemBuilder: (context, index) {
final provider = detail!.providers[0];
return const Card(
child: Text('test'),
);
},
),
Expanded(
child: Card(
elevation: 4,
child: Padding(
padding: const EdgeInsetsDirectional.symmetric(
horizontal: 10, vertical: 20),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
MarkdownBody(
data:
"### Адрес получателя: _${detail!.address}_"),
Markdown(data: '### Почта: _${detail!.email}_'),
// Markdown(
// data: '### ФИО: _${detail!.receiver}_'),
],
),
),
),
),
],
),
))),
],
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: const GymLinkAppBar(),
body: detail == null
? const Center(child: CircularProgressIndicator())
: _buildContent(),
);
}
// @override
// Widget build(BuildContext context) {
// return Scaffold(
// appBar: const GymLinkAppBar(),
// body: detail == null
// ? const Center(child: CircularProgressIndicator())
// : Column(
// mainAxisAlignment: MainAxisAlignment.start,
// children: [
// GymLinkHeader(title: "Заказ #${detail?.id} от ${detail?.date}"),
// Expanded(
// child: RefreshIndicator(
// onRefresh: () => _onRefresh(),
// edgeOffset: 55,
// child: Scrollbar(
// controller: _scrollController,
// child: ListView(
// shrinkWrap: true,
// controller: _scrollController,
// children: [
// detail != null
// ? ListView.builder(
// itemCount: (detail!.providers.length + 1),
// shrinkWrap: true,
// physics: const NeverScrollableScrollPhysics(),
// itemBuilder: (context, index) {
// final provider = detail!.providers[0];
// return Card(
// elevation: 3,
// child: Column(
// children: [
// MarkdownBody(
// data: '# ${provider.name}'),
// MarkdownBody(
// data:
// '## Статус: ${provider.status}'),
// const MarkdownBody(
// data: '### Состав:'),
// for (final item in provider.items)
// OrderDetailCardItemCard(
// image: FutureBuilder(
// future: precacheImage(
// const AssetImage(
// 'assets/product.png'),
// context),
// builder: (context, snapshot) {
// if (snapshot
// .connectionState ==
// ConnectionState.done) {
// return const Image(
// image: AssetImage(
// 'assets/product.png'),
// width: 50,
// );
// } else {
// return const CircularProgressIndicator();
// }
// },
// ),
// name: 'Протеин',
// count: item.count,
// price: double.parse(item.price),
// ),
// ],
// ),
// );
// },
// )
// : const SizedBox.shrink(),
// Card(
// elevation: 4,
// child: Padding(
// padding: const EdgeInsetsDirectional.symmetric(
// horizontal: 10, vertical: 20),
// child: Column(
// mainAxisSize: MainAxisSize.min,
// children: [
// MarkdownBody(
// data:
// "### Адрес получателя: _${detail!.address}_"),
// Markdown(
// data: '### Почта: _${detail!.email}_'),
// // Markdown(
// // data: '### ФИО: _${detail!.receiver}_'),
// ],
// ),
// ),
// ),
// ],
// ),
// ),
// ),
// ),
// ],
// ),
// );
// }
}