From bf8c451f9b5ec0e5fb013b7efd65938de49d7a56 Mon Sep 17 00:00:00 2001 From: laiiihz Date: Thu, 15 Oct 2020 13:23:18 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9B=B4=E6=92=AD=E6=B7=BB=E5=8A=A0=E5=95=86?= =?UTF-8?q?=E5=93=81=E6=90=9C=E7=B4=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../live_stream/pick_search_goods_page.dart | 93 ++++++++++++++++++- 1 file changed, 89 insertions(+), 4 deletions(-) diff --git a/lib/pages/live/live_stream/pick_search_goods_page.dart b/lib/pages/live/live_stream/pick_search_goods_page.dart index e3e82b9..e0c75b3 100644 --- a/lib/pages/live/live_stream/pick_search_goods_page.dart +++ b/lib/pages/live/live_stream/pick_search_goods_page.dart @@ -1,33 +1,118 @@ import 'package:flutter/material.dart'; +import 'package:recook/constants/api.dart'; import 'package:recook/constants/header.dart'; +import 'package:recook/manager/http_manager.dart'; +import 'package:recook/pages/live/live_stream/pick_view/live_goods_card.dart'; +import 'package:recook/pages/live/models/goods_window_model.dart'; import 'package:recook/widgets/recook_back_button.dart'; +import 'package:recook/widgets/refresh_widget.dart'; class PickSearchGoodsPage extends StatefulWidget { - PickSearchGoodsPage({Key key}) : super(key: key); + final Function(GoodsList model) onPick; + PickSearchGoodsPage({Key key, this.onPick}) : super(key: key); @override _PickSearchGoodsPageState createState() => _PickSearchGoodsPageState(); } class _PickSearchGoodsPageState extends State { + GSRefreshController _controller = GSRefreshController(); + TextEditingController _editingController = TextEditingController(); + int _page = 1; + List _goodsModels = []; + + @override + void dispose() { + _controller?.dispose(); + _editingController?.dispose(); + super.dispose(); + } + @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( backgroundColor: Colors.white, leading: RecookBackButton(), + actions: [rWBox(10)], title: TextField( + controller: _editingController, + style: TextStyle( + color: Color(0xFF333333), + ), + onEditingComplete: () { + _controller.requestRefresh(); + }, decoration: InputDecoration( - fillColor: Colors.black.withOpacity(0.2), + fillColor: Colors.black.withOpacity(0.1), filled: true, isDense: true, - contentPadding: EdgeInsets.all(rSize(15)), - border: OutlineInputBorder(), + contentPadding: EdgeInsets.all(rSize(10)), + border: OutlineInputBorder( + borderSide: BorderSide( + width: 0, + color: Colors.transparent, + ), + borderRadius: BorderRadius.circular(rSize(30)), + ), + focusedBorder: OutlineInputBorder( + borderSide: BorderSide( + width: 0, + color: Colors.transparent, + ), + borderRadius: BorderRadius.circular(rSize(30)), + ), ), ), centerTitle: true, titleSpacing: 0, ), + body: RefreshWidget( + controller: _controller, + onRefresh: () { + _page = 1; + getModels().then((models) { + setState(() { + _goodsModels = models; + }); + _controller.refreshCompleted(); + }); + }, + onLoadMore: () { + _page++; + getModels().then((models) { + setState(() { + _goodsModels.addAll(models); + }); + _controller.loadComplete(); + }); + }, + body: ListView.builder( + itemBuilder: (context, index) { + return LiveGoodsCard( + onPick: () { + Navigator.pop(context); + }, + model: _goodsModels[index]); + }, + itemCount: _goodsModels.length, + ), + ), ); } + + Future> getModels() async { + ResultData resultData = await HttpManager.post(LiveAPI.goodsList, { + 'keyword': _editingController.text, + 'page': _page, + 'limit': 15, + }); + + if (resultData?.data['data']['list'] == null) + return []; + else + return (resultData?.data['data']['list'] as List) + .map((e) => GoodsList.fromJson(e)) + .toList(); + } }