import 'package:flutter/material.dart'; import 'package:liftmanager/internal/news/news_router.dart'; import 'package:liftmanager/internal/news/model/news_comm_entity.dart'; import 'package:liftmanager/mvp/base_page_state.dart'; import 'package:liftmanager/internal/search/model/search_entity.dart'; import 'package:liftmanager/internal/search/presenter/base_list_provider.dart'; import 'package:liftmanager/internal/search/presenter/search_presenter.dart'; import 'package:liftmanager/res/resources.dart'; import 'package:liftmanager/routers/fluro_navigator.dart'; import 'package:liftmanager/utils/theme_utils.dart'; import 'package:liftmanager/widgets/my_refresh_list.dart'; import 'package:liftmanager/widgets/search_app_bar.dart'; import 'package:liftmanager/widgets/state_layout.dart'; import 'package:provider/provider.dart' as p; class SearchPage extends StatefulWidget { @override SearchPageState createState() => SearchPageState(); } class SearchPageState extends BasePageState { BaseListProvider provider = BaseListProvider(); String _keyword=""; int _page = 1; @override void initState() { /// 默认为加载中状态,本页面场景默认为空 provider.setStateTypeNotNotify(StateType.loading); super.initState(); _onRefresh(); } @override Widget build(BuildContext context) { return p.ChangeNotifierProvider>( create: (_) => provider, child: Scaffold( appBar: SearchAppBar( hintText: "请输入需要搜索的内容", onPressed: (text){ if (text.isEmpty){ showToast("搜索关键字不能为空!"); return; } FocusScope.of(context).unfocus(); _keyword = text; provider.setStateType(StateType.loading); _page = 1; presenter.search(context,_keyword, _page, true); }, ), body: p.Consumer>( builder: (_, provider, __) { bool isDark = ThemeUtils.isDark(context); return MyListView( key: Key('order_search_list'), itemCount: provider.list.length, stateType: provider.stateType, onRefresh: _onRefresh, loadMore: _loadMore, hasMore: provider.hasMore, itemBuilder: (_, index){ return InkWell( onTap: () { NavigatorUtils.push(context, "${NewsRouter.newsDetail}?id=${provider.list[index].id}"); }, child: Container( decoration: BoxDecoration( color: isDark?Colours.dark_bg_color:Colors.white, border: Border( bottom: BorderSide( width: 0.5, color: Colours.line)), ), padding: const EdgeInsets.all(15), child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ Text( "${provider.list[index].title}", style: TextStyle(fontSize: 15,color: isDark?Colours.dark_text:Colours.text), // overflow: TextOverflow.ellipsis, ), Gaps.vGap12, Text( "${provider.list[index].releaseUser}·阅读${provider.list[index].lookNum}次·点赞${provider.list[index].likeNum}", style: TextStyle( fontSize: 11, color: Colours.text_gray), ) ], ), ), ); }, ); } ), ), ); } Future _onRefresh() async { _page = 1; await presenter.search(context,_keyword, _page, false); } Future _loadMore() async { _page++; await presenter.search(context,_keyword, _page, false); } @override SearchPresenter createPresenter() { return SearchPresenter(); } }