Added darkmode for chat view

This commit is contained in:
2023-05-26 23:16:10 +02:00
parent 9aea09d582
commit 0f259414fb
10 changed files with 248 additions and 78 deletions

View File

@ -0,0 +1,128 @@
import 'package:flutter/material.dart';
class ColorPreviewWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
final themeData = Theme.of(context);
return ListView(
children: <Widget>[
ListTile(
leading: Icon(Icons.color_lens_outlined),
title: Text('Farbtest'),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => ColorPreviewPage(),
),
);
},
),
],
);
}
}
class ColorPreviewPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
final themeData = Theme.of(context);
final colorScheme = themeData.colorScheme;
return Scaffold(
appBar: AppBar(
title: Text('Farbtest'),
),
body: ListView(
children: <Widget>[
for (var entry in [
'Primary',
'Primary Variant',
'Secondary',
'Secondary Variant',
'Background',
'Surface',
'Error',
'On Primary',
'On Secondary',
'On Background',
'On Surface',
'On Error',
])
ColorItem(name: entry, color: _getColor(colorScheme, entry)),
],
),
);
}
Color _getColor(ColorScheme colorScheme, String name) {
switch (name) {
case 'Primary':
return colorScheme.primary;
case 'Primary Variant':
return colorScheme.primaryVariant;
case 'Secondary':
return colorScheme.secondary;
case 'Secondary Variant':
return colorScheme.secondaryVariant;
case 'Background':
return colorScheme.background;
case 'Surface':
return colorScheme.surface;
case 'Error':
return colorScheme.error;
case 'On Primary':
return colorScheme.onPrimary;
case 'On Secondary':
return colorScheme.onSecondary;
case 'On Background':
return colorScheme.onBackground;
case 'On Surface':
return colorScheme.onSurface;
case 'On Error':
return colorScheme.onError;
default:
return Colors.transparent;
}
}
}
class ColorItem extends StatelessWidget {
final String name;
final Color color;
const ColorItem({Key? key, required this.name, required this.color})
: super(key: key);
@override
Widget build(BuildContext context) {
final themeData = Theme.of(context);
return Container(
padding: EdgeInsets.all(16.0),
color: color,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Text(
name,
style: TextStyle(
color: themeData.brightness == Brightness.light
? Colors.black
: Colors.white,
),
),
Text(
'#${color.value.toRadixString(16).padLeft(8, '0').toUpperCase()}',
style: TextStyle(
color: themeData.brightness == Brightness.light
? Colors.black
: Colors.white,
),
),
],
),
);
}
}