2023-04-20 22:53:43 +08:00
import ' package:flutter/material.dart ' ;
import ' ./common.dart ' ;
import ' ./desc.dart ' ;
final Map < String , LocationModel > locationModels = { } ;
2023-04-21 23:25:00 +08:00
final Map < String , OptionModel > optionModels = { } ;
2023-04-21 21:40:34 +08:00
2023-04-21 23:25:00 +08:00
class OptionModel with ChangeNotifier {
String ? v ;
2023-04-21 21:40:34 +08:00
2023-04-21 23:25:00 +08:00
String ? get value = > v ;
set value ( String ? v ) {
this . v = v ;
2023-04-21 21:40:34 +08:00
notifyListeners ( ) ;
}
2023-04-21 23:25:00 +08:00
static String key ( String location , PluginId id , String peer , String k ) = >
' $ location | $ id | $ peer | $ k ' ;
2023-04-21 21:40:34 +08:00
}
2023-04-20 22:53:43 +08:00
class PluginModel with ChangeNotifier {
final List < UiType > uiList = [ ] ;
2023-04-21 21:40:34 +08:00
final Map < String , String > opts = { } ;
2023-04-20 22:53:43 +08:00
void add ( UiType ui ) {
uiList . add ( ui ) ;
notifyListeners ( ) ;
}
2023-04-21 21:40:34 +08:00
String ? getOpt ( String key ) = > opts . remove ( key ) ;
2023-04-20 22:53:43 +08:00
bool get isEmpty = > uiList . isEmpty ;
}
class LocationModel with ChangeNotifier {
final Map < PluginId , PluginModel > pluginModels = { } ;
void add ( PluginId id , UiType ui ) {
if ( pluginModels [ id ] ! = null ) {
pluginModels [ id ] ! . add ( ui ) ;
} else {
var model = PluginModel ( ) ;
model . add ( ui ) ;
pluginModels [ id ] = model ;
notifyListeners ( ) ;
}
}
bool get isEmpty = > pluginModels . isEmpty ;
}
void addLocationUi ( String location , PluginId id , UiType ui ) {
locationModels [ location ] ? . add ( id , ui ) ;
}
LocationModel addLocation ( String location ) {
if ( locationModels [ location ] = = null ) {
locationModels [ location ] = LocationModel ( ) ;
}
return locationModels [ location ] ! ;
}
2023-04-21 21:40:34 +08:00
2023-04-21 23:25:00 +08:00
OptionModel addOptionModel (
String location , PluginId pluginId , String peer , String key ) {
final k = OptionModel . key ( location , pluginId , peer , key ) ;
if ( optionModels [ k ] = = null ) {
optionModels [ k ] = OptionModel ( ) ;
2023-04-21 21:40:34 +08:00
}
2023-04-21 23:25:00 +08:00
return optionModels [ k ] ! ;
2023-04-21 21:40:34 +08:00
}
void updateOption (
String location , PluginId id , String peer , String key , String value ) {
2023-04-21 23:25:00 +08:00
final k = OptionModel . key ( location , id , peer , key ) ;
optionModels [ k ] ? . value = value ;
2023-04-21 21:40:34 +08:00
}