chore: serval fixes

This commit is contained in:
Simon Ding
2024-07-13 18:46:24 +08:00
parent fca5832f58
commit cd3c4cb65b
4 changed files with 31 additions and 14 deletions

View File

@@ -1,11 +1,11 @@
import 'dart:js_interop_unsafe';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:ui/providers/activity.dart'; import 'package:ui/providers/activity.dart';
class ActivityPage extends ConsumerWidget { class ActivityPage extends ConsumerWidget {
static const route = "/activities"; static const route = "/activities";
const ActivityPage({super.key});
@override @override
Widget build(BuildContext context, WidgetRef ref) { Widget build(BuildContext context, WidgetRef ref) {
var activitiesWatcher = ref.watch(activitiesDataProvider); var activitiesWatcher = ref.watch(activitiesDataProvider);
@@ -23,7 +23,7 @@ class ActivityPage extends ConsumerWidget {
DataColumn(label: Text("操作")) DataColumn(label: Text("操作"))
], ],
rows: List<DataRow>.generate(activities.length, (i) { rows: List<DataRow>.generate(activities.length, (i) {
var activity = activities[activities.length - i -1]; var activity = activities[activities.length - i - 1];
return DataRow(cells: [ return DataRow(cells: [
DataCell(Text("${activity.id}")), DataCell(Text("${activity.id}")),

View File

@@ -43,7 +43,8 @@ class SearchPageData extends AutoDisposeAsyncNotifier<List<SearchResult>> {
ref.invalidate(welcomePageDataProvider); ref.invalidate(welcomePageDataProvider);
} }
void queryResults(String q) async { Future<void> queryResults(String q) async {
list = List.empty(growable: true);
final dio = await APIs.getDio(); final dio = await APIs.getDio();
var resp = await dio.get(APIs.searchUrl, queryParameters: {"query": q}); var resp = await dio.get(APIs.searchUrl, queryParameters: {"query": q});
//var dy = jsonDecode(resp.data.toString()); //var dy = jsonDecode(resp.data.toString());

View File

@@ -18,6 +18,7 @@ class SearchPage extends ConsumerStatefulWidget {
class _SearchPageState extends ConsumerState<SearchPage> { class _SearchPageState extends ConsumerState<SearchPage> {
List<dynamic> list = List.empty(); List<dynamic> list = List.empty();
Future<void>? _pendingFuture;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
var searchList = ref.watch(searchPageDataProvider); var searchList = ref.watch(searchPageDataProvider);
@@ -69,22 +70,38 @@ class _SearchPageState extends ConsumerState<SearchPage> {
}, },
error: (err, trace) => [Text("$err")], error: (err, trace) => [Text("$err")],
loading: () => [const CircularProgressIndicator()]); loading: () => [const CircularProgressIndicator()]);
var f = FutureBuilder(
// We listen to the pending operation, to update the UI accordingly.
future: _pendingFuture,
builder: (context, snapshot) {
if (snapshot.connectionState != ConnectionState.done &&
snapshot.connectionState != ConnectionState.none) {
return const Center(
child: SizedBox(
width: 30, height: 30, child: CircularProgressIndicator()));
}
return ListView(
children: res,
);
});
return Column( return Column(
children: [ children: [
TextField( TextField(
autofocus: true, autofocus: true,
onSubmitted: (value) { onSubmitted: (value) async {
var f =
ref.read(searchPageDataProvider.notifier).queryResults(value); ref.read(searchPageDataProvider.notifier).queryResults(value);
setState(() {
_pendingFuture = f;
});
}, },
decoration: const InputDecoration( decoration: const InputDecoration(
labelText: "搜索", labelText: "搜索",
hintText: "搜索剧集名称", hintText: "搜索剧集名称",
prefixIcon: Icon(Icons.search)), prefixIcon: Icon(Icons.search)),
), ),
Expanded( Expanded(child: f)
child: ListView(
children: res,
))
], ],
); );
} }
@@ -151,9 +168,8 @@ class _SearchPageState extends ConsumerState<SearchPage> {
), ),
child: const Text('确定'), child: const Text('确定'),
onPressed: () { onPressed: () {
ref ref.read(searchPageDataProvider.notifier).submit2Watchlist(
.read(searchPageDataProvider.notifier) item.id!, _storageSelected, _resSelected);
.submit2Watchlist(item.id!, _storageSelected, _resSelected);
Navigator.of(context).pop(); Navigator.of(context).pop();
}, },
), ),

View File

@@ -124,7 +124,7 @@ class _TvDetailsPageState extends ConsumerState<TvDetailsPage> {
Text( Text(
"${details!.name}", "${details!.name}",
style: const TextStyle( style: const TextStyle(
fontSize: 14, fontSize: 20,
fontWeight: FontWeight.bold), fontWeight: FontWeight.bold),
), ),
const Text(""), const Text(""),