mirror of
				https://github.com/Nioux/AideDeJeu.git
				synced 2025-10-29 22:45:44 +00:00 
			
		
		
		
	Races+SubRaces
This commit is contained in:
		
							parent
							
								
									2e0dc12243
								
							
						
					
					
						commit
						e845cf7c7f
					
				
					 3 changed files with 105 additions and 14 deletions
				
			
		|  | @ -92,3 +92,29 @@ Future<Item> loadChildrenItems(Item item, List<Filter> filters) async { | ||||||
|   return item; |   return item; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | Future<List<RaceItem>> loadRaces() async { | ||||||
|  |   final db = await database; | ||||||
|  |   var response = await db.query( | ||||||
|  |       "Items", | ||||||
|  |       where: "ItemType = 'RaceItem'", | ||||||
|  |       orderBy: "NormalizedName" | ||||||
|  |   ); | ||||||
|  |   if (response.isNotEmpty) { | ||||||
|  |     return itemsFromMapList(response); | ||||||
|  |   } | ||||||
|  |   return null; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | Future<List<SubRaceItem>> loadSubRaces(RaceItem race) async { | ||||||
|  |   final db = await database; | ||||||
|  |   var response = await db.query( | ||||||
|  |       "Items", | ||||||
|  |       where: "ItemType = 'SubRaceItem' AND ParentLink = ?", | ||||||
|  |       whereArgs: [race.id], | ||||||
|  |       orderBy: "NormalizedName" | ||||||
|  |   ); | ||||||
|  |   if (response.isNotEmpty) { | ||||||
|  |     return itemsFromMapList(response); | ||||||
|  |   } | ||||||
|  |   return null; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | @ -3,6 +3,7 @@ import 'package:aidedejeu_flutter/models/filters.dart'; | ||||||
| class Item { | class Item { | ||||||
|   String id; |   String id; | ||||||
|   String rootId; |   String rootId; | ||||||
|  |   String newId; | ||||||
|   String parentLink; |   String parentLink; | ||||||
|   String name; |   String name; | ||||||
|   String normalizedName; |   String normalizedName; | ||||||
|  | @ -20,6 +21,7 @@ class Item { | ||||||
|   Item(Map<String, dynamic> map) { |   Item(Map<String, dynamic> map) { | ||||||
|     this.id = map["Id"]; |     this.id = map["Id"]; | ||||||
|     this.rootId = map["RootId"]; |     this.rootId = map["RootId"]; | ||||||
|  |     this.newId = map["NewId"]; | ||||||
|     this.name = map["Name"]; |     this.name = map["Name"]; | ||||||
|     this.alias = map["AltName"]; |     this.alias = map["AltName"]; | ||||||
|     this.aliasText = map["AltNameText"]; |     this.aliasText = map["AltNameText"]; | ||||||
|  | @ -134,6 +136,11 @@ class RaceItem extends Item { | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | class SubRaceItem extends RaceItem { | ||||||
|  |   SubRaceItem(Map<String, dynamic> map) : super(map); | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
| class RaceItems extends FilteredItems { | class RaceItems extends FilteredItems { | ||||||
|   RaceItems(Map<String, dynamic> map) : super(map); |   RaceItems(Map<String, dynamic> map) : super(map); | ||||||
| 
 | 
 | ||||||
|  | @ -147,6 +154,7 @@ class RaceItems extends FilteredItems { | ||||||
| Item itemFromMap(Map<String, dynamic> map) { | Item itemFromMap(Map<String, dynamic> map) { | ||||||
|   switch(map["ItemType"]) { |   switch(map["ItemType"]) { | ||||||
|     case "RaceItem": return RaceItem(map); |     case "RaceItem": return RaceItem(map); | ||||||
|  |     case "SubRaceItem": return SubRaceItem(map); | ||||||
|     case "RaceItems": return RaceItems(map); |     case "RaceItems": return RaceItems(map); | ||||||
|     case "MonsterItem": return MonsterItem(map); |     case "MonsterItem": return MonsterItem(map); | ||||||
|     case "MonsterItems": return MonsterItems(map); |     case "MonsterItems": return MonsterItems(map); | ||||||
|  | @ -154,7 +162,7 @@ Item itemFromMap(Map<String, dynamic> map) { | ||||||
|   return Item(map); |   return Item(map); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| List<Item> itemsFromMapList(List<Map<String, dynamic>> mapList) { | List<T> itemsFromMapList<T extends Item>(List<Map<String, dynamic>> mapList) { | ||||||
|   return List.generate(mapList.length, (i) { |   return List.generate(mapList.length, (i) { | ||||||
|     return itemFromMap(mapList[i]); |     return itemFromMap(mapList[i]); | ||||||
|   }); |   }); | ||||||
|  |  | ||||||
|  | @ -1,12 +1,6 @@ | ||||||
| import 'package:aidedejeu_flutter/database.dart'; | import 'package:aidedejeu_flutter/database.dart'; | ||||||
| import 'package:aidedejeu_flutter/models/filters.dart'; |  | ||||||
| import 'package:aidedejeu_flutter/widgets/filters.dart'; |  | ||||||
| import 'package:aidedejeu_flutter/models/items.dart'; | import 'package:aidedejeu_flutter/models/items.dart'; | ||||||
| import 'package:aidedejeu_flutter/widgets/library.dart'; |  | ||||||
| import 'package:flutter/material.dart'; | import 'package:flutter/material.dart'; | ||||||
| import 'package:flutter/services.dart'; |  | ||||||
| import 'package:flutter_markdown/flutter_markdown.dart'; |  | ||||||
| import 'package:flutter_svg/flutter_svg.dart'; |  | ||||||
| 
 | 
 | ||||||
| class PCEditorPage extends StatefulWidget { | class PCEditorPage extends StatefulWidget { | ||||||
|   PCEditorPage({Key key}) : super(key: key); |   PCEditorPage({Key key}) : super(key: key); | ||||||
|  | @ -25,7 +19,74 @@ class PCEditorPage extends StatefulWidget { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| class _PCEditorPageState extends State<PCEditorPage> { | class _PCEditorPageState extends State<PCEditorPage> { | ||||||
|   RaceItem race; |   RaceItem _race; | ||||||
|  |   SubRaceItem _subRace; | ||||||
|  |   List<RaceItem> _races; | ||||||
|  |   List<SubRaceItem> _subRaces; | ||||||
|  | 
 | ||||||
|  |   @override | ||||||
|  |   void initState() { | ||||||
|  |     // TODO: implement initState | ||||||
|  |     super.initState(); | ||||||
|  |     loadRaces().then((value) => setState(() { | ||||||
|  |           _races = value.map((e) => e as RaceItem).toList(); | ||||||
|  |         })); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   void _setRace(RaceItem race) { | ||||||
|  |     setState(() { | ||||||
|  |       this._race = race; | ||||||
|  |       this._subRace = null; | ||||||
|  |       this._subRaces = null; | ||||||
|  |     }); | ||||||
|  |     loadSubRaces(race).then((value) => setState(() { | ||||||
|  |           _subRaces = value.map((e) => e as SubRaceItem).toList(); | ||||||
|  |         })); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   void _setSubRace(SubRaceItem subRace) { | ||||||
|  |     setState(() { | ||||||
|  |       this._subRace = subRace; | ||||||
|  |     }); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   Widget _loadRacesWidget() { | ||||||
|  |     return DropdownButton( | ||||||
|  |       hint: Text("Race"), | ||||||
|  |       value: _races != null ? _race : "", | ||||||
|  |       onChanged: (value) { | ||||||
|  |         _setRace(value); | ||||||
|  |       }, | ||||||
|  |       items: _races != null | ||||||
|  |           ? _races | ||||||
|  |               .map((e) => DropdownMenuItem( | ||||||
|  |                     value: e, | ||||||
|  |                     child: Text(e.name), | ||||||
|  |                   )) | ||||||
|  |               .toList() | ||||||
|  |           : null, | ||||||
|  |     ); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   Widget _loadSubRacesWidget() { | ||||||
|  |     return _subRaces != null | ||||||
|  |         ? DropdownButton( | ||||||
|  |             hint: Text("Sous-Race"), | ||||||
|  |             value: _subRaces != null ? _subRace : "", | ||||||
|  |             onChanged: (value) { | ||||||
|  |               _setSubRace(value); | ||||||
|  |             }, | ||||||
|  |             items: _subRaces != null | ||||||
|  |                 ? _subRaces | ||||||
|  |                     .map((e) => DropdownMenuItem( | ||||||
|  |                           value: e, | ||||||
|  |                           child: Text(e.name), | ||||||
|  |                         )) | ||||||
|  |                     .toList() | ||||||
|  |                 : null, | ||||||
|  |           ) | ||||||
|  |         : SizedBox.shrink(); | ||||||
|  |   } | ||||||
| 
 | 
 | ||||||
|   @override |   @override | ||||||
|   Widget build(BuildContext context) { |   Widget build(BuildContext context) { | ||||||
|  | @ -34,11 +95,7 @@ class _PCEditorPageState extends State<PCEditorPage> { | ||||||
|         title: Text("Personnage"), |         title: Text("Personnage"), | ||||||
|       ), |       ), | ||||||
|       body: Column( |       body: Column( | ||||||
|         children: <Widget>[ |         children: <Widget>[_loadRacesWidget(), _loadSubRacesWidget()], | ||||||
|           race != null |  | ||||||
|               ? Text(race.name) |  | ||||||
|               : DropdownButton(hint: Text("Race"), value: "") |  | ||||||
|         ], |  | ||||||
|       ), |       ), | ||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Yan Maniez
						Yan Maniez