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 createState() => _OrderInfoPageState(); } class _OrderInfoPageState extends State { GymHistoryItemDetail? detail; final _scrollController = ScrollController(); @override void initState() { super.initState(); setState(() { detail = item; }); debugPrint("AAAAAAAAAAAA${detail?.toRawJson()}"); } Future _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}_'), // ], // ), // ), // ), // ], // ), // ), // ), // ), // ], // ), // ); // } }