【问题标题】:How to sum two or more values from getting data from json如何从json获取数据中对两个或多个值求和
【发布时间】:2021-03-01 12:07:45
【问题描述】:

我有一个用于在颤振中创建列表视图的 json 文件。单击列表项时,它会显示从 json 获取的值。但我想在点击事件上添加新的未来。我想通过加在一起显示的两个值来显示新值。我该怎么做?

这是我关于列表视图的点击事件的示例

('Formül: ' + _searchResult[i].Formula + '\nTfp: ' + _searchResult[i].Tfp.toString() +'\nTb: ' + _searchResult[i].Tb.toString() +'\nTc: ' + _searchResult[i].Tc.toString() +'\nPc: ' + _searchResult[i].Pc.toString() +'\nVc: ' + _searchResult[i].Vc.toString() +'\nZc: ' + _searchResult[i].Zc.toString() +'\nOmega: ' + _searchResult[i].Omega.toString() +'\nDipm: ' + _searchResult[i].Dipm.toString() +'\nCpA: ' + _searchResult[i].CpA.toString()+'\nCpB: ' + _searchResult[i].CpB.toString() +'\nCpC: ' + _searchResult[i].CpC.toString() +'\nCpD: ' + _searchResult[i].CpD.toString() +'\ndHf: ' + _searchResult[i].dHf.toString() +'\ndGf: ' + _searchResult[i].dGf.toString() +'\nEq: ' + _searchResult[i].Eq.toString()+'\nLden: ' + _searchResult[i].Lden.toString() +'\nTden: ' + _searchResult[i].Tden.toString()

例如,我想在此处添加名为 newvalue 的新值,它等于 cpA 和 cpB 值的总和。 谢谢。

编辑:这是我的颤振代码

import 'dart:async';
import 'dart:convert';
import 'package:http/http.dart' as http;
import 'package:flutter/material.dart';
import 'userDetails.dart';

class HomePage extends StatefulWidget {
  HomePage({Key key}) : super(key: key);

  @override
  _HomePageState createState() => new _HomePageState();
}

class _HomePageState extends State<HomePage> {
  List<UserDetails> _searchResult = [];
  List<UserDetails> _userDetails = [];
  final customCp = 0;
  TextEditingController controller = new TextEditingController();




  // Get json result and convert it to model. Then add
  Future<Null> getUserDetails() async {
    final response = await http.get(url);
    final responseJson = json.decode(response.body);

    setState(() {
      for (Map user in responseJson) {
        _userDetails.add(UserDetails.fromJson(user));
      }
    });
  }

  @override
  void initState() {
    super.initState();

    getUserDetails();
  }

  Widget _buildUsersList() {

    return new ListView.builder(

      itemCount: _userDetails.length,
      itemBuilder: (context, index) {
        return new Card(
          child: ListTile(
            leading: FlutterLogo(size: 56.0),
            title: Text(_userDetails[index].Name),
            subtitle: Text(_userDetails[index].Formula),


          onTap: (){
            AlertDialog alert = AlertDialog(

              title: Text('' + _userDetails[index].Name.toUpperCase()),
              content: Text('Formül: ' + _userDetails[index].Formula + '\nTfp: ' + _userDetails[index].Tfp.toString() +'\nTb: ' + _userDetails[index].Tb.toString() +'\nTc: ' + _userDetails[index].Tc.toString() +'\nPc: ' + _userDetails[index].Pc.toString() +'\nVc: ' + _userDetails[index].Vc.toString() +'\nZc: ' + _userDetails[index].Zc.toString() +'\nΩ: ' + _userDetails[index].Omega.toString() +'\nDipm: ' + _userDetails[index].Dipm.toString() +'\nCpA: ' + _userDetails[index].CpA.toString()+'\nCpB: ' + _userDetails[index].CpB.toString() +'\nCpC: ' + _userDetails[index].CpC.toString() +'\nCpD: ' + _userDetails[index].CpD.toString() +'\ndHf: ' + _userDetails[index].dHf.toString() +'\ndGf: ' + _userDetails[index].dGf.toString() +'\nEq: ' + _userDetails[index].Eq.toString() +'\nLden: ' + _userDetails[index].Lden.toString() +'\nTden: ' + _userDetails[index].Tden.toString()),
              actions: [
              ],
            );
            showDialog(
              context: context,
              builder: (BuildContext context) {
                return alert;
              },
            );

          },
          ),
        );

      },
    );
  }

  Widget _buildSearchResults() {
    return new ListView.builder(
      itemCount: _searchResult.length,
      itemBuilder: (context, i) {
        return new Card(
          child: new ListTile(
            leading: FlutterLogo(size: 56.0),

            title: new Text(
                _searchResult[i].Name),
            subtitle: Text(_searchResult[i].Formula),
            onTap: (){
              AlertDialog alert = AlertDialog(
                title: Text(_searchResult[i].Name.toUpperCase()),
                content: Text('Formül: ' + _searchResult[i].Formula + '\nTfp: ' + _searchResult[i].Tfp.toString() +'\nTb: ' + _searchResult[i].Tb.toString() +'\nTc: ' + _searchResult[i].Tc.toString() +'\nPc: ' + _searchResult[i].Pc.toString() +'\nVc: ' + _searchResult[i].Vc.toString() +'\nZc: ' + _searchResult[i].Zc.toString() +'\nOmega: ' + _searchResult[i].Omega.toString() +'\nDipm: ' + _searchResult[i].Dipm.toString() +'\nCpA: ' + _searchResult[i].CpA.toString()+'\nCpB: ' + _searchResult[i].CpB.toString() +'\nCpC: ' + _searchResult[i].CpC.toString() +'\nCpD: ' + _searchResult[i].CpD.toString() +'\ndHf: ' + _searchResult[i].dHf.toString() +'\ndGf: ' + _searchResult[i].dGf.toString() +'\nEq: ' + _searchResult[i].Eq.toString()+'\nLden: ' + _searchResult[i].Lden.toString() +'\nTden: ' + _searchResult[i].Tden.toString()),actions: [
                ],
              );
              showDialog(
                context: context,
                builder: (BuildContext context) {
                  return alert;
                },
              );
            },

          ),

        );
      },
    );
  }

  Widget _buildSearchBox() {
    return new Padding(
      padding: const EdgeInsets.all(8.0),
      child: new Card(
        child: new ListTile(
          leading: new Icon(Icons.search),
          title: new TextField(
            controller: controller,
            decoration: new InputDecoration(
                hintText: 'Ara', border: InputBorder.none),
            onChanged: onSearchTextChanged,
          ),
          trailing: new IconButton(
            icon: new Icon(Icons.cancel),
            onPressed: () {
              controller.clear();
              onSearchTextChanged('');
            },
          ),
        ),
      ),
    );
  }

  Widget _buildBody() {
    return new Column(
      children: <Widget>[
        new Container(
            color: Theme.of(context).primaryColor, child: _buildSearchBox()),
        new Expanded(
            child: _searchResult.length != 0 || controller.text.isNotEmpty
                ? _buildSearchResults()
                : _buildUsersList()),
      ],
    );
  }

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(
        title: new Text('Equation Of State'),
        elevation: 0.0,
      ),
      body: _buildBody(),
      resizeToAvoidBottomPadding: true,
    );
  }

  onSearchTextChanged(String text) async {
    _searchResult.clear();
    if (text.isEmpty) {
      setState(() {});
      return;
    }

    _userDetails.forEach((userDetail) {
      if (userDetail.Name.toLowerCase().contains(text.toLowerCase()) ||
          userDetail.Formula.toLowerCase().contains(text.toLowerCase())) _searchResult.add(userDetail);
    });

    setState(() {});
  }
}

【问题讨论】:

  • 请添加您页面的一些代码。
  • 您需要用两个不同的按钮将这两个功能分开。如果您想向该 JSON 添加一个值,则应由不同的按钮提供。
  • 我在linked.in上给你写信:)

标签: json android-studio flutter


【解决方案1】:

您可以在没有任何库的情况下使用这四种基本操作。如果需要更多,可以导入math library

以下是求和运算示例:

    Text(
      "Sum of CpA and CpB is: " +
          (_userDetails[index].CpA + _userDetails[index].CpB).toString(),
    ),

【讨论】:

    【解决方案2】:

    //在模型类中尝试

    class User-Details{
      final String name;
      final String formula;
      final String name&Formula;
      User-Details({this.name, this.formula, this.name&Formula});
    

    };

    【讨论】:

    • 然后呢?你明白问题了吗?
    • 您想从 JSON 数据中收集两个值并在点击 listview 时将它们显示在 New Flutter 中?
    • 没有。我不想收集。只有我显示从 json 获得的两个或多个值的总和。例如 value1 = 10 , value2 = 20 我想向用户显示 10+20=30
    猜你喜欢
    • 2020-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-18
    相关资源
    最近更新 更多