refactor: move themes to package

pull/11/head
Allison Ryan 4 years ago
parent 8f3fc4b248
commit 0e98a74b17

@ -1,9 +0,0 @@
import 'package:flutter/material.dart';
import 'package:pinball/character_themes/character_themes.dart';
class AndroidTheme extends CharacterTheme {
const AndroidTheme();
@override
Color get ballColor => Colors.green;
}

@ -1,18 +0,0 @@
import 'package:equatable/equatable.dart';
import 'package:flame/palette.dart';
/// {@template character_theme}
/// Template for creating character themes.
///
/// Any character specific game pieces should have a getter specified here so
/// their corresponding assets can be retrieved for the game.
/// {@endtemplate}
abstract class CharacterTheme extends Equatable {
/// {@macro character_theme}
const CharacterTheme();
Color get ballColor;
@override
List<Object?> get props => [];
}

@ -1,9 +0,0 @@
import 'package:flutter/material.dart';
import 'package:pinball/character_themes/character_themes.dart';
class DashTheme extends CharacterTheme {
const DashTheme();
@override
Color get ballColor => Colors.blue;
}

@ -1,9 +0,0 @@
import 'package:flutter/material.dart';
import 'package:pinball/character_themes/character_themes.dart';
class DinoTheme extends CharacterTheme {
const DinoTheme();
@override
Color get ballColor => Colors.grey;
}

@ -1,9 +0,0 @@
import 'package:flutter/material.dart';
import 'package:pinball/character_themes/character_themes.dart';
class SparkyTheme extends CharacterTheme {
const SparkyTheme();
@override
Color get ballColor => Colors.orange;
}

@ -1,13 +1,13 @@
import 'package:bloc/bloc.dart'; import 'package:bloc/bloc.dart';
import 'package:equatable/equatable.dart'; import 'package:equatable/equatable.dart';
import 'package:pinball/character_themes/character_themes.dart'; import 'package:pinball_theme/pinball_theme.dart';
part 'theme_state.dart'; part 'theme_state.dart';
class ThemeCubit extends Cubit<ThemeState> { class ThemeCubit extends Cubit<ThemeState> {
ThemeCubit() : super(const ThemeState(DashTheme())); ThemeCubit() : super(const ThemeState(DashTheme()));
void themeSelected(CharacterTheme theme) { void themeSelected(PinballTheme theme) {
emit(ThemeState(theme)); emit(ThemeState(theme));
} }
} }

@ -3,7 +3,7 @@ part of 'theme_cubit.dart';
class ThemeState extends Equatable { class ThemeState extends Equatable {
const ThemeState(this.theme); const ThemeState(this.theme);
final CharacterTheme theme; final PinballTheme theme;
@override @override
List<Object> get props => [theme]; List<Object> get props => [theme];

@ -0,0 +1 @@
export 'cubit/theme_cubit.dart';

@ -0,0 +1,39 @@
# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/
# IntelliJ related
*.iml
*.ipr
*.iws
.idea/
# VSCode related
.vscode/
# Flutter/Dart/Pub related
**/doc/api/
**/ios/Flutter/.last_build_id
.dart_tool/
.flutter-plugins
.flutter-plugins-dependencies
.packages
.pub-cache/
.pub/
/build/
# Web related
lib/generated_plugin_registrant.dart
# Symbolication related
app.*.symbols
# Obfuscation related
app.*.map.json

@ -0,0 +1,11 @@
# pinball_theme
[![style: very good analysis][very_good_analysis_badge]][very_good_analysis_link]
[![License: MIT][license_badge]][license_link]
Package containing themes for pinball game.
[license_badge]: https://img.shields.io/badge/license-MIT-blue.svg
[license_link]: https://opensource.org/licenses/MIT
[very_good_analysis_badge]: https://img.shields.io/badge/style-very_good_analysis-B22C89.svg
[very_good_analysis_link]: https://pub.dev/packages/very_good_analysis

@ -0,0 +1 @@
include: package:very_good_analysis/analysis_options.2.4.0.yaml

@ -0,0 +1,4 @@
library pinball_theme;
export 'src/pinball_theme.dart';
export 'src/themes/themes.dart';

@ -0,0 +1,19 @@
import 'package:equatable/equatable.dart';
import 'package:flutter/material.dart';
/// {@template pinball_theme}
/// Base class for creating pinball themes.
///
/// Character specific game components should have a getter specified here to
/// load their corresponding assets for the game.
/// {@endtemplate}
abstract class PinballTheme extends Equatable {
/// {@macro pinball_theme}
const PinballTheme();
/// Ball color for this theme.
Color get ballColor;
@override
List<Object?> get props => [];
}

@ -0,0 +1,13 @@
import 'package:flutter/material.dart';
import 'package:pinball_theme/pinball_theme.dart';
/// {@template android_theme}
/// Class defining Android theme assets and attributes.
/// {@endtemplate}
class AndroidTheme extends PinballTheme {
/// {@macro android_theme}
const AndroidTheme();
@override
Color get ballColor => Colors.green;
}

@ -0,0 +1,13 @@
import 'package:flutter/material.dart';
import 'package:pinball_theme/pinball_theme.dart';
/// {@template dash_theme}
/// Class defining Dash theme assets and attributes.
/// {@endtemplate}
class DashTheme extends PinballTheme {
/// {@macro dash_theme}
const DashTheme();
@override
Color get ballColor => Colors.blue;
}

@ -0,0 +1,13 @@
import 'package:flutter/material.dart';
import 'package:pinball_theme/pinball_theme.dart';
/// {@template dino_theme}
/// Class defining Dino theme assets and attributes.
/// {@endtemplate}
class DinoTheme extends PinballTheme {
/// {@macro dino_theme}
const DinoTheme();
@override
Color get ballColor => Colors.grey;
}

@ -0,0 +1,13 @@
import 'package:flutter/material.dart';
import 'package:pinball_theme/pinball_theme.dart';
/// {@template sparky_theme}
/// Class defining Sparky theme assets and attributes.
/// {@endtemplate}
class SparkyTheme extends PinballTheme {
/// {@macro sparky_theme}
const SparkyTheme();
@override
Color get ballColor => Colors.orange;
}

@ -1,6 +1,4 @@
export 'android_theme.dart'; export 'android_theme.dart';
export 'character_theme.dart';
export 'cubit/theme_cubit.dart';
export 'dash_theme.dart'; export 'dash_theme.dart';
export 'dino_theme.dart'; export 'dino_theme.dart';
export 'sparky_theme.dart'; export 'sparky_theme.dart';

@ -0,0 +1,17 @@
name: pinball_theme
description: Package containing themes for pinball game.
version: 1.0.0+1
publish_to: none
environment:
sdk: ">=2.16.0 <3.0.0"
dependencies:
equatable: ^2.0.3
flutter:
sdk: flutter
dev_dependencies:
flutter_test:
sdk: flutter
very_good_analysis: ^2.4.0

@ -2,7 +2,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'package:pinball/character_themes/character_themes.dart'; import 'package:pinball_theme/pinball_theme.dart';
void main() { void main() {
group('AndroidTheme', () { group('AndroidTheme', () {

@ -2,7 +2,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'package:pinball/character_themes/character_themes.dart'; import 'package:pinball_theme/pinball_theme.dart';
void main() { void main() {
group('DashTheme', () { group('DashTheme', () {

@ -2,7 +2,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'package:pinball/character_themes/character_themes.dart'; import 'package:pinball_theme/pinball_theme.dart';
void main() { void main() {
group('DinoTheme', () { group('DinoTheme', () {

@ -2,7 +2,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'package:pinball/character_themes/character_themes.dart'; import 'package:pinball_theme/pinball_theme.dart';
void main() { void main() {
group('SparkyTheme', () { group('SparkyTheme', () {

@ -324,6 +324,13 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.8.0" version: "1.8.0"
pinball_theme:
dependency: "direct main"
description:
path: "packages/pinball_theme"
relative: true
source: path
version: "1.0.0+1"
pool: pool:
dependency: transitive dependency: transitive
description: description:

@ -18,6 +18,8 @@ dependencies:
flutter_localizations: flutter_localizations:
sdk: flutter sdk: flutter
intl: ^0.17.0 intl: ^0.17.0
pinball_theme:
path: packages/pinball_theme
dev_dependencies: dev_dependencies:
bloc_test: ^9.0.2 bloc_test: ^9.0.2

@ -1,6 +1,7 @@
import 'package:bloc_test/bloc_test.dart'; import 'package:bloc_test/bloc_test.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'package:pinball/character_themes/character_themes.dart'; import 'package:pinball/theme/theme.dart';
import 'package:pinball_theme/pinball_theme.dart';
void main() { void main() {
group('ThemeCubit', () { group('ThemeCubit', () {

@ -1,7 +1,8 @@
// ignore_for_file: prefer_const_constructors // ignore_for_file: prefer_const_constructors
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'package:pinball/character_themes/character_themes.dart'; import 'package:pinball/theme/theme.dart';
import 'package:pinball_theme/pinball_theme.dart';
void main() { void main() {
group('ThemeState', () { group('ThemeState', () {
Loading…
Cancel
Save