mod: 样式、dio异常处理

This commit is contained in:
guozhigq
2023-05-09 14:39:52 +08:00
parent f3b57bfe7b
commit 04668b3591
29 changed files with 469 additions and 342 deletions

View File

@ -1,7 +1,10 @@
import 'package:get/get.dart';
import 'package:pilipala/http/user.dart';
import 'package:pilipala/models/user/info.dart';
class MineController extends GetxController {
UserInfoData? userInfo;
@override
void onInit() {
super.onInit();

View File

@ -1,3 +1,4 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:get/get.dart';
@ -22,13 +23,19 @@ class _MinePageState extends State<MinePage> {
actions: [
IconButton(
onPressed: () {},
icon: const Icon(Icons.light_mode_rounded),
icon: const Icon(
CupertinoIcons.moon,
size: 22,
),
// icon: const Icon(
// CupertinoIcons.sun_max,
// size: 22,
// ),
),
IconButton(
onPressed: () {},
icon: const FaIcon(
FontAwesomeIcons.sliders,
size: 18,
icon: const Icon(
CupertinoIcons.slider_horizontal_3,
),
),
const SizedBox(width: 10),
@ -36,161 +43,183 @@ class _MinePageState extends State<MinePage> {
),
body: RefreshIndicator(
onRefresh: () async {
await Future.delayed(Duration(seconds: 2));
await Future.delayed(const Duration(seconds: 2));
},
child: Column(
children: [
InkWell(
onTap: () {
Get.toNamed(
'/webview',
parameters: {
'url':
'https://passport.bilibili.com/h5-app/passport/login',
'type': 'login',
'pageTitle': '登录bilibili',
},
);
},
child: Padding(
padding: const EdgeInsets.only(top: 10, bottom: 10),
child: Row(
child: LayoutBuilder(
builder: (context, constraint) {
return SingleChildScrollView(
physics: const AlwaysScrollableScrollPhysics(),
child: SizedBox(
height: constraint.maxHeight,
child: Column(
children: [
const SizedBox(width: 20),
ClipOval(
child: Container(
width: 75,
height: 75,
color: Theme.of(context).colorScheme.onInverseSurface,
child: Center(
child: Image.asset('assets/images/loading.png'),
InkWell(
onTap: () {
Get.toNamed(
'/webview',
parameters: {
'url':
'https://passport.bilibili.com/h5-app/passport/login',
'type': 'login',
'pageTitle': '登录bilibili',
},
);
},
child: Padding(
padding: const EdgeInsets.only(top: 10, bottom: 10),
child: Row(
children: [
const SizedBox(width: 20),
ClipOval(
child: Container(
width: 75,
height: 75,
color: Theme.of(context)
.colorScheme
.onInverseSurface,
child: Center(
child:
Image.asset('assets/images/loading.png'),
),
),
),
const SizedBox(width: 14),
Text(
'点击登录',
style: Theme.of(context).textTheme.titleMedium,
),
],
),
),
),
const SizedBox(width: 14),
Text(
'点击登录',
style: Theme.of(context).textTheme.titleMedium,
const SizedBox(height: 10),
Padding(
padding: const EdgeInsets.only(left: 12, right: 12),
child: LayoutBuilder(
builder: (context, constraints) {
TextStyle style = TextStyle(
fontSize: Theme.of(context)
.textTheme
.titleMedium!
.fontSize,
color: Theme.of(context).colorScheme.primary,
fontWeight: FontWeight.bold);
return SizedBox(
height: constraints.maxWidth / 3 * 0.6,
child: GridView.count(
primary: false,
padding: const EdgeInsets.all(0),
crossAxisCount: 3,
childAspectRatio: 1.67,
children: <Widget>[
InkWell(
onTap: () {},
borderRadius: StyleString.mdRadius,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('-', style: style),
const SizedBox(height: 8),
Text(
'动态',
style: Theme.of(context)
.textTheme
.labelMedium,
),
],
),
),
InkWell(
onTap: () {},
borderRadius: StyleString.mdRadius,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
'50',
style: style,
),
const SizedBox(height: 8),
Text(
'关注',
style: Theme.of(context)
.textTheme
.labelMedium,
),
],
),
),
InkWell(
onTap: () {},
borderRadius: StyleString.mdRadius,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
'-',
style: style,
),
const SizedBox(height: 8),
Text(
'粉丝',
style: Theme.of(context)
.textTheme
.labelMedium,
),
],
),
),
],
),
);
},
),
),
const SizedBox(height: 20),
Padding(
padding: const EdgeInsets.only(left: 12, right: 12),
child: LayoutBuilder(
builder: (context, constraints) {
return SizedBox(
height: constraints.maxWidth / 4 * 0.8,
child: GridView.count(
primary: false,
padding: const EdgeInsets.all(0),
crossAxisCount: 4,
childAspectRatio: 1.25,
children: <Widget>[
ActionItem(
icon:
const Icon(CupertinoIcons.cloud_download),
onTap: () => {},
text: '离线缓存',
),
ActionItem(
icon: const Icon(CupertinoIcons.time),
onTap: () => {},
text: '历史记录',
),
ActionItem(
icon: const Icon(CupertinoIcons.star),
onTap: () => {},
text: '我的收藏',
),
ActionItem(
icon: const Icon(CupertinoIcons.film),
onTap: () => {},
text: '稍后再看',
),
],
),
);
},
),
),
],
),
),
),
const SizedBox(height: 10),
Padding(
padding: const EdgeInsets.only(left: 12, right: 12),
child: LayoutBuilder(
builder: (context, constraints) {
TextStyle style = TextStyle(
fontSize:
Theme.of(context).textTheme.titleMedium!.fontSize,
color: Theme.of(context).colorScheme.primary,
fontWeight: FontWeight.bold);
return SizedBox(
height: constraints.maxWidth / 3 * 0.6,
child: GridView.count(
primary: false,
padding: const EdgeInsets.all(0),
crossAxisCount: 3,
childAspectRatio: 1.67,
children: <Widget>[
InkWell(
onTap: () {},
borderRadius: StyleString.mdRadius,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('-', style: style),
const SizedBox(height: 8),
Text(
'动态',
style: Theme.of(context).textTheme.labelMedium,
),
],
),
),
InkWell(
onTap: () {},
borderRadius: StyleString.mdRadius,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
'50',
style: style,
),
const SizedBox(height: 8),
Text(
'关注',
style: Theme.of(context).textTheme.labelMedium,
),
],
),
),
InkWell(
onTap: () {},
borderRadius: StyleString.mdRadius,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
'-',
style: style,
),
const SizedBox(height: 8),
Text(
'粉丝',
style: Theme.of(context).textTheme.labelMedium,
),
],
),
),
],
),
);
},
),
),
const SizedBox(height: 20),
Padding(
padding: const EdgeInsets.only(left: 12, right: 12),
child: LayoutBuilder(
builder: (context, constraints) {
return SizedBox(
height: constraints.maxWidth / 4 * 0.8,
child: GridView.count(
primary: false,
padding: const EdgeInsets.all(0),
crossAxisCount: 4,
childAspectRatio: 1.25,
children: <Widget>[
ActionItem(
icon: const Icon(FontAwesomeIcons.download),
onTap: () => {},
text: '离线缓存',
),
ActionItem(
icon: const Icon(FontAwesomeIcons.clockRotateLeft),
onTap: () => {},
text: '历史记录',
),
ActionItem(
icon: const Icon(FontAwesomeIcons.star),
onTap: () => {},
text: '我的收藏',
),
ActionItem(
icon: const Icon(FontAwesomeIcons.film),
onTap: () => {},
text: '稍后再看',
),
],
),
);
},
),
),
],
);
},
),
),
);
@ -217,10 +246,7 @@ class ActionItem extends StatelessWidget {
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Icon(
icon!.icon!,
color: Theme.of(context).colorScheme.outline,
),
Icon(icon!.icon!),
const SizedBox(height: 8),
Text(
text!,