feat(quality): harden lint rules and add quality-gate tests
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import '../tema/pluriwave_theme.dart';
|
||||
import 'pluri_glass_surface.dart';
|
||||
@@ -72,29 +72,32 @@ class _PluriNavButton extends StatelessWidget {
|
||||
margin: EdgeInsets.symmetric(horizontal: selected ? 3 : 2),
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(999),
|
||||
gradient: selected
|
||||
? LinearGradient(
|
||||
colors: [
|
||||
t.electricMagenta.withValues(alpha: 0.32),
|
||||
t.warmCoral.withValues(alpha: 0.18),
|
||||
],
|
||||
)
|
||||
: null,
|
||||
gradient:
|
||||
selected
|
||||
? LinearGradient(
|
||||
colors: [
|
||||
t.electricMagenta.withValues(alpha: 0.32),
|
||||
t.warmCoral.withValues(alpha: 0.18),
|
||||
],
|
||||
)
|
||||
: null,
|
||||
border: Border.all(
|
||||
color: selected
|
||||
? Colors.white.withValues(alpha: 0.22)
|
||||
: Colors.white.withValues(alpha: 0.06),
|
||||
color:
|
||||
selected
|
||||
? Colors.white.withValues(alpha: 0.22)
|
||||
: Colors.white.withValues(alpha: 0.06),
|
||||
),
|
||||
boxShadow: selected
|
||||
? [
|
||||
BoxShadow(
|
||||
color: t.glowColor.withValues(alpha: 0.36),
|
||||
blurRadius: 24,
|
||||
spreadRadius: -6,
|
||||
offset: const Offset(0, 8),
|
||||
),
|
||||
]
|
||||
: const [],
|
||||
boxShadow:
|
||||
selected
|
||||
? [
|
||||
BoxShadow(
|
||||
color: t.glowColor.withValues(alpha: 0.36),
|
||||
blurRadius: 24,
|
||||
spreadRadius: -6,
|
||||
offset: const Offset(0, 8),
|
||||
),
|
||||
]
|
||||
: const [],
|
||||
),
|
||||
child: InkWell(
|
||||
borderRadius: BorderRadius.circular(999),
|
||||
@@ -113,30 +116,34 @@ class _PluriNavButton extends StatelessWidget {
|
||||
curve: Curves.easeOutBack,
|
||||
child: PluriIcon(
|
||||
glyph: item.glyph,
|
||||
variant: selected
|
||||
? PluriIconVariant.activeGlow
|
||||
: PluriIconVariant.filled,
|
||||
variant:
|
||||
selected
|
||||
? PluriIconVariant.activeGlow
|
||||
: PluriIconVariant.filled,
|
||||
size: selected ? 42 : 34,
|
||||
),
|
||||
),
|
||||
AnimatedSize(
|
||||
duration: context.pluriMotion.quick,
|
||||
curve: Curves.easeOutCubic,
|
||||
child: selected
|
||||
? Padding(
|
||||
padding: const EdgeInsets.only(top: 2),
|
||||
child: Text(
|
||||
item.label,
|
||||
maxLines: 1,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
style: Theme.of(context).textTheme.labelSmall?.copyWith(
|
||||
color: foreground,
|
||||
fontWeight: FontWeight.w900,
|
||||
letterSpacing: -0.2,
|
||||
),
|
||||
),
|
||||
)
|
||||
: const SizedBox.shrink(),
|
||||
child:
|
||||
selected
|
||||
? Padding(
|
||||
padding: const EdgeInsets.only(top: 2),
|
||||
child: Text(
|
||||
item.label,
|
||||
maxLines: 1,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
style: Theme.of(
|
||||
context,
|
||||
).textTheme.labelSmall?.copyWith(
|
||||
color: foreground,
|
||||
fontWeight: FontWeight.w900,
|
||||
letterSpacing: -0.2,
|
||||
),
|
||||
),
|
||||
)
|
||||
: const SizedBox.shrink(),
|
||||
),
|
||||
],
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user