Add a filters page
This commit is contained in:
parent
ce29fd3791
commit
e968d61e8b
6 changed files with 173 additions and 11 deletions
|
@ -1,7 +1,7 @@
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
|
||||||
class Constants {
|
class Constants {
|
||||||
static const VERSION = "1.0.032325+1840";
|
static const VERSION = "1.0.032325+1956";
|
||||||
|
|
||||||
static bool get isMobile => Platform.isAndroid || Platform.isIOS;
|
static bool get isMobile => Platform.isAndroid || Platform.isIOS;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
|
||||||
import 'package:libacflutter/Constants.dart';
|
import 'package:libacflutter/Constants.dart';
|
||||||
import 'package:pokedex/Consts.dart';
|
import 'package:pokedex/Consts.dart';
|
||||||
import 'package:pokedex/Session.dart';
|
import 'package:pokedex/Session.dart';
|
||||||
|
import 'package:pokedex/filters.dart';
|
||||||
import 'package:pokedex/pokemon.dart';
|
import 'package:pokedex/pokemon.dart';
|
||||||
|
|
||||||
class MainApp extends StatefulWidget {
|
class MainApp extends StatefulWidget {
|
||||||
|
@ -26,6 +27,7 @@ class _MainAppState extends State<MainApp> {
|
||||||
routes: {
|
routes: {
|
||||||
"/": (context) => Home(toggleTheme: toggleTheme),
|
"/": (context) => Home(toggleTheme: toggleTheme),
|
||||||
"/dex": (context) => DexEntry(),
|
"/dex": (context) => DexEntry(),
|
||||||
|
"/filters": (context) => FilterPage(),
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -75,6 +77,14 @@ class _HomeState extends State<Home> {
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
ListTile(
|
||||||
|
title: Text("Filters"),
|
||||||
|
leading: Icon(Icons.filter),
|
||||||
|
subtitle: Text("Opens the PokeDex filters"),
|
||||||
|
onTap: () {
|
||||||
|
Navigator.pushNamed(context, "/filters");
|
||||||
|
},
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
import 'package:pokedex/filters.dart';
|
||||||
|
|
||||||
class SessionData {
|
class SessionData {
|
||||||
static bool darkMode = false;
|
static bool darkMode = false;
|
||||||
|
static int filter = Filters.All;
|
||||||
}
|
}
|
||||||
|
|
144
lib/filters.dart
Normal file
144
lib/filters.dart
Normal file
|
@ -0,0 +1,144 @@
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter/widgets.dart';
|
||||||
|
import 'package:libacflutter/Constants.dart';
|
||||||
|
import 'package:pokedex/Session.dart';
|
||||||
|
|
||||||
|
class Filters {
|
||||||
|
static final int GEN1 = 1;
|
||||||
|
static final int GEN2 = 2;
|
||||||
|
static final int GEN3 = 4;
|
||||||
|
static final int GEN4 = 8;
|
||||||
|
static final int GEN5 = 16;
|
||||||
|
static final int GEN6 = 32;
|
||||||
|
static final int GEN7 = 64;
|
||||||
|
static final int GEN8 = 128;
|
||||||
|
static final int GEN9 = 255;
|
||||||
|
|
||||||
|
static final int All =
|
||||||
|
GEN1 | GEN2 | GEN3 | GEN4 | GEN5 | GEN6 | GEN7 | GEN8 | GEN9;
|
||||||
|
}
|
||||||
|
|
||||||
|
class FilterPage extends StatefulWidget {
|
||||||
|
@override
|
||||||
|
State<StatefulWidget> createState() {
|
||||||
|
return _filterPage();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class _filterPage extends State<FilterPage> {
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Scaffold(
|
||||||
|
appBar: AppBar(
|
||||||
|
title: Text("PokeDex - Filters"),
|
||||||
|
backgroundColor:
|
||||||
|
SessionData.darkMode
|
||||||
|
? LibACFlutterConstants.TITLEBAR_COLOR
|
||||||
|
: Colors.cyan,
|
||||||
|
),
|
||||||
|
body: Padding(
|
||||||
|
padding: EdgeInsets.all(8),
|
||||||
|
child: SingleChildScrollView(
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
"The PokeDex's filters will allow you to customize what Generations are shown in the app.\n\n** WARNING **\nThis will prevent evolutions from showing up if the Pokemon resides in a future generation.\n\nThe dex entries will also not show the evolution conditions, or catch conditions for disabled generations.",
|
||||||
|
style: TextStyle(fontSize: 24),
|
||||||
|
),
|
||||||
|
SwitchListTile(
|
||||||
|
value: (SessionData.filter & Filters.GEN1 == Filters.GEN1),
|
||||||
|
title: Text("Generation 1"),
|
||||||
|
|
||||||
|
onChanged: (val) {
|
||||||
|
setState(() {
|
||||||
|
SessionData.filter = SessionData.filter ^ Filters.GEN1;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
),
|
||||||
|
SwitchListTile(
|
||||||
|
value: (SessionData.filter & Filters.GEN2 == Filters.GEN2),
|
||||||
|
title: Text("Generation 2"),
|
||||||
|
|
||||||
|
onChanged: (val) {
|
||||||
|
setState(() {
|
||||||
|
SessionData.filter = SessionData.filter ^ Filters.GEN2;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
),
|
||||||
|
SwitchListTile(
|
||||||
|
value: (SessionData.filter & Filters.GEN3 == Filters.GEN3),
|
||||||
|
title: Text("Generation 3"),
|
||||||
|
|
||||||
|
onChanged: (val) {
|
||||||
|
setState(() {
|
||||||
|
SessionData.filter = SessionData.filter ^ Filters.GEN3;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
),
|
||||||
|
SwitchListTile(
|
||||||
|
value: (SessionData.filter & Filters.GEN4 == Filters.GEN4),
|
||||||
|
title: Text("Generation 4"),
|
||||||
|
|
||||||
|
onChanged: (val) {
|
||||||
|
setState(() {
|
||||||
|
SessionData.filter = SessionData.filter ^ Filters.GEN4;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
),
|
||||||
|
SwitchListTile(
|
||||||
|
value: (SessionData.filter & Filters.GEN5 == Filters.GEN5),
|
||||||
|
title: Text("Generation 5"),
|
||||||
|
|
||||||
|
onChanged: (val) {
|
||||||
|
setState(() {
|
||||||
|
SessionData.filter = SessionData.filter ^ Filters.GEN5;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
),
|
||||||
|
SwitchListTile(
|
||||||
|
value: (SessionData.filter & Filters.GEN6 == Filters.GEN6),
|
||||||
|
title: Text("Generation 6"),
|
||||||
|
|
||||||
|
onChanged: (val) {
|
||||||
|
setState(() {
|
||||||
|
SessionData.filter = SessionData.filter ^ Filters.GEN6;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
),
|
||||||
|
SwitchListTile(
|
||||||
|
value: (SessionData.filter & Filters.GEN7 == Filters.GEN7),
|
||||||
|
title: Text("Generation 7"),
|
||||||
|
|
||||||
|
onChanged: (val) {
|
||||||
|
setState(() {
|
||||||
|
SessionData.filter = SessionData.filter ^ Filters.GEN7;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
),
|
||||||
|
SwitchListTile(
|
||||||
|
value: (SessionData.filter & Filters.GEN8 == Filters.GEN8),
|
||||||
|
title: Text("Generation 8"),
|
||||||
|
|
||||||
|
onChanged: (val) {
|
||||||
|
setState(() {
|
||||||
|
SessionData.filter = SessionData.filter ^ Filters.GEN8;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
),
|
||||||
|
SwitchListTile(
|
||||||
|
value: (SessionData.filter & Filters.GEN9 == Filters.GEN9),
|
||||||
|
title: Text("Generation 9"),
|
||||||
|
|
||||||
|
onChanged: (val) {
|
||||||
|
setState(() {
|
||||||
|
SessionData.filter = SessionData.filter ^ Filters.GEN9;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
|
@ -4,15 +4,20 @@ import 'package:flutter/material.dart';
|
||||||
import 'package:pokedex/Consts.dart';
|
import 'package:pokedex/Consts.dart';
|
||||||
|
|
||||||
enum Generation {
|
enum Generation {
|
||||||
One,
|
One(1, 151),
|
||||||
Two,
|
Two(152, 251),
|
||||||
Three,
|
Three(252, 386),
|
||||||
Four,
|
Four(387, 493),
|
||||||
Five,
|
Five(494, 649),
|
||||||
Six,
|
Six(650, 721),
|
||||||
Seven,
|
Seven(722, 809),
|
||||||
Eight,
|
Eight(810, 905),
|
||||||
Nine;
|
Nine(906, 1025);
|
||||||
|
|
||||||
|
final int idStart;
|
||||||
|
final int idEnd;
|
||||||
|
|
||||||
|
const Generation(this.idStart, this.idEnd);
|
||||||
|
|
||||||
toSpritePath() {
|
toSpritePath() {
|
||||||
switch (this) {
|
switch (this) {
|
||||||
|
|
|
@ -16,7 +16,7 @@ publish_to: "none" # Remove this line if you wish to publish to pub.dev
|
||||||
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
|
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
|
||||||
# In Windows, build-name is used as the major, minor, and patch parts
|
# In Windows, build-name is used as the major, minor, and patch parts
|
||||||
# of the product and file versions while build-number is used as the build suffix.
|
# of the product and file versions while build-number is used as the build suffix.
|
||||||
version: 1.0.032325+1840
|
version: 1.0.032325+1956
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ^3.7.0
|
sdk: ^3.7.0
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue