Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d5916e01b5 |
@@ -1,3 +1,3 @@
|
|||||||
const appDisplayVersion = '3.5.1';
|
const appDisplayVersion = '3.5.2';
|
||||||
const appBuildNumber = 77;
|
const appBuildNumber = 78;
|
||||||
const appReleaseChannel = 'Stable';
|
const appReleaseChannel = 'Stable';
|
||||||
|
|||||||
@@ -1,4 +1,13 @@
|
|||||||
const prismaChangelog = [
|
const prismaChangelog = [
|
||||||
|
PrismaChange(
|
||||||
|
version: '3.5.2',
|
||||||
|
title: 'Исправление наложения клавиатуры и поиска авторов',
|
||||||
|
bullets: [
|
||||||
|
'Устранена ошибка выдвижения белого прямоугольника: исправлен конфликт двойного учета клавиатурного отступа (double viewInsets) во вложенных скаффолдах.',
|
||||||
|
'Корректная видимость авторов: карточки артистов больше не сжимаются и остаются полностью видимыми и прокручиваемыми при вводе запроса.',
|
||||||
|
'Улучшенное поведение интерфейса: плавающая кнопка настроек и нижняя панель скрываются при открытии клавиатуры, добавлен свайп для скрытия клавиатуры при прокрутке.',
|
||||||
|
],
|
||||||
|
),
|
||||||
PrismaChange(
|
PrismaChange(
|
||||||
version: '3.5.1',
|
version: '3.5.1',
|
||||||
title: 'Улучшение панели поиска и фильтров авторов в Liquid Glass',
|
title: 'Улучшение панели поиска и фильтров авторов в Liquid Glass',
|
||||||
|
|||||||
@@ -97,7 +97,11 @@ class _ArtistsScreenState extends ConsumerState<ArtistsScreen> {
|
|||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
_scroll.addListener(() {
|
_scroll.addListener(() {
|
||||||
if (_scroll.position.extentAfter < 500) _loadMore();
|
if (_scroll.hasClients &&
|
||||||
|
_scroll.position.hasContentDimensions &&
|
||||||
|
_scroll.position.extentAfter < 500) {
|
||||||
|
_loadMore();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -128,6 +132,7 @@ class _ArtistsScreenState extends ConsumerState<ArtistsScreen> {
|
|||||||
|
|
||||||
return AdaptiveScaffold(
|
return AdaptiveScaffold(
|
||||||
title: 'Artists',
|
title: 'Artists',
|
||||||
|
resizeToAvoidBottomInset: false,
|
||||||
actions: [
|
actions: [
|
||||||
IconButton(
|
IconButton(
|
||||||
tooltip: 'Синхронизация Pawchive',
|
tooltip: 'Синхронизация Pawchive',
|
||||||
@@ -252,6 +257,8 @@ class _ArtistsScreenState extends ConsumerState<ArtistsScreen> {
|
|||||||
: 1;
|
: 1;
|
||||||
return GridView.builder(
|
return GridView.builder(
|
||||||
controller: _scroll,
|
controller: _scroll,
|
||||||
|
keyboardDismissBehavior:
|
||||||
|
ScrollViewKeyboardDismissBehavior.onDrag,
|
||||||
padding:
|
padding:
|
||||||
const EdgeInsets.fromLTRB(16, 10, 16, 18),
|
const EdgeInsets.fromLTRB(16, 10, 16, 18),
|
||||||
gridDelegate:
|
gridDelegate:
|
||||||
@@ -594,6 +601,7 @@ class _ArtistsHeader extends StatelessWidget {
|
|||||||
child: TextField(
|
child: TextField(
|
||||||
controller: searchController,
|
controller: searchController,
|
||||||
textInputAction: TextInputAction.search,
|
textInputAction: TextInputAction.search,
|
||||||
|
autocorrect: false,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 14,
|
fontSize: 14,
|
||||||
color: isDark ? Colors.white : const Color(0xFF0F172A),
|
color: isDark ? Colors.white : const Color(0xFF0F172A),
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ class AdaptiveScaffold extends StatelessWidget {
|
|||||||
this.titleWidget,
|
this.titleWidget,
|
||||||
this.actions = const [],
|
this.actions = const [],
|
||||||
this.floatingActionButton,
|
this.floatingActionButton,
|
||||||
|
this.resizeToAvoidBottomInset = false,
|
||||||
super.key,
|
super.key,
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -17,11 +18,13 @@ class AdaptiveScaffold extends StatelessWidget {
|
|||||||
final Widget body;
|
final Widget body;
|
||||||
final List<Widget> actions;
|
final List<Widget> actions;
|
||||||
final Widget? floatingActionButton;
|
final Widget? floatingActionButton;
|
||||||
|
final bool resizeToAvoidBottomInset;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
if (Responsive.isMobile(context)) {
|
if (Responsive.isMobile(context)) {
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
|
resizeToAvoidBottomInset: resizeToAvoidBottomInset,
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
title: titleWidget ?? Text(title),
|
title: titleWidget ?? Text(title),
|
||||||
actions: actions,
|
actions: actions,
|
||||||
@@ -35,6 +38,7 @@ class AdaptiveScaffold extends StatelessWidget {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
|
resizeToAvoidBottomInset: resizeToAvoidBottomInset,
|
||||||
appBar: AppBar(title: titleWidget ?? Text(title), actions: actions),
|
appBar: AppBar(title: titleWidget ?? Text(title), actions: actions),
|
||||||
body: body,
|
body: body,
|
||||||
floatingActionButton: floatingActionButton,
|
floatingActionButton: floatingActionButton,
|
||||||
|
|||||||
@@ -352,19 +352,23 @@ class _MobileShell extends StatelessWidget {
|
|||||||
? location == '/'
|
? location == '/'
|
||||||
: location.startsWith(item.location),
|
: location.startsWith(item.location),
|
||||||
);
|
);
|
||||||
final bottomInset = 76.0 + MediaQuery.paddingOf(context).bottom;
|
final isKeyboardOpen = MediaQuery.viewInsetsOf(context).bottom > 0;
|
||||||
|
final bottomInset = isKeyboardOpen
|
||||||
|
? 0.0
|
||||||
|
: 76.0 + MediaQuery.paddingOf(context).bottom;
|
||||||
|
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
extendBody: true,
|
extendBody: true,
|
||||||
body: MediaQuery(
|
body: MediaQuery(
|
||||||
data: MediaQuery.of(context).copyWith(
|
data: MediaQuery.of(context).copyWith(
|
||||||
|
viewInsets: MediaQuery.of(context).viewInsets.copyWith(bottom: 0),
|
||||||
padding: MediaQuery.of(context).padding.copyWith(
|
padding: MediaQuery.of(context).padding.copyWith(
|
||||||
bottom: bottomInset,
|
bottom: bottomInset,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
child: child,
|
child: child,
|
||||||
),
|
),
|
||||||
floatingActionButton: location == '/settings'
|
floatingActionButton: (location == '/settings' || isKeyboardOpen)
|
||||||
? null
|
? null
|
||||||
: Padding(
|
: Padding(
|
||||||
padding: const EdgeInsets.only(bottom: 0, right: 2),
|
padding: const EdgeInsets.only(bottom: 0, right: 2),
|
||||||
@@ -374,12 +378,15 @@ class _MobileShell extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
floatingActionButtonLocation: FloatingActionButtonLocation.endFloat,
|
floatingActionButtonLocation: FloatingActionButtonLocation.endFloat,
|
||||||
bottomNavigationBar: _LiquidGlassBottomBar(
|
bottomNavigationBar: isKeyboardOpen
|
||||||
selectedIndex: selected < 0 ? 0 : selected,
|
? null
|
||||||
onDestinationSelected: (index) => context.go(items[index].location),
|
: _LiquidGlassBottomBar(
|
||||||
items: items,
|
selectedIndex: selected < 0 ? 0 : selected,
|
||||||
ru: ru,
|
onDestinationSelected: (index) =>
|
||||||
),
|
context.go(items[index].location),
|
||||||
|
items: items,
|
||||||
|
ru: ru,
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
name: gel_rule_app
|
name: gel_rule_app
|
||||||
description: Local backend/core layer for a Flutter booru browser app.
|
description: Local backend/core layer for a Flutter booru browser app.
|
||||||
publish_to: "none"
|
publish_to: "none"
|
||||||
version: 3.5.1+77
|
version: 3.5.2+78
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.3.0 <4.0.0"
|
sdk: ">=3.3.0 <4.0.0"
|
||||||
|
|||||||
Reference in New Issue
Block a user