Category Hierarchy

// ignore_for_file: prefer_const_constructors, avoid_unnecessary_containers, prefer_const_literals_to_create_immutables, import_of_legacy_library_into_null_safe, non_constant_identifier_names, unused_field, avoid_print

import 'dart:convert';

import 'package:dropdownfield/dropdownfield.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

class FoodWidget extends StatefulWidget {
  const FoodWidget({Key? key}) : super(key: key);

  @override
  _FoodWidgetState createState() => _FoodWidgetState();
}

class _FoodWidgetState extends State<FoodWidget> {
  @override
  void initState() {
    fetchFood();
    super.initState();
  }

  String? food_id;
  List food = [];

  Future<void> fetchFood() async {
    final String response =
        await rootBundle.loadString('assets/list_food.json');
    final data = await json.decode(response);
    print(data);
    setState(() {
      food = data["food"];
    });
  }

  @override
  Widget build(BuildContext context) {
    return Container(
      padding: EdgeInsets.all(15.0),
      child: Column(
          crossAxisAlignment: CrossAxisAlignment.stretch,
          children: <Widget>[
            DropDownField(
              onValueChanged: (dynamic value) {
                food_id = value;
              },
              value: food_id,
              required: false,
              labelText: 'Search food',
              items: food,
            ),
          ]),
    );
  }
}

这是JSON文件。我想在DropDownField中只获取名字,但我做不到。在setState函数中,我真的不知道该怎么说。

{
    "food": [
        {
            "id": 1,
            "name": "coca-cola",
            "calories": 120
        },
        {
            "id": 2,
            "name": "egg",
            "calories": 80
        },
        {
            "id": 3,
            "name": "rice",
            "calories": 100
        }
    ]
}

我尝试打印(数据)以测试输出。这一切都来自域名,但我想在内部使用它。我真的不知道该怎么做。

PS。如果能给我答案和建议,我将不胜感激。

转载请注明出处:http://www.baquan404.com/article/20230526/2260055.html