feat: Extended stories
parent
616655350b
commit
78ca38c40a
@ -0,0 +1,43 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:matrix/matrix.dart';
|
||||
|
||||
class StoryThemeData {
|
||||
final Color? color1;
|
||||
final Color? color2;
|
||||
final BoxFit fit;
|
||||
final int alignmentX;
|
||||
final int alignmentY;
|
||||
|
||||
static const String contentKey = 'msc3588.stories.design';
|
||||
|
||||
const StoryThemeData({
|
||||
this.color1,
|
||||
this.color2,
|
||||
this.fit = BoxFit.contain,
|
||||
this.alignmentX = 0,
|
||||
this.alignmentY = 0,
|
||||
});
|
||||
|
||||
factory StoryThemeData.fromJson(Map<String, dynamic> json) {
|
||||
final color1Int = json.tryGet<int>('color1');
|
||||
final color2Int = json.tryGet<int>('color2');
|
||||
final color1 = color1Int == null ? null : Color(color1Int);
|
||||
final color2 = color2Int == null ? null : Color(color2Int);
|
||||
return StoryThemeData(
|
||||
color1: color1,
|
||||
color2: color2,
|
||||
fit:
|
||||
json.tryGet<String>('fit') == 'cover' ? BoxFit.cover : BoxFit.contain,
|
||||
alignmentX: json.tryGet<int>('alignment_x') ?? 0,
|
||||
alignmentY: json.tryGet<int>('alignment_y') ?? 0,
|
||||
);
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
if (color1 != null) 'color1': color1?.value,
|
||||
if (color2 != null) 'color2': color2?.value,
|
||||
'fit': fit.name,
|
||||
'alignment_x': alignmentX,
|
||||
'alignment_y': alignmentY,
|
||||
};
|
||||
}
|
Loading…
Reference in New Issue