import 'package:PiliPlus/common/widgets/scroll_physics.dart'; import 'package:PiliPlus/models/common/member/search_type.dart'; import 'package:PiliPlus/pages/member_search/child/view.dart'; import 'package:PiliPlus/pages/member_search/controller.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; class MemberSearchPage extends StatefulWidget { const MemberSearchPage({super.key}); @override State createState() => _MemberSearchPageState(); } class _MemberSearchPageState extends State { final _controller = Get.put(MemberSearchController(), tag: Utils.generateRandomString(8)); @override Widget build(BuildContext context) { return Scaffold( resizeToAvoidBottomInset: false, appBar: AppBar( actions: [ IconButton( tooltip: '搜索', onPressed: _controller.submit, icon: const Icon(Icons.search, size: 22), ), const SizedBox(width: 10) ], title: TextField( autofocus: true, focusNode: _controller.focusNode, controller: _controller.editingController, textInputAction: TextInputAction.search, textAlignVertical: TextAlignVertical.center, decoration: InputDecoration( hintText: '搜索', border: InputBorder.none, suffixIcon: IconButton( tooltip: '清空', icon: const Icon(Icons.clear, size: 22), onPressed: _controller.onClear, ), ), onSubmitted: (value) => _controller.submit(), onChanged: (value) { if (value.isEmpty) { _controller.hasData.value = false; } }, ), ), body: SafeArea( top: false, bottom: false, child: Stack( clipBehavior: Clip.none, children: [ Obx(() { return Opacity( opacity: _controller.hasData.value ? 1 : 0, child: Column( children: [ TabBar( controller: _controller.tabController, tabs: [ Obx( () => Tab( text: '视频 ${_controller.counts[0] != -1 ? _controller.counts[0] : ''}', ), ), Obx( () => Tab( text: '动态 ${_controller.counts[1] != -1 ? _controller.counts[1] : ''}', ), ), ], ), Expanded( child: tabBarView( controller: _controller.tabController, children: [ MemberSearchChildPage( controller: _controller.arcCtr, searchType: MemberSearchType.archive, ), MemberSearchChildPage( controller: _controller.dynCtr, searchType: MemberSearchType.dynamic, ), ], ), ), ], ), ); }), Obx( () => _controller.hasData.value ? const SizedBox.shrink() : FractionallySizedBox( heightFactor: 0.5, widthFactor: 1.0, child: Center( child: Text( '搜索「${_controller.uname}」的动态、视频', textAlign: TextAlign.center, ), ), ), ), ], ), ), ); } }