spotube/lib/pages/settings/scrobbling/scrobbling.dart

68 lines
2.4 KiB
Dart

import 'package:auto_route/auto_route.dart';
import 'package:flutter/material.dart'
show ListTile, ListTileTheme, ListTileThemeData, Material, MaterialType;
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:shadcn_flutter/shadcn_flutter_extension.dart';
import 'package:spotube/collections/routes.gr.dart';
import 'package:spotube/collections/spotube_icons.dart';
import 'package:spotube/components/titlebar/titlebar.dart';
import 'package:spotube/extensions/context.dart';
@RoutePage()
class SettingsScrobblingPage extends HookConsumerWidget {
static const name = "settings_scrobbling";
const SettingsScrobblingPage({super.key});
@override
Widget build(BuildContext context, ref) {
return Material(
type: MaterialType.transparency,
child: ListTileTheme(
data: ListTileThemeData(
contentPadding: EdgeInsets.zero,
minVerticalPadding: 0,
shape: RoundedRectangleBorder(
borderRadius: context.theme.borderRadiusLg,
side: BorderSide(
color: context.theme.colorScheme.border,
width: .5,
),
),
textColor: context.theme.colorScheme.foreground,
iconColor: context.theme.colorScheme.foreground,
selectedColor: context.theme.colorScheme.accent,
subtitleTextStyle: context.theme.typography.xSmall,
),
child: SafeArea(
bottom: false,
child: Scaffold(
headers: [TitleBar(title: Text(context.l10n.scrobbling))],
child: ListView(
padding: const EdgeInsets.all(8),
children: [
Card(
padding: const EdgeInsets.symmetric(horizontal: 16),
child: ListTile(
leading: const Icon(SpotubeIcons.lastFm, color: Colors.red),
title: Text(context.l10n.login_with_lastfm),
subtitle: Text(context.l10n.scrobble_to_lastfm),
trailing: Button.secondary(
leading: const Icon(SpotubeIcons.lastFm),
onPressed: () {
context.navigateTo(const LastFMLoginRoute());
},
child: Text(context.l10n.connect),
),
),
),
],
),
),
),
),
);
}
}