mirror of
https://github.com/simon-ding/polaris.git
synced 2026-06-08 11:07:42 +08:00
chore: serval fixes
This commit is contained in:
@@ -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}")),
|
||||||
|
|||||||
@@ -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());
|
||||||
|
|||||||
@@ -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 {
|
||||||
ref.read(searchPageDataProvider.notifier).queryResults(value);
|
var f =
|
||||||
|
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();
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -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(""),
|
||||||
|
|||||||
Reference in New Issue
Block a user