Add initial settings screen with low BW moved to it

merge-requests/67/merge
Hank Grabowski 2023-01-19 13:18:15 -05:00
rodzic 02432a0a6e
commit 3401d51c3c
4 zmienionych plików z 50 dodań i 25 usunięć

Wyświetl plik

@ -11,6 +11,7 @@ import 'screens/menus_screen.dart';
import 'screens/notifications_screen.dart';
import 'screens/post_screen.dart';
import 'screens/profile_screen.dart';
import 'screens/settings_screen.dart';
import 'screens/sign_in.dart';
import 'screens/splash.dart';
import 'screens/user_posts_screen.dart';
@ -22,13 +23,13 @@ class ScreenPaths {
static String contacts = '/contacts';
static String splash = '/splash';
static String menu = '/menu';
static String settings = '/settings';
static String timelines = '/';
static String gallery = '/gallery';
static String profile = '/profile';
static String notifications = '/notifications';
static String signin = '/signin';
static String signup = '/signup';
static String settings = '/settings';
static String userProfile = '/user_profile';
static String userPosts = '/user_posts';
}
@ -99,6 +100,13 @@ final appRouter = GoRouter(
child: MenusScreen(),
),
),
GoRoute(
path: ScreenPaths.settings,
name: ScreenPaths.settings,
pageBuilder: (context, state) => NoTransitionPage(
child: SettingsScreen(),
),
),
GoRoute(
path: ScreenPaths.gallery,
name: ScreenPaths.gallery,

Wyświetl plik

@ -12,9 +12,11 @@ class MenusScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
final items = [
final menuItems = [
buildMenuButton('Gallery', () => context.pushNamed(ScreenPaths.gallery)),
buildMenuButton('Profile', () => context.pushNamed(ScreenPaths.profile)),
buildMenuButton(
'Settings', () => context.pushNamed(ScreenPaths.settings)),
buildMenuButton('Logout', () async {
final confirm = await showYesNoDialog(context, 'Log out account?');
if (confirm == true) {
@ -26,13 +28,12 @@ class MenusScreen extends StatelessWidget {
body: Center(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: GridView.builder(
itemCount: items.length,
child: GridView(
gridDelegate: const SliverGridDelegateWithMaxCrossAxisExtent(
mainAxisExtent: menuButtonHeight,
maxCrossAxisExtent: menuButtonWidth,
),
itemBuilder: (context, index) => items[index],
children: menuItems,
),
),
),

Wyświetl plik

@ -1,10 +1,8 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../controls/padding.dart';
import '../controls/standard_appbar.dart';
import '../services/auth_service.dart';
import '../services/setting_service.dart';
class ProfileScreen extends StatefulWidget {
const ProfileScreen({super.key});
@ -16,7 +14,6 @@ class ProfileScreen extends StatefulWidget {
class _ProfileScreenState extends State<ProfileScreen> {
@override
Widget build(BuildContext context) {
final settings = context.watch<SettingsService>();
final authService = context.watch<AuthService>();
return Scaffold(
appBar: StandardAppBar.build(context, 'Profile'),
@ -24,25 +21,8 @@ class _ProfileScreenState extends State<ProfileScreen> {
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Checkbox(
value: settings.lowBandwidthMode,
onChanged: (value) =>
settings.lowBandwidthMode = value ?? false,
),
const Text('Low Bandwidth Mode'),
],
),
Text(
'Profile: ${authService.currentClient.fold(onSuccess: (client) => client.credentials.handle, onError: (error) => 'Error Getting Profile')}'),
const VerticalPadding(),
ElevatedButton(
onPressed: () async {
await authService.signOut();
},
child: const Text('Sign Out')),
],
),
),

Wyświetl plik

@ -0,0 +1,36 @@
import 'package:flutter/material.dart';
import 'package:friendica_portal/services/setting_service.dart';
import 'package:provider/provider.dart';
import '../controls/standard_appbar.dart';
class SettingsScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
final settings = context.watch<SettingsService>();
return Scaffold(
appBar: StandardAppBar.build(context, 'Settings'),
body: Center(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: ListView(
children: [
buildLowBandwidthWidget(settings),
],
),
),
));
}
Widget buildLowBandwidthWidget(SettingsService settings) {
return ListTile(
title: const Text('Low bandwidth mode'),
trailing: Checkbox(
onChanged: (value) {
settings.lowBandwidthMode = value ?? false;
},
value: settings.lowBandwidthMode,
),
);
}
}