mirror of
https://github.com/venera-app/venera.git
synced 2025-09-27 15:57:25 +00:00
update flutter to 3.27.0 & update packages
This commit is contained in:
@@ -76,7 +76,7 @@ class _AppbarState extends State<Appbar> {
|
||||
var content = Container(
|
||||
decoration: BoxDecoration(
|
||||
color: widget.backgroundColor ??
|
||||
context.colorScheme.surface.withOpacity(0.72),
|
||||
context.colorScheme.surface.toOpacity(0.72),
|
||||
),
|
||||
height: _kAppBarHeight + context.padding.top,
|
||||
child: Row(
|
||||
@@ -219,7 +219,7 @@ class _MySliverAppBarDelegate extends SliverPersistentHeaderDelegate {
|
||||
child: BlurEffect(
|
||||
blur: 15,
|
||||
child: Material(
|
||||
color: context.colorScheme.surface.withOpacity(0.72),
|
||||
color: context.colorScheme.surface.toOpacity(0.72),
|
||||
elevation: 0,
|
||||
borderRadius: BorderRadius.circular(radius),
|
||||
child: body,
|
||||
@@ -734,6 +734,7 @@ class _SliverSearchBarDelegate extends SliverPersistentHeaderDelegate {
|
||||
icon: const Icon(Icons.clear),
|
||||
onPressed: () {
|
||||
editingController.clear();
|
||||
onChanged?.call("");
|
||||
},
|
||||
);
|
||||
},
|
||||
|
@@ -214,7 +214,7 @@ class _ButtonState extends State<Button> {
|
||||
boxShadow: (isHover && !isLoading && (widget.type == ButtonType.filled || widget.type == ButtonType.normal))
|
||||
? [
|
||||
BoxShadow(
|
||||
color: Colors.black.withOpacity(0.1),
|
||||
color: Colors.black.toOpacity(0.1),
|
||||
blurRadius: 2,
|
||||
offset: const Offset(0, 1),
|
||||
)
|
||||
@@ -248,7 +248,7 @@ class _ButtonState extends State<Button> {
|
||||
if (widget.type == ButtonType.filled) {
|
||||
var color = widget.color ?? context.colorScheme.primary;
|
||||
if (isHover) {
|
||||
return color.withOpacity(0.9);
|
||||
return color.toOpacity(0.9);
|
||||
} else {
|
||||
return color;
|
||||
}
|
||||
@@ -256,13 +256,13 @@ class _ButtonState extends State<Button> {
|
||||
if (widget.type == ButtonType.normal) {
|
||||
var color = widget.color ?? context.colorScheme.surfaceContainer;
|
||||
if (isHover) {
|
||||
return color.withOpacity(0.9);
|
||||
return color.toOpacity(0.9);
|
||||
} else {
|
||||
return color;
|
||||
}
|
||||
}
|
||||
if (isHover) {
|
||||
return context.colorScheme.outline.withOpacity(0.2);
|
||||
return context.colorScheme.outline.toOpacity(0.2);
|
||||
}
|
||||
return Colors.transparent;
|
||||
}
|
||||
@@ -345,7 +345,7 @@ class _IconButtonState extends State<_IconButton> {
|
||||
? Theme.of(context)
|
||||
.colorScheme
|
||||
.outlineVariant
|
||||
.withOpacity(0.4)
|
||||
.toOpacity(0.4)
|
||||
: null,
|
||||
borderRadius: BorderRadius.circular((iconSize + 12) / 2),
|
||||
),
|
||||
|
@@ -144,7 +144,7 @@ class ComicTile extends StatelessWidget {
|
||||
if (history != null)
|
||||
Container(
|
||||
height: 24,
|
||||
color: Colors.blue.withOpacity(0.9),
|
||||
color: Colors.blue.toOpacity(0.9),
|
||||
constraints: const BoxConstraints(minWidth: 24),
|
||||
padding: const EdgeInsets.symmetric(horizontal: 4),
|
||||
child: CustomPaint(
|
||||
@@ -293,7 +293,7 @@ class ComicTile extends StatelessWidget {
|
||||
Radius.circular(10.0),
|
||||
),
|
||||
child: Container(
|
||||
color: Colors.black.withOpacity(0.5),
|
||||
color: Colors.black.toOpacity(0.5),
|
||||
child: Padding(
|
||||
padding:
|
||||
const EdgeInsets.fromLTRB(8, 6, 8, 6),
|
||||
@@ -475,7 +475,7 @@ class _ComicDescription extends StatelessWidget {
|
||||
subtitle,
|
||||
style: TextStyle(
|
||||
fontSize: 10.0,
|
||||
color: context.colorScheme.onSurface.withOpacity(0.7)),
|
||||
color: context.colorScheme.onSurface.toOpacity(0.7)),
|
||||
maxLines: 1,
|
||||
softWrap: true,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
@@ -780,7 +780,7 @@ class _SliverGridComics extends StatelessWidget {
|
||||
duration: const Duration(milliseconds: 150),
|
||||
decoration: BoxDecoration(
|
||||
color: isSelected
|
||||
? Theme.of(context).colorScheme.secondaryContainer.withOpacity(0.72)
|
||||
? Theme.of(context).colorScheme.secondaryContainer.toOpacity(0.72)
|
||||
: null,
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
),
|
||||
|
@@ -1,5 +1,3 @@
|
||||
library components;
|
||||
|
||||
import 'dart:async';
|
||||
import 'dart:collection';
|
||||
import 'dart:math' as math;
|
||||
|
@@ -1,4 +1,5 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:venera/foundation/app.dart';
|
||||
|
||||
/// patched slider.dart with RtL support
|
||||
class _SliderDefaultsM3 extends SliderThemeData {
|
||||
@@ -15,45 +16,45 @@ class _SliderDefaultsM3 extends SliderThemeData {
|
||||
Color? get inactiveTrackColor => _colors.surfaceContainerHighest;
|
||||
|
||||
@override
|
||||
Color? get secondaryActiveTrackColor => _colors.primary.withOpacity(0.54);
|
||||
Color? get secondaryActiveTrackColor => _colors.primary.toOpacity(0.54);
|
||||
|
||||
@override
|
||||
Color? get disabledActiveTrackColor => _colors.onSurface.withOpacity(0.38);
|
||||
Color? get disabledActiveTrackColor => _colors.onSurface.toOpacity(0.38);
|
||||
|
||||
@override
|
||||
Color? get disabledInactiveTrackColor => _colors.onSurface.withOpacity(0.12);
|
||||
Color? get disabledInactiveTrackColor => _colors.onSurface.toOpacity(0.12);
|
||||
|
||||
@override
|
||||
Color? get disabledSecondaryActiveTrackColor => _colors.onSurface.withOpacity(0.12);
|
||||
Color? get disabledSecondaryActiveTrackColor => _colors.onSurface.toOpacity(0.12);
|
||||
|
||||
@override
|
||||
Color? get activeTickMarkColor => _colors.onPrimary.withOpacity(0.38);
|
||||
Color? get activeTickMarkColor => _colors.onPrimary.toOpacity(0.38);
|
||||
|
||||
@override
|
||||
Color? get inactiveTickMarkColor => _colors.onSurfaceVariant.withOpacity(0.38);
|
||||
Color? get inactiveTickMarkColor => _colors.onSurfaceVariant.toOpacity(0.38);
|
||||
|
||||
@override
|
||||
Color? get disabledActiveTickMarkColor => _colors.onSurface.withOpacity(0.38);
|
||||
Color? get disabledActiveTickMarkColor => _colors.onSurface.toOpacity(0.38);
|
||||
|
||||
@override
|
||||
Color? get disabledInactiveTickMarkColor => _colors.onSurface.withOpacity(0.38);
|
||||
Color? get disabledInactiveTickMarkColor => _colors.onSurface.toOpacity(0.38);
|
||||
|
||||
@override
|
||||
Color? get thumbColor => _colors.primary;
|
||||
|
||||
@override
|
||||
Color? get disabledThumbColor => Color.alphaBlend(_colors.onSurface.withOpacity(0.38), _colors.surface);
|
||||
Color? get disabledThumbColor => Color.alphaBlend(_colors.onSurface.toOpacity(0.38), _colors.surface);
|
||||
|
||||
@override
|
||||
Color? get overlayColor => WidgetStateColor.resolveWith((Set<WidgetState> states) {
|
||||
if (states.contains(WidgetState.dragged)) {
|
||||
return _colors.primary.withOpacity(0.1);
|
||||
return _colors.primary.toOpacity(0.1);
|
||||
}
|
||||
if (states.contains(WidgetState.hovered)) {
|
||||
return _colors.primary.withOpacity(0.08);
|
||||
return _colors.primary.toOpacity(0.08);
|
||||
}
|
||||
if (states.contains(WidgetState.focused)) {
|
||||
return _colors.primary.withOpacity(0.1);
|
||||
return _colors.primary.toOpacity(0.1);
|
||||
}
|
||||
|
||||
return Colors.transparent;
|
||||
|
@@ -141,7 +141,7 @@ class FlyoutState extends State<Flyout> {
|
||||
animation: animation,
|
||||
builder: (context, builder) {
|
||||
return ColoredBox(
|
||||
color: Colors.black.withOpacity(0.3 * animation.value),
|
||||
color: Colors.black.toOpacity(0.3 * animation.value),
|
||||
);
|
||||
},
|
||||
),
|
||||
@@ -185,12 +185,18 @@ class FlyoutContent extends StatelessWidget {
|
||||
child: Material(
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
type: MaterialType.card,
|
||||
color: context.colorScheme.surface.withOpacity(0.82),
|
||||
color: context.colorScheme.surface.toOpacity(0.82),
|
||||
child: Container(
|
||||
constraints: const BoxConstraints(
|
||||
minWidth: minFlyoutWidth,
|
||||
),
|
||||
padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 16),
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
border: context.brightness == ui.Brightness.dark
|
||||
? Border.all(color: context.colorScheme.outlineVariant)
|
||||
: null,
|
||||
),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
@@ -215,108 +221,3 @@ class FlyoutContent extends StatelessWidget {
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class FlyoutTextButton extends StatefulWidget {
|
||||
const FlyoutTextButton(
|
||||
{super.key,
|
||||
required this.child,
|
||||
required this.flyoutBuilder,
|
||||
this.navigator});
|
||||
|
||||
final Widget child;
|
||||
|
||||
final WidgetBuilder flyoutBuilder;
|
||||
|
||||
final NavigatorState? navigator;
|
||||
|
||||
@override
|
||||
State<FlyoutTextButton> createState() => _FlyoutTextButtonState();
|
||||
}
|
||||
|
||||
class _FlyoutTextButtonState extends State<FlyoutTextButton> {
|
||||
final FlyoutController _controller = FlyoutController();
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Flyout(
|
||||
controller: _controller,
|
||||
flyoutBuilder: widget.flyoutBuilder,
|
||||
navigator: widget.navigator,
|
||||
child: TextButton(
|
||||
onPressed: () {
|
||||
_controller.show();
|
||||
},
|
||||
child: widget.child,
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
class FlyoutIconButton extends StatefulWidget {
|
||||
const FlyoutIconButton(
|
||||
{super.key,
|
||||
required this.icon,
|
||||
required this.flyoutBuilder,
|
||||
this.navigator});
|
||||
|
||||
final Widget icon;
|
||||
|
||||
final WidgetBuilder flyoutBuilder;
|
||||
|
||||
final NavigatorState? navigator;
|
||||
|
||||
@override
|
||||
State<FlyoutIconButton> createState() => _FlyoutIconButtonState();
|
||||
}
|
||||
|
||||
class _FlyoutIconButtonState extends State<FlyoutIconButton> {
|
||||
final FlyoutController _controller = FlyoutController();
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Flyout(
|
||||
controller: _controller,
|
||||
flyoutBuilder: widget.flyoutBuilder,
|
||||
navigator: widget.navigator,
|
||||
child: IconButton(
|
||||
onPressed: () {
|
||||
_controller.show();
|
||||
},
|
||||
icon: widget.icon,
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
class FlyoutFilledButton extends StatefulWidget {
|
||||
const FlyoutFilledButton(
|
||||
{super.key,
|
||||
required this.child,
|
||||
required this.flyoutBuilder,
|
||||
this.navigator});
|
||||
|
||||
final Widget child;
|
||||
|
||||
final WidgetBuilder flyoutBuilder;
|
||||
|
||||
final NavigatorState? navigator;
|
||||
|
||||
@override
|
||||
State<FlyoutFilledButton> createState() => _FlyoutFilledButtonState();
|
||||
}
|
||||
|
||||
class _FlyoutFilledButtonState extends State<FlyoutFilledButton> {
|
||||
final FlyoutController _controller = FlyoutController();
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Flyout(
|
||||
controller: _controller,
|
||||
flyoutBuilder: widget.flyoutBuilder,
|
||||
navigator: widget.navigator,
|
||||
child: ElevatedButton(
|
||||
onPressed: () {
|
||||
_controller.show();
|
||||
},
|
||||
child: widget.child,
|
||||
));
|
||||
}
|
||||
}
|
||||
|
@@ -20,6 +20,8 @@ class _MenuRoute<T> extends PopupRoute<T> {
|
||||
@override
|
||||
String? get barrierLabel => "menu";
|
||||
|
||||
double get entryHeight => App.isMobile ? 42 : 36;
|
||||
|
||||
@override
|
||||
Widget buildPage(BuildContext context, Animation<double> animation,
|
||||
Animation<double> secondaryAnimation) {
|
||||
@@ -30,7 +32,7 @@ class _MenuRoute<T> extends PopupRoute<T> {
|
||||
left = size.width - width - 10;
|
||||
}
|
||||
var top = location.dy;
|
||||
var height = 16 + 32 * entries.length;
|
||||
var height = 16 + entryHeight * entries.length;
|
||||
if (top + height > size.height - 15) {
|
||||
top = size.height - height - 15;
|
||||
}
|
||||
@@ -47,7 +49,7 @@ class _MenuRoute<T> extends PopupRoute<T> {
|
||||
: null,
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: context.colorScheme.shadow.withOpacity(0.2),
|
||||
color: context.colorScheme.shadow.toOpacity(0.2),
|
||||
blurRadius: 8,
|
||||
blurStyle: BlurStyle.outer,
|
||||
),
|
||||
@@ -56,7 +58,7 @@ class _MenuRoute<T> extends PopupRoute<T> {
|
||||
child: BlurEffect(
|
||||
borderRadius: BorderRadius.circular(4),
|
||||
child: Material(
|
||||
color: context.colorScheme.surface.withOpacity(0.78),
|
||||
color: context.colorScheme.surface.toOpacity(0.78),
|
||||
borderRadius: BorderRadius.circular(4),
|
||||
child: Container(
|
||||
width: width,
|
||||
@@ -84,7 +86,7 @@ class _MenuRoute<T> extends PopupRoute<T> {
|
||||
entry.onClick();
|
||||
},
|
||||
child: SizedBox(
|
||||
height: App.isMobile ? 42 : 36,
|
||||
height: entryHeight,
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 12),
|
||||
child: Row(
|
||||
|
@@ -563,7 +563,7 @@ class _VirtualWindowFrameState extends State<VirtualWindowFrame>
|
||||
boxShadow: <BoxShadow>[
|
||||
if (!_isMaximized && !_isFullScreen)
|
||||
BoxShadow(
|
||||
color: Colors.black.withOpacity(0.1),
|
||||
color: Colors.black.toOpacity(0.1),
|
||||
offset: Offset(0.0, _isFocused ? 4 : 2),
|
||||
blurRadius: 6,
|
||||
)
|
||||
|
@@ -1,4 +1,4 @@
|
||||
part of comic_source;
|
||||
part of 'comic_source.dart';
|
||||
|
||||
class CategoryData {
|
||||
/// The title is displayed in the tab bar.
|
||||
|
@@ -1,4 +1,4 @@
|
||||
library comic_source;
|
||||
library;
|
||||
|
||||
import 'dart:async';
|
||||
import 'dart:collection';
|
||||
|
@@ -198,9 +198,7 @@ class ComicDetails with HistoryMixin {
|
||||
maxPage = json["maxPage"],
|
||||
comments = (json["comments"] as List?)
|
||||
?.map((e) => Comment.fromJson(e))
|
||||
.toList(){
|
||||
print(json);
|
||||
}
|
||||
.toList();
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
return {
|
||||
|
@@ -90,11 +90,10 @@ class ComicSourceParser {
|
||||
var className = line1.split("class")[1].split("extends ComicSource").first;
|
||||
className = className.trim();
|
||||
JsEngine().runCode("""
|
||||
(() => {
|
||||
$js
|
||||
(() => { $js
|
||||
this['temp'] = new $className()
|
||||
}).call()
|
||||
""");
|
||||
""", className);
|
||||
_name = JsEngine().runCode("this['temp'].name") ??
|
||||
(throw ComicSourceParseException('name is required'));
|
||||
var key = JsEngine().runCode("this['temp'].key") ??
|
||||
|
@@ -42,6 +42,7 @@ class History implements Comic {
|
||||
|
||||
int page;
|
||||
|
||||
@override
|
||||
String id;
|
||||
|
||||
/// readEpisode is a set of episode numbers that have been read.
|
||||
|
@@ -111,4 +111,10 @@ extension StyledText on TextStyle {
|
||||
TextStyle get s40 => copyWith(fontSize: 40);
|
||||
|
||||
TextStyle withColor(Color? color) => copyWith(color: color);
|
||||
}
|
||||
|
||||
extension ColorExt on Color {
|
||||
Color toOpacity(double opacity) {
|
||||
return withValues(alpha: opacity);
|
||||
}
|
||||
}
|
@@ -172,7 +172,6 @@ class _MyAppState extends State<MyApp> with WidgetsBindingObserver {
|
||||
theme: ThemeData(
|
||||
colorScheme: light.copyWith(
|
||||
surface: Colors.white,
|
||||
background: Colors.white,
|
||||
),
|
||||
fontFamily: App.isWindows ? "Microsoft YaHei" : null,
|
||||
),
|
||||
@@ -180,7 +179,6 @@ class _MyAppState extends State<MyApp> with WidgetsBindingObserver {
|
||||
darkTheme: ThemeData(
|
||||
colorScheme: dark.copyWith(
|
||||
surface: Colors.black,
|
||||
background: Colors.black,
|
||||
),
|
||||
fontFamily: App.isWindows ? "Microsoft YaHei" : null,
|
||||
),
|
||||
|
@@ -1,6 +1,5 @@
|
||||
import 'dart:async';
|
||||
import 'dart:convert';
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
@@ -281,13 +280,8 @@ class RHttpAdapter implements HttpClientAdapter {
|
||||
headers[key] ??= [];
|
||||
headers[key]!.add(entry.$2);
|
||||
}
|
||||
var data = res.body;
|
||||
if (headers['content-encoding']?.contains('gzip') ?? false) {
|
||||
// rhttp does not support gzip decoding
|
||||
data = gzip.decoder.bind(data).map((data) => Uint8List.fromList(data));
|
||||
}
|
||||
return ResponseBody(
|
||||
data,
|
||||
res.body,
|
||||
res.statusCode,
|
||||
statusMessage: null,
|
||||
isRedirect: false,
|
||||
|
@@ -262,7 +262,7 @@ class _CategoryPage extends StatelessWidget {
|
||||
builder: (context) {
|
||||
return Material(
|
||||
borderRadius: const BorderRadius.all(Radius.circular(8)),
|
||||
color: context.colorScheme.primaryContainer.withOpacity(0.72),
|
||||
color: context.colorScheme.primaryContainer.toOpacity(0.72),
|
||||
child: InkWell(
|
||||
borderRadius: const BorderRadius.all(Radius.circular(8)),
|
||||
onTap: () => onClick(tag, param),
|
||||
|
@@ -1,5 +1,4 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:sliver_tools/sliver_tools.dart';
|
||||
import 'package:venera/components/components.dart';
|
||||
import 'package:venera/foundation/app.dart';
|
||||
import 'package:venera/foundation/appdata.dart';
|
||||
|
@@ -92,7 +92,7 @@ class _FavoritesPageState extends State<FavoritesPage> {
|
||||
barrierDismissible: true,
|
||||
fullscreenDialog: true,
|
||||
opaque: false,
|
||||
barrierColor: Colors.black.withOpacity(0.36),
|
||||
barrierColor: Colors.black.toOpacity(0.36),
|
||||
pageBuilder: (context, animation, secondary) {
|
||||
return Align(
|
||||
alignment: Alignment.centerLeft,
|
||||
|
@@ -592,12 +592,16 @@ class _ReorderComicsPageState extends State<_ReorderComicsPage> {
|
||||
late var comics = LocalFavoritesManager().getAllComics(widget.name);
|
||||
bool changed = false;
|
||||
|
||||
Color lightenColor(Color color, double lightenValue) {
|
||||
int red = (color.red + ((255 - color.red) * lightenValue)).round();
|
||||
int green = (color.green + ((255 - color.green) * lightenValue)).round();
|
||||
int blue = (color.blue + ((255 - color.blue) * lightenValue)).round();
|
||||
static int _floatToInt8(double x) {
|
||||
return (x * 255.0).round() & 0xff;
|
||||
}
|
||||
|
||||
return Color.fromARGB(color.alpha, red, green, blue);
|
||||
Color lightenColor(Color color, double lightenValue) {
|
||||
int red = (_floatToInt8(color.r) + ((255 - color.r) * lightenValue)).round();
|
||||
int green = (_floatToInt8(color.g) * 255 + ((255 - color.g) * lightenValue)).round();
|
||||
int blue = (_floatToInt8(color.b) * 255 + ((255 - color.b) * lightenValue)).round();
|
||||
|
||||
return Color.fromARGB(_floatToInt8(color.a), red, green, blue);
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -650,7 +654,7 @@ class _ReorderComicsPageState extends State<_ReorderComicsPage> {
|
||||
),
|
||||
],
|
||||
),
|
||||
body: ReorderableBuilder(
|
||||
body: ReorderableBuilder<FavoriteItem>(
|
||||
key: reorderWidgetKey,
|
||||
scrollController: _scrollController,
|
||||
longPressDelay: App.isDesktop
|
||||
@@ -659,14 +663,14 @@ class _ReorderComicsPageState extends State<_ReorderComicsPage> {
|
||||
onReorder: (reorderFunc) {
|
||||
changed = true;
|
||||
setState(() {
|
||||
comics = reorderFunc(comics) as List<FavoriteItem>;
|
||||
comics = reorderFunc(comics);
|
||||
});
|
||||
widget.onReorder(comics);
|
||||
},
|
||||
dragChildBoxDecoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(16),
|
||||
color: lightenColor(
|
||||
Theme.of(context).splashColor.withOpacity(1),
|
||||
Theme.of(context).splashColor.withAlpha(255),
|
||||
0.2,
|
||||
),
|
||||
),
|
||||
|
@@ -179,7 +179,7 @@ class _LeftBarState extends State<_LeftBar> implements FolderList {
|
||||
alignment: Alignment.centerLeft,
|
||||
decoration: BoxDecoration(
|
||||
color: isSelected
|
||||
? context.colorScheme.primaryContainer.withOpacity(0.36)
|
||||
? context.colorScheme.primaryContainer.toOpacity(0.36)
|
||||
: null,
|
||||
border: Border(
|
||||
left: BorderSide(
|
||||
@@ -214,7 +214,7 @@ class _LeftBarState extends State<_LeftBar> implements FolderList {
|
||||
alignment: Alignment.centerLeft,
|
||||
decoration: BoxDecoration(
|
||||
color: isSelected
|
||||
? context.colorScheme.primaryContainer.withOpacity(0.36)
|
||||
? context.colorScheme.primaryContainer.toOpacity(0.36)
|
||||
: null,
|
||||
border: Border(
|
||||
left: BorderSide(
|
||||
|
@@ -4,8 +4,6 @@ import 'package:venera/foundation/app.dart';
|
||||
import 'package:venera/foundation/comic_source/comic_source.dart';
|
||||
import 'package:venera/foundation/comic_type.dart';
|
||||
import 'package:venera/foundation/history.dart';
|
||||
import 'package:venera/foundation/local.dart';
|
||||
import 'package:venera/utils/ext.dart';
|
||||
import 'package:venera/utils/translations.dart';
|
||||
|
||||
class HistoryPage extends StatefulWidget {
|
||||
|
@@ -6,7 +6,6 @@ import 'package:venera/foundation/comic_source/comic_source.dart';
|
||||
import 'package:venera/foundation/consts.dart';
|
||||
import 'package:venera/foundation/favorites.dart';
|
||||
import 'package:venera/foundation/history.dart';
|
||||
import 'package:venera/foundation/image_provider/cached_image.dart';
|
||||
import 'package:venera/foundation/image_provider/history_image_provider.dart';
|
||||
import 'package:venera/foundation/image_provider/local_comic_image.dart';
|
||||
import 'package:venera/foundation/local.dart';
|
||||
@@ -17,7 +16,6 @@ import 'package:venera/pages/downloading_page.dart';
|
||||
import 'package:venera/pages/history_page.dart';
|
||||
import 'package:venera/pages/search_page.dart';
|
||||
import 'package:venera/utils/data_sync.dart';
|
||||
import 'package:venera/utils/ext.dart';
|
||||
import 'package:venera/utils/import_comic.dart';
|
||||
import 'package:venera/utils/translations.dart';
|
||||
|
||||
@@ -55,7 +53,7 @@ class _SearchBar extends StatelessWidget {
|
||||
width: double.infinity,
|
||||
margin: const EdgeInsets.symmetric(horizontal: 8, vertical: 8),
|
||||
child: Material(
|
||||
color: context.colorScheme.surfaceContainer,
|
||||
color: context.colorScheme.surfaceContainerHigh,
|
||||
borderRadius: BorderRadius.circular(32),
|
||||
child: InkWell(
|
||||
borderRadius: BorderRadius.circular(32),
|
||||
@@ -580,7 +578,7 @@ class _ImportComicsWidgetState extends State<_ImportComicsWidget> {
|
||||
onPressed: () {
|
||||
showDialog(
|
||||
context: context,
|
||||
barrierColor: Colors.black.withOpacity(0.2),
|
||||
barrierColor: Colors.black.toOpacity(0.2),
|
||||
builder: (context) {
|
||||
var help = '';
|
||||
help +=
|
||||
|
@@ -268,5 +268,5 @@ class _DragListener {
|
||||
void Function(Offset offset)? onMove;
|
||||
void Function()? onEnd;
|
||||
|
||||
_DragListener({this.onStart, this.onMove, this.onEnd});
|
||||
_DragListener({this.onMove, this.onEnd});
|
||||
}
|
@@ -1,4 +1,4 @@
|
||||
library venera_reader;
|
||||
library;
|
||||
|
||||
import 'dart:async';
|
||||
import 'dart:math' as math;
|
||||
@@ -62,7 +62,7 @@ class Reader extends StatefulWidget {
|
||||
|
||||
final String name;
|
||||
|
||||
/// Map<Chapter ID, Chapter Name>.
|
||||
/// key: Chapter ID, value: Chapter Name
|
||||
/// null if the comic is a gallery
|
||||
final Map<String, String>? chapters;
|
||||
|
||||
|
@@ -167,10 +167,10 @@ class _ReaderScaffoldState extends State<_ReaderScaffold> {
|
||||
child: Container(
|
||||
padding: EdgeInsets.only(top: context.padding.top),
|
||||
decoration: BoxDecoration(
|
||||
color: context.colorScheme.surface.withOpacity(0.82),
|
||||
color: context.colorScheme.surface.toOpacity(0.82),
|
||||
border: Border(
|
||||
bottom: BorderSide(
|
||||
color: Colors.grey.withOpacity(0.5),
|
||||
color: Colors.grey.toOpacity(0.5),
|
||||
width: 0.5,
|
||||
),
|
||||
),
|
||||
@@ -357,10 +357,10 @@ class _ReaderScaffoldState extends State<_ReaderScaffold> {
|
||||
return BlurEffect(
|
||||
child: Container(
|
||||
decoration: BoxDecoration(
|
||||
color: context.colorScheme.surface.withOpacity(0.82),
|
||||
color: context.colorScheme.surface.toOpacity(0.82),
|
||||
border: Border(
|
||||
top: BorderSide(
|
||||
color: Colors.grey.withOpacity(0.5),
|
||||
color: Colors.grey.toOpacity(0.5),
|
||||
width: 0.5,
|
||||
),
|
||||
),
|
||||
@@ -641,7 +641,7 @@ class _ReaderScaffoldState extends State<_ReaderScaffold> {
|
||||
color: Theme.of(context)
|
||||
.colorScheme
|
||||
.surfaceTint
|
||||
.withOpacity(0.2),
|
||||
.toOpacity(0.2),
|
||||
child: const SizedBox.expand(),
|
||||
),
|
||||
),
|
||||
|
@@ -94,7 +94,7 @@ class _ExploreSettingsState extends State<ExploreSettings> {
|
||||
}
|
||||
|
||||
class _ManageBlockingWordView extends StatefulWidget {
|
||||
const _ManageBlockingWordView({super.key});
|
||||
const _ManageBlockingWordView();
|
||||
|
||||
@override
|
||||
State<_ManageBlockingWordView> createState() =>
|
||||
@@ -135,7 +135,7 @@ class _ManageBlockingWordViewState extends State<_ManageBlockingWordView> {
|
||||
void add() {
|
||||
showDialog(
|
||||
context: App.rootContext,
|
||||
barrierColor: Colors.black.withOpacity(0.1),
|
||||
barrierColor: Colors.black.toOpacity(0.1),
|
||||
builder: (context) {
|
||||
var controller = TextEditingController();
|
||||
String? error;
|
||||
|
@@ -384,7 +384,7 @@ class _MultiPagesFilterState extends State<_MultiPagesFilter> {
|
||||
Widget build(BuildContext context) {
|
||||
var tiles = keys.map((e) => buildItem(e)).toList();
|
||||
|
||||
var view = ReorderableBuilder(
|
||||
var view = ReorderableBuilder<String>(
|
||||
key: reorderWidgetKey,
|
||||
scrollController: scrollController,
|
||||
longPressDelay: App.isDesktop
|
||||
@@ -542,7 +542,7 @@ class _SettingPartTitle extends StatelessWidget {
|
||||
decoration: BoxDecoration(
|
||||
border: Border(
|
||||
bottom: BorderSide(
|
||||
color: context.colorScheme.onSurface.withOpacity(0.1),
|
||||
color: context.colorScheme.onSurface.withValues(alpha: 0.1),
|
||||
),
|
||||
),
|
||||
),
|
||||
|
@@ -267,7 +267,7 @@ class _SettingsPageState extends State<SettingsPage> implements PopEntry {
|
||||
height: 46,
|
||||
padding: const EdgeInsets.fromLTRB(12, 0, 12, 0),
|
||||
decoration: BoxDecoration(
|
||||
color: selected ? colors.primaryContainer.withOpacity(0.36) : null,
|
||||
color: selected ? colors.primaryContainer.toOpacity(0.36) : null,
|
||||
border: Border(
|
||||
left: BorderSide(
|
||||
color: selected ? colors.primary : Colors.transparent,
|
||||
|
Reference in New Issue
Block a user