Compare commits

..

2 commits

Author SHA1 Message Date
Leandro
732042255a Delte button + create wool from modal 2024-05-20 19:31:26 +02:00
Leandro
aa25288c3e Better add wool modal 2024-05-20 18:17:56 +02:00
10 changed files with 127 additions and 45 deletions

View file

@ -13,7 +13,7 @@ class Wolle extends Table {
IntColumn get id => integer().autoIncrement()(); IntColumn get id => integer().autoIncrement()();
TextColumn get manufacture => text()(); TextColumn get manufacture => text()();
TextColumn get title => text()(); TextColumn get title => text()();
TextColumn get color => text().withLength(min: 7, max: 7)(); IntColumn get color => integer()();
} }
class TempRange extends Table { class TempRange extends Table {

View file

@ -30,12 +30,9 @@ class $WolleTable extends Wolle with TableInfo<$WolleTable, WolleData> {
type: DriftSqlType.string, requiredDuringInsert: true); type: DriftSqlType.string, requiredDuringInsert: true);
static const VerificationMeta _colorMeta = const VerificationMeta('color'); static const VerificationMeta _colorMeta = const VerificationMeta('color');
@override @override
late final GeneratedColumn<String> color = GeneratedColumn<String>( late final GeneratedColumn<int> color = GeneratedColumn<int>(
'color', aliasedName, false, 'color', aliasedName, false,
additionalChecks: type: DriftSqlType.int, requiredDuringInsert: true);
GeneratedColumn.checkTextLength(minTextLength: 7, maxTextLength: 7),
type: DriftSqlType.string,
requiredDuringInsert: true);
@override @override
List<GeneratedColumn> get $columns => [id, manufacture, title, color]; List<GeneratedColumn> get $columns => [id, manufacture, title, color];
@override @override
@ -87,7 +84,7 @@ class $WolleTable extends Wolle with TableInfo<$WolleTable, WolleData> {
title: attachedDatabase.typeMapping title: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}title'])!, .read(DriftSqlType.string, data['${effectivePrefix}title'])!,
color: attachedDatabase.typeMapping color: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}color'])!, .read(DriftSqlType.int, data['${effectivePrefix}color'])!,
); );
} }
@ -101,7 +98,7 @@ class WolleData extends DataClass implements Insertable<WolleData> {
final int id; final int id;
final String manufacture; final String manufacture;
final String title; final String title;
final String color; final int color;
const WolleData( const WolleData(
{required this.id, {required this.id,
required this.manufacture, required this.manufacture,
@ -113,7 +110,7 @@ class WolleData extends DataClass implements Insertable<WolleData> {
map['id'] = Variable<int>(id); map['id'] = Variable<int>(id);
map['manufacture'] = Variable<String>(manufacture); map['manufacture'] = Variable<String>(manufacture);
map['title'] = Variable<String>(title); map['title'] = Variable<String>(title);
map['color'] = Variable<String>(color); map['color'] = Variable<int>(color);
return map; return map;
} }
@ -133,7 +130,7 @@ class WolleData extends DataClass implements Insertable<WolleData> {
id: serializer.fromJson<int>(json['id']), id: serializer.fromJson<int>(json['id']),
manufacture: serializer.fromJson<String>(json['manufacture']), manufacture: serializer.fromJson<String>(json['manufacture']),
title: serializer.fromJson<String>(json['title']), title: serializer.fromJson<String>(json['title']),
color: serializer.fromJson<String>(json['color']), color: serializer.fromJson<int>(json['color']),
); );
} }
@override @override
@ -143,12 +140,12 @@ class WolleData extends DataClass implements Insertable<WolleData> {
'id': serializer.toJson<int>(id), 'id': serializer.toJson<int>(id),
'manufacture': serializer.toJson<String>(manufacture), 'manufacture': serializer.toJson<String>(manufacture),
'title': serializer.toJson<String>(title), 'title': serializer.toJson<String>(title),
'color': serializer.toJson<String>(color), 'color': serializer.toJson<int>(color),
}; };
} }
WolleData copyWith( WolleData copyWith(
{int? id, String? manufacture, String? title, String? color}) => {int? id, String? manufacture, String? title, int? color}) =>
WolleData( WolleData(
id: id ?? this.id, id: id ?? this.id,
manufacture: manufacture ?? this.manufacture, manufacture: manufacture ?? this.manufacture,
@ -182,7 +179,7 @@ class WolleCompanion extends UpdateCompanion<WolleData> {
final Value<int> id; final Value<int> id;
final Value<String> manufacture; final Value<String> manufacture;
final Value<String> title; final Value<String> title;
final Value<String> color; final Value<int> color;
const WolleCompanion({ const WolleCompanion({
this.id = const Value.absent(), this.id = const Value.absent(),
this.manufacture = const Value.absent(), this.manufacture = const Value.absent(),
@ -193,7 +190,7 @@ class WolleCompanion extends UpdateCompanion<WolleData> {
this.id = const Value.absent(), this.id = const Value.absent(),
required String manufacture, required String manufacture,
required String title, required String title,
required String color, required int color,
}) : manufacture = Value(manufacture), }) : manufacture = Value(manufacture),
title = Value(title), title = Value(title),
color = Value(color); color = Value(color);
@ -201,7 +198,7 @@ class WolleCompanion extends UpdateCompanion<WolleData> {
Expression<int>? id, Expression<int>? id,
Expression<String>? manufacture, Expression<String>? manufacture,
Expression<String>? title, Expression<String>? title,
Expression<String>? color, Expression<int>? color,
}) { }) {
return RawValuesInsertable({ return RawValuesInsertable({
if (id != null) 'id': id, if (id != null) 'id': id,
@ -215,7 +212,7 @@ class WolleCompanion extends UpdateCompanion<WolleData> {
{Value<int>? id, {Value<int>? id,
Value<String>? manufacture, Value<String>? manufacture,
Value<String>? title, Value<String>? title,
Value<String>? color}) { Value<int>? color}) {
return WolleCompanion( return WolleCompanion(
id: id ?? this.id, id: id ?? this.id,
manufacture: manufacture ?? this.manufacture, manufacture: manufacture ?? this.manufacture,
@ -237,7 +234,7 @@ class WolleCompanion extends UpdateCompanion<WolleData> {
map['title'] = Variable<String>(title.value); map['title'] = Variable<String>(title.value);
} }
if (color.present) { if (color.present) {
map['color'] = Variable<String>(color.value); map['color'] = Variable<int>(color.value);
} }
return map; return map;
} }

View file

@ -1,16 +1,20 @@
import 'package:drift/drift.dart'; import 'package:drift/drift.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:temperaturdecke/database.dart'; import 'package:temperaturdecke/database.dart';
void addWool(BuildContext context) async { void addWool(BuildContext context, String title, String? manufacture,
Color color) async {
try { try {
AppDatabase db = Provider.of<AppDatabase>(context, listen: false); AppDatabase db = Provider.of<AppDatabase>(context, listen: false);
print("adding wool");
db.into(db.wolle).insert(WolleCompanion.insert( db.into(db.wolle).insert(WolleCompanion.insert(
title: 'Kakapo', title: title,
color: '#00FF05', color: color.value,
manufacture: 'test', manufacture: manufacture ?? "none",
)); ));
} catch (e) { } catch (e) {
// Fehlerbehandlung hier // Fehlerbehandlung hier
@ -27,3 +31,13 @@ void removeWool(BuildContext context, int dId) async {
print('Fehler beim Einfügen: $e'); print('Fehler beim Einfügen: $e');
} }
} }
void deleteEverything(BuildContext context) async {
AppDatabase db = Provider.of<AppDatabase>(context, listen: false);
// you only need this if you've manually enabled foreign keys
// await customStatement('PRAGMA foreign_keys = OFF');
for (final table in db.allTables) {
await db.delete(table).go();
}
;
}

View file

@ -1,32 +1,93 @@
import 'package:flex_color_picker/flex_color_picker.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_colorpicker/flutter_colorpicker.dart'; import 'package:hexcolor/hexcolor.dart';
import 'package:temperaturdecke/db_test.dart';
import 'package:temperaturdecke/widgets/modal_wrapper.dart'; import 'package:temperaturdecke/widgets/modal_wrapper.dart';
class AddWoolModal extends StatelessWidget { class AddWoolModal extends StatelessWidget {
AddWoolModal({super.key}); AddWoolModal({super.key});
String selectedColor = "#FFFFFF"; Color selectedColor = Colors.white;
String title = "";
String manufacture = "";
void setSelectedColor(Color color) { void setSelectedColor(Color color) {
selectedColor = colorToHex(color); selectedColor = color;
} }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return ModalWrapper( return ModalWrapper(
Column( Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
TextField(), SizedBox(
TextField(), height: 15,
),
Text(
"Randdaten",
textAlign: TextAlign.start,
style: Theme.of(context).textTheme.headlineSmall,
),
SizedBox(
height: 10,
),
TextField(
onChanged: (value) => {title = value},
decoration: InputDecoration(
border: OutlineInputBorder(),
labelText: 'Name',
),
),
SizedBox( SizedBox(
height: 25, height: 25,
), ),
TextField(
onChanged: (value) => {manufacture = value},
decoration: InputDecoration(
border: OutlineInputBorder(),
labelText: 'Marke',
),
),
SizedBox(
height: 30,
),
Text(
"Farbe",
textAlign: TextAlign.start,
style: Theme.of(context).textTheme.headlineSmall,
),
SizedBox(
height: 10,
),
ColorPicker( ColorPicker(
displayThumbColor: false, spacing: 8,
colorPickerWidth: 200, padding: EdgeInsets.all(0),
enableAlpha: false, borderRadius: 10,
pickerColor: Colors.black, onColorChanged: (value) => setSelectedColor(value),
onColorChanged: setSelectedColor, enableShadesSelection: false,
enableTonalPalette: true,
tonalColorSameSize: true,
pickersEnabled: {ColorPickerType.accent: false},
tonalSubheading: Divider(),
),
SizedBox(
height: 25,
),
Align(
alignment: Alignment.centerRight,
child: FilledButton(
onPressed: () => addWool(
context,
title,
manufacture,
selectedColor,
),
child: Text(
"Hinzufügen",
style: TextStyle(fontSize: 16),
),
),
) )
], ],
), ),

View file

@ -22,6 +22,8 @@ class AccentColorExample extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Placeholder(); return FilledButton(
child: Text("Delete all"),
onPressed: () => {deleteEverything(context)});
} }
} }

View file

@ -79,7 +79,7 @@ class WoolScreen extends StatelessWidget {
index, index,
snapshot.data[index].manufacture, snapshot.data[index].manufacture,
snapshot.data[index].title, snapshot.data[index].title,
snapshot.data[index].color, Color(snapshot.data[index].color),
), ),
const SizedBox( const SizedBox(
height: 15, height: 15,

View file

@ -9,7 +9,7 @@ class Woolcard extends StatelessWidget {
int id; int id;
String manufacture; String manufacture;
String title; String title;
String color; Color color;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return CustomCard(Row( return CustomCard(Row(
@ -21,7 +21,7 @@ class Woolcard extends StatelessWidget {
Container( Container(
height: 70, height: 70,
width: 30, width: 30,
color: HexColor(color), color: color,
), ),
Padding( Padding(
padding: const EdgeInsets.all(10.0), padding: const EdgeInsets.all(10.0),

View file

@ -17,7 +17,7 @@ class ModalWrapper extends StatelessWidget {
width: 750, width: 750,
height: MediaQuery.of(context).size.height - 100, height: MediaQuery.of(context).size.height - 100,
child: Padding( child: Padding(
padding: EdgeInsets.symmetric(horizontal: 25, vertical: 10), padding: EdgeInsets.symmetric(horizontal: 25, vertical: 0),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [

View file

@ -265,19 +265,27 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.1.0" version: "1.1.0"
flex_color_picker:
dependency: "direct main"
description:
name: flex_color_picker
sha256: "5c846437069fb7afdd7ade6bf37e628a71d2ab0787095ddcb1253bf9345d5f3a"
url: "https://pub.dev"
source: hosted
version: "3.4.1"
flex_seed_scheme:
dependency: transitive
description:
name: flex_seed_scheme
sha256: "4cee2f1d07259f77e8b36f4ec5f35499d19e74e17c7dce5b819554914082bc01"
url: "https://pub.dev"
source: hosted
version: "1.5.0"
flutter: flutter:
dependency: "direct main" dependency: "direct main"
description: flutter description: flutter
source: sdk source: sdk
version: "0.0.0" version: "0.0.0"
flutter_colorpicker:
dependency: "direct main"
description:
name: flutter_colorpicker
sha256: "969de5f6f9e2a570ac660fb7b501551451ea2a1ab9e2097e89475f60e07816ea"
url: "https://pub.dev"
source: hosted
version: "1.1.0"
flutter_lints: flutter_lints:
dependency: "direct dev" dependency: "direct dev"
description: description:

View file

@ -35,7 +35,7 @@ dependencies:
shimmer: shimmer:
flutter_colorpicker: flex_color_picker:
hexcolor: hexcolor: