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

View File

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

View File

@@ -18,6 +18,7 @@ class SearchPage extends ConsumerStatefulWidget {
class _SearchPageState extends ConsumerState<SearchPage> {
List<dynamic> list = List.empty();
Future<void>? _pendingFuture;
@override
Widget build(BuildContext context) {
var searchList = ref.watch(searchPageDataProvider);
@@ -69,22 +70,38 @@ class _SearchPageState extends ConsumerState<SearchPage> {
},
error: (err, trace) => [Text("$err")],
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(
children: [
TextField(
autofocus: true,
onSubmitted: (value) {
ref.read(searchPageDataProvider.notifier).queryResults(value);
onSubmitted: (value) async {
var f =
ref.read(searchPageDataProvider.notifier).queryResults(value);
setState(() {
_pendingFuture = f;
});
},
decoration: const InputDecoration(
labelText: "搜索",
hintText: "搜索剧集名称",
prefixIcon: Icon(Icons.search)),
),
Expanded(
child: ListView(
children: res,
))
Expanded(child: f)
],
);
}
@@ -151,9 +168,8 @@ class _SearchPageState extends ConsumerState<SearchPage> {
),
child: const Text('确定'),
onPressed: () {
ref
.read(searchPageDataProvider.notifier)
.submit2Watchlist(item.id!, _storageSelected, _resSelected);
ref.read(searchPageDataProvider.notifier).submit2Watchlist(
item.id!, _storageSelected, _resSelected);
Navigator.of(context).pop();
},
),

View File

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