微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Flutter-接受JSON ID值

如何解决Flutter-接受JSON ID值

您好,我是新手,我已经创建了一个新闻应用程序,并且正在将新闻打印在列表视图中,我想将ID或数组的键从json打印到logcat或作为文本。

当单击whatsapp共享按钮时,我想将新闻的ID和新闻的网址发送到whatsapp或twitter或gmail。

这是json代码示例:

{
"311777" : 
{"title" : "અનુવાદ તમામ ભાષાઓને સંવેદના સાથે જોડવાનો રસ્તો છે","image" : ".....","description" : "ભુજ,તા. 4 : કચ્છી સાહિત્ય મંડળ દ્વારા કચ્છીભાષાના પ્રસાર પ્રચાર અને સંવર્ધન માટે થતી વિવિધ પ્રવૃત્તિઓ અંતર્ગત જાણીતા કવિ પબુ ગઢવી `પુષ્પ'ના બે કાવ્ય સંગ્રહનો વિમોચન કાર્યક્રમ ઓનલાઈન યોજાયો હતો. રવિવારે સાંજે `પુષ્પ'ના કચ્છી પુસ્તક વેંઢાર તેમજ તેમના કચ્છી કાવ્યસંગ્રહ હીંયારીની રચનાઓનો ડૉ. કાશ્મીરા મહેતા દ્વારા અંગ્રેજીમાં અનુવાદિત સંગ્રહ ફેલાઇટના વિમોચન કાર્યક્રમનો વીડિયોમૂવી પ્રસારણ ગૂગલમીટ પરથી કરવામાં આવ્યું હતું. પદ્મશ્રી નારાયણ જોશી `કારાયલ'ના અધ્યક્ષસ્થાને યોજાયેલા કાર્યક્રમમાં સર્જક પબુ ગઢવી `પુષ્પ',રમણીક સોમેશ્વર,ડો. કાન્તિ ગોર `કારણ',ડો. કાશ્મીરા બહેન મહેતા,રવિ પેથાણી `િતમિર',ગૌતમ જોશી,લાલજી મેવાડા `સ્વપ્ન' હાજર રહ્યા હતા.પ્રારંભે કચ્છી સાહિત્યમંડળના સંયોજક લાલજી મેવાડા `સ્વપ્ન'એ સૌને આવકારતાં આ કાર્યક્રમથી કચ્છી સાહિત્ય મંડળને મોટું નામ મળ્યાનું જણાવ્યું હતું,તેમજ મંડળ દ્વારા પ્રકાશિત થનારા દ્વિમાસિક `સંભાર' મેગેઝિન વિશે વાત કરી હતી.જાણીતા સાહિત્યકાર રમણીક સોમેશ્વરે પોતાના અભ્યાસુ વક્તવ્યમાં જણાવ્યું કે,અત્યાર સુધી અનુવાદ એ દ્વિતીય કક્ષાનું કામ ગણવામાં આવતું,પરંતુ ધીરેધીરે લોકોને સમજાયું કે વિશ્વની તમામ ભાષાઓ,વિશ્વની તમામ સંસ્કૃતિને મનુષ્યની સંવેદના સાથે જોડવી હોય તો એના માટે અનુવાદ એ ઉત્તમ કાર્ય છે,ઉત્તમ રસ્તો છે. જાણીતા સાહિત્યકાર અને આકાશવાણીના પૂર્વ સ્ટેશન ડાયરેક્ટર જયંતી જોશી `શબાબ' એ `વેંઢાર' કાવ્યસંગ્રહ પર પોતાના વક્તવ્યમાં જણાવ્યું કે,બાળપક્ષીને દાણા ખવરાવતું પક્ષી `વેંઢાર' તરફ જ અંગુલિનિર્દેશ કરે છે અને વધુમાં તેમણે કહ્યું કે,વાણીના કાવ્ય સ્વરૂપ અમૃતફલનો સ્વાદ તો માત્ર કવિ જ અનુભવી શકે. જ્યારે જાણીતા કવિ રવિ પેથાણી `િતમિર' એ જણાવ્યું હતું કે,`પુષ્પ' એ વર્તમાનમાં જીવનારો કવિ છે અને દરેક કવિનો વર્તમાન ભવિષ્ય માટે મહત્ત્વનો હોય છે. તો કચ્છ યુનિવર્સિટીના પ્રથમ કુલપતિ ડો. કાન્તિભાઈ ગોર `કારણ'એ પોતાના પ્રવચનમાં જણાવ્યું કે,`પુષ્પ'નું સાદું,સરળ,સૌમ્ય દેખાતું વ્યક્તિત્વ સામે આવે,પણ કવિ જ્યારે કાવ્યપઠન કરતા હોય ત્યારે આખો માહોલ બદલતો દેખાય છે. અંગ્રેજી અનુવાદ તેમને આંતરરાષ્ટ્રીય ખ્યાતિ અપાવશે એવી અપેક્ષા વ્યક્ત કરી હતી. અનુવાદક ડો. કાશ્મીરા મહેતાએ `ફેલાઇટ' વિશે વાત કરતાં જણાવ્યું કે,મારી માબોલીનું સાહિત્ય વિશ્વકક્ષાએ પહોંચે તે માટે હું શું કરી શકું ? આ સંવેદનને તેમણે માબોલીનો ધાવણિયો પ્રેમ ગણાવ્યો હતો. અને અંગ્રેજીમાં અનુવાદિત ગઝલનું તેમણે પઠન કર્યું હતું. રસિક મામતોરા,કવિ વ્રજ ગજકંધએ કાવ્યસંગ્રહ અને અનુવાદને બિરદાવ્યો હતો.કવિ `પુષ્પે' પોતાના અભિપ્રાયમાં અંગ્રેજી અનુવાદ ફેલાઇટ વિશે જણાવ્યું હતું કે,આ અંગ્રેજી અનુવાદ માટે મને પદ્મશ્રી નારાયણ જોશી `કારાયલ'એ દિશા સૂચન કર્યું હતું. ડો. કાશ્મીરા બહેનનો આભાર માનતા તેમણે દિલથી કરેલા અનુવાદ બદલ ભાવવિભોર બની ગયા હતા.અધ્યક્ષસ્થાનેથી ઉદ્દબોધન કરતાં પદ્મશ્રી નારાયણ જોશી `કારાયલ'એ જણાવ્યું હતું કે,`પુષ્પ' મારો પ્રિય કવિ છે અને કચ્છીભાષાના પ્રકાશનો સરળ થાય તે માટે શ્રેષ્ઠી દાતાઓએ કંઈક વિચારવું જોઈએ,આગળ આવવું જોઈએ.આ ઓનલાઈન કાર્યક્રમમાં કચ્છ અને બૃહદ કચ્છમાંથી બહોળી સંખ્યામાં ચાહકો જોડાયા હતા જેનું આયોજન લાલજી મેવાડા `સ્વપ્ન'એ કર્યું હતું અને અજય મેવાડા તરફથી ટેક્નિકલ સહકાર મળ્યો હતો.' સમગ્ર કાર્યક્રમનું સંચાલન સ્નેહલ વૈદ્યએ કર્યું હતું જ્યારે આભારવિધિ ગૌતમ જોશીએ કરી હતી.'"}

例如:我想从json打印311777 id并在logcat或文本小部件中打印。

下面是主要代码

import 'package:Flutter/material.dart';
import 'package:carousel_slider/carousel_slider.dart';
import 'dart:async';
import 'dart:convert';
import 'package:http/http.dart' as http;
import 'package:Flutter/foundation.dart';
import 'package:intl/intl.dart';
import 'News.dart';
import 'news_detail.dart';

class TopHeadlines extends StatefulWidget {
  int value_index;
  String value_image,value_description,value_title;
  String value_date;
  List value_datalist;

  TopHeadlines(
      {Key key,this.value_image,this.value_description,this.value_title,this.value_index,this.value_datalist})
      : super(key: key);
  @override
  _topHeadlines createState() => _topHeadlines();
}

class _topHeadlines extends State<TopHeadlines> with AutomaticKeepAliveClientMixin<TopHeadlines> {
  List<News> dataList = List();
  bool _isLoading = false;
  BuildContext context1;

  Future<String> loadFromAssets() async {
    DateTime oops = DateTime.Now();
    String d_date = DateFormat('ddMMyyyy').format(oops);

    var url = '.....';


    print(url);
    var response = await http
        .get('$url',headers: {"charset": "utf-8","Accept-Charset": "utf-8"});
    String utfDecode = utf8.decode(response.bodyBytes);
    //final validCharacters = RegExp(r'^[a-zA-Z0-9_\-=@,\n.;]+$,');

    return utfDecode.replaceAll('\'',"");
  }

  Future loadYourData() async {
    setState(() {
      _isLoading = true;
    });

    String jsonString = await loadFromAssets();

    String newStr = jsonString.substring(1,jsonString.length - 1);

    print(newStr);
    Map newStringMap = json.decode(newStr);
    var list = new List();
    newStringMap.forEach((key,value) {
      list.add(value);
    });

    for (var newsList in list) {
      var news = News.fromJson(newsList);
      dataList.add(news);
    }
    print('This is the length' + dataList.length.toString());
    print(dataList[0].title);
    setState(() {
      _isLoading = false;
    });
  }

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

    loadYourData();
  }

  @override
  Widget build(BuildContext context) {
    DateTime oops = DateTime.Now();

    return Container(
        child: Container(
      child: _isLoading
          ? Center(
              child: CircularProgressIndicator(),)
          : ListView.builder(
        //scrollDirection: Axis.horizontal,itemCount: dataList.length,itemBuilder: (context,index) {
                return SizedBox(
                  height: 130.0,child: Card(
                    color: Colors.white,child: Column(
                      crossAxisAlignment: CrossAxisAlignment.start,children: <Widget>[
                        InkWell(
                          onTap: () {
                            //   dataList;
                            Navigator.push(context,MaterialPageRoute(builder: (context) {
                              print(index);
                              return Newsdetail(
                                  value_image: dataList[index].image,value_description:
                                      dataList[index].description,value_title: dataList[index].title,value_datalist: dataList,value_index: index);
                            }));
                          },child: Padding(
                            padding: const EdgeInsets.all(8.0),child: Row(
                              children: <Widget>[
                                Expanded(
                                    child: Image.network(
                                  dataList[index].image,height: 92.5,width: 75.0,)),Expanded(
                                  child: Text(
                                    dataList[index].title,style: TextStyle(
                                      //title
                                      fontSize: 15.0,color: Colors.grey,),)
                              ],],);
              },));
  }

  @override
  // Todo: implement wantKeepAlive
  bool get wantKeepAlive => true;
}

解决方法

我可以给你一个主意,尝试这样的事情,

class _topHeadlines extends State<TopHeadlines> with AutomaticKeepAliveClientMixin<TopHeadlines> {
  
  List<News> dataList = List();
  
  List<String> newsIDs = List();

添加时,

Map newStringMap = json.decode(newStr);
    var list = new List();
    newStringMap.forEach((key,value) {
      list.add(value);
      newsIDs.add(key.toString());
    });

在访问它时,

 onTap: () {
     print(newsIDs[index]);
  }

希望能满足您的情况!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。