Я пытаюсь сделать игру с Flutter. Для этого у меня есть много данных в приложении, хранящихся в json (заряд. json). Я хочу, чтобы в соответствии с диапазоном, выбранным пользователем, просмотреть мой json, сравнить различные нагрузки, которые имеют желаемый диапазон (пример 800 м), и восстановить всю информацию о нагрузке, которая имеет желаемый диапазон и увеличение, наиболее близкое к 1100 при этом оставаясь превосходным.
Понятия не имею, как это сделать ...
Вот мой json:
{
"ammo_1" : [
{
"range": 800,
"increase": 1000,
"speed" : 10
},
{
"range": 850,
"increase": 1100,
"speed" : 23
}
],
"ammo_2" : [
{
"range": 800,
"increase": 1150,
"speed" : 12
},
{
"range": 850,
"increase": 1200,
"speed" : 25
}
]
}
Вот мои models.dart:
class Charge {
final int range;
final int increase;
final int speed;
Charge({this.range, this.increase, this.speed});
factory Charge.fromJson(Map<String, dynamic> json){
return Charge(
range: json['range'] as int,
increase: json['increase'] as int,
speed: json['speed'] as int,
);
}
}
Здесь home.dart:
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'dart:convert';
import 'dart:async';
import 'package:mortierapp/models/models.dart';
class Home extends StatefulWidget {
Home({Key key, this.title}) : super(key: key);
final String title;
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
Future<String> loadChargeFromAssets() async{
return await rootBundle.loadString('json/charge.json');
}
Future loadCharge() async{
String jsonString = await loadChargeFromAssets();
final jsonResponse = json.decode(jsonString);
Charge charge = Charge.fromJson(jsonResponse);
print(jsonResponse);
print('increase ${charge.increase}');
}
@override
void initState(){
super.initState();
loadCharge();
}
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: (() => FocusScope.of(context).requestFocus(FocusNode())),
child: Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
TextField(
keyboardType: TextInputType.number,
onChanged: (String string){
setState(() {
});
},
decoration: InputDecoration(
labelText: "range",
hintText: "Enter a range in meter"
),
),
],
),
),
)
);
}
}
Для моего примера, если я выберу 800 м, он должен увидеть, что есть боеприпасы 1 и 2, которые имеют этот диапазон, но он должен вернуть мне это боекомплект 2, потому что увеличивается на 1150, это значение, наиболее близкое к 1100 к лучшему. Поэтому я должен иметь доступ ко всем его скоростным характеристикам,…
Подходит ли моя структура json для этого?