Feat: order info page
This commit is contained in:
@@ -4,6 +4,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:gymlink_module_web/components/app_bar.dart';
|
||||
import 'package:gymlink_module_web/components/heading.dart';
|
||||
import 'package:gymlink_module_web/components/history_item_card.dart';
|
||||
import 'package:gymlink_module_web/interfaces/items.dart';
|
||||
import 'package:gymlink_module_web/tools/relative.dart';
|
||||
import 'package:lazy_load_scrollview/lazy_load_scrollview.dart';
|
||||
|
||||
@@ -45,13 +46,16 @@ class HistoryPage extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _HistoryPageState extends State<HistoryPage> {
|
||||
List<Map<String, String>> my_orders = [];
|
||||
List<GymHistoryItem> my_orders = [];
|
||||
late Timer _updateTimer;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
my_orders = orders;
|
||||
my_orders = [
|
||||
GymHistoryItem(
|
||||
id: '123', date: '01.01.1970', sum: '120', photo: 'product.png')
|
||||
];
|
||||
ordersRefresh();
|
||||
}
|
||||
|
||||
@@ -63,12 +67,8 @@ class _HistoryPageState extends State<HistoryPage> {
|
||||
await Future.delayed(const Duration(milliseconds: 1000));
|
||||
setState(() {
|
||||
my_orders.add(
|
||||
{
|
||||
"image": "product.png",
|
||||
"price": "120",
|
||||
"id": "666666",
|
||||
"date": "11.09.2001"
|
||||
},
|
||||
GymHistoryItem(
|
||||
id: '123', date: '01.01.1970', sum: '120', photo: 'product.png'),
|
||||
);
|
||||
});
|
||||
}
|
||||
@@ -112,14 +112,13 @@ class _HistoryPageState extends State<HistoryPage> {
|
||||
itemBuilder: (context, index) {
|
||||
final item = my_orders[index];
|
||||
return HistoryItemCard(
|
||||
id: item['id']!,
|
||||
cost: item['price']!,
|
||||
date: item['date']!,
|
||||
id: item.id,
|
||||
cost: item.sum,
|
||||
date: item.date,
|
||||
image: Image(
|
||||
image: AssetImage('assets/${item['image']!}'),
|
||||
image: AssetImage('assets/${item.photo}'),
|
||||
width: 50,
|
||||
),
|
||||
status: OrderStatus.completed,
|
||||
);
|
||||
},
|
||||
),
|
||||
|
||||
219
lib/pages/order_info.dart
Normal file
219
lib/pages/order_info.dart
Normal file
@@ -0,0 +1,219 @@
|
||||
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}_'),
|
||||
// ],
|
||||
// ),
|
||||
// ),
|
||||
// ),
|
||||
// ],
|
||||
// ),
|
||||
// ),
|
||||
// ),
|
||||
// ),
|
||||
// ],
|
||||
// ),
|
||||
// );
|
||||
// }
|
||||
}
|
||||
Reference in New Issue
Block a user