Flutter 如何使用点击按钮更新页面视图中的文本数据?

Flutter 如何使用点击按钮更新页面视图中的文本数据?,flutter,Flutter,我实现了一个从JSON解析数据的页面视图。 我想知道如何实现一个带有点击功能的随机按钮来动态更改页面中的数据 我试图创建一个带有递增选项的函数,在按下按钮时,我传递了它。在调试控制台中,它显示数字已更新,但在页面视图中,数据没有更改 var指数; void_random(){ 设置状态(){ 指数=随机(指数).nextInt(3000); }); } 孩子:新未来建设者( 未来:DefaultAssetBundle.of(上下文) .loadString('json/quotes.jso

我实现了一个从JSON解析数据的页面视图。 我想知道如何实现一个带有点击功能的随机按钮来动态更改页面中的数据

我试图创建一个带有递增选项的函数,在按下按钮时,我传递了它。在调试控制台中,它显示数字已更新,但在页面视图中,数据没有更改


var指数;
void_random(){
设置状态(){
指数=随机(指数).nextInt(3000);
});
}

孩子:新未来建设者(
未来:DefaultAssetBundle.of(上下文)
.loadString('json/quotes.json'),
生成器:(上下文,快照){
var quote=json.decode(snapshot.data.toString());
返回新的PageView.builder(
itemBuilder:(构建上下文,int索引){
返回新的页面视图(
儿童:[
新容器(
子:新列(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
新填料(
填充:仅限常量边集(左:19),
子:文本(
“”+引号[索引][“引号”],
样式:TextStyle(
尺寸:30,
颜色:颜色,白色,
fontaa家族:“fontaa”,
fontWeight:fontWeight.bold,
字母间距:2.25,
),
),
),
),
),
],
);
},
物理:弹跳CrollPhysics(),
);
},
),
child:newraisedbutton(
形状:圆形矩形边框(
边界半径:边界半径。圆形(30)),
标高:10,
颜色:颜色,黑色,
孩子:新图标(
图标、全景、鱼眼、,
颜色:颜色,白色,
),
已按下:(){
_随机();
打印($index);
},
splashColor:Colors.yellow.shade400,
),

我需要一个结果,当我点击按钮时,在pageView中应该显示一个新文本。

您的方法和pageView生成器是否在同一个有状态小部件类中?更改“index”变量的名称,因为它可能与pageView生成器索引参数混淆,并声明一个默认值

var _index;

@override
initState(){
   //initialize the index to random value
  _random();
}

void _random() {
setState(() {
   //not advisable to start the range with index 
   //as the range might get smaller if index is near to 3000
  _index = Random(_index).nextInt(3000);
});
}

child:新的FutureBuilder(
未来:DefaultAssetBundle.of(上下文)
.loadString('json/quotes.json'),
生成器:(上下文,快照){
var quote=json.decode(snapshot.data.toString());
返回新的PageView.builder(
itemBuilder:(构建上下文,int索引){
返回新的页面视图(
儿童:[
新容器(
子:新列(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
新填料(
填充:仅限常量边集(左:19),
子:文本(
“+quote[\u索引]['quote'],
样式:TextStyle(
尺寸:30,
颜色:颜色,白色,
fontaa家族:“fontaa”,
fontWeight:fontWeight.bold,
字母间距:2.25,
),
),
),
),
),
],
);
},
物理:弹跳CrollPhysics(),
);
},
),
child: new FutureBuilder(
              future: DefaultAssetBundle.of(context)
                  .loadString('json/quotes.json'),
              builder: (context, snapshot) {
                var quote = json.decode(snapshot.data.toString());

                return new PageView.builder(
                  itemBuilder: (BuildContext context, int index) {

                    return new PageView(
                      children: <Widget>[
                        new Container(
                          child: new Column(
                            mainAxisAlignment: MainAxisAlignment.center,
                            children: <Widget>[
                              new Padding(
                                padding: const EdgeInsets.only(left: 19),
                                child: Text(
                                  "" + quote[_index]['Quote'],
                                  style: TextStyle(
                                    fontSize: 30,
                                    color: Colors.white,
                                    fontFamily: "fontaa",
                                    fontWeight: FontWeight.bold,
                                    letterSpacing: 2.25,
                                  ),
                                ),
                              ),

                          ),
                        ),
                      ],
                    );
                  },
                  physics: BouncingScrollPhysics(),
                );
              },
            ),