Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 有状态小部件不';不改变状态_Flutter_Dart - Fatal编程技术网

Flutter 有状态小部件不';不改变状态

Flutter 有状态小部件不';不改变状态,flutter,dart,Flutter,Dart,在这段代码中,当我更改页面时(我使用的是页面视图,正如下面代码中的一样),颤振不会触发重建,所以条件如果(\u page==1)将在我按下“热重新加载”后生效。有什么解决方法吗?我在main.dart(HomePage)中调用这个类,它是一个无状态小部件。这可能是问题所在吗? 谢谢你的帮助 import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; int _page = 0; class

在这段代码中,当我更改页面时(我使用的是页面视图,正如下面代码中的一样),颤振不会触发重建,所以条件
如果(\u page==1)
将在我按下“热重新加载”后生效。有什么解决方法吗?我在main.dart(HomePage)中调用这个类,它是一个无状态小部件。这可能是问题所在吗? 谢谢你的帮助

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

int _page = 0;

class Guide extends StatefulWidget {

  @override
  State<StatefulWidget> createState() {
    return new GuideState();
  }
}

class GuideState extends State<Guide> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        body: SafeArea(
            child: Center(
                child: Column(children: [
      if (_page == 1)
        Padding(
            padding: EdgeInsets.fromLTRB(0, 10, 0, 0),
            child: Image(
                image: AssetImage('graphics/Logo.png'),
                height: MediaQuery.of(context).size.height * 0.1)),
      SizedBox(height: 500, child: Page()),
    ]))));
  }
}

class Page extends StatefulWidget {
  PageState createState() => PageState();
}

class PageState extends State<Page> {
  final controller = PageController(
    initialPage: 0,
  );

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        //appBar: AppBar(title: Text('PageView Widget in Flutter')),
        body: Center(
            child: Container(
      width: MediaQuery.of(context).size.width * 0.95,
      height: MediaQuery.of(context).size.height * 0.6,
      child: PageView(
        controller: controller,
        onPageChanged: (page) {
          setState(() {
            if (page == 1) {
              _page = 1;
            }
          });
        },
        pageSnapping: true,
        scrollDirection: Axis.horizontal,
        children: <Widget>[
          Container(
              //color: Colors.pink,
              //child: Center(
              child: Text(
            '1. Tento text bude nahrán z databáze.',
            style: TextStyle(fontSize: 25, color: Colors.black),
          )),
          Container(
              //color: Colors.green,
              child: Text(
            '2. Tento text bude nahrán z databáze',
            style: TextStyle(fontSize: 25, color: Colors.black),
          )),
          Container(
              // color: Colors.lightBlue,
              child: Text(
            '3. Tento text bude nahrán z databáze',
            style: TextStyle(fontSize: 25, color: Colors.black),
          )),
        ],
      ),
    )));
  }
}

import'包装:flift/cupertino.dart';
进口“包装:颤振/材料.省道”;
int _page=0;
类指南扩展了StatefulWidget{
@凌驾
状态createState(){
返回新的GuideState();
}
}
类GuideState扩展了状态{
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:安全区(
儿童:中心(
子项:列(子项:[
如果(_page==1)
填充物(
填充:来自LTRB(0,10,0,0)的边插入集,
孩子:图像(
图像:AssetImage('graphics/Logo.png'),
高度:MediaQuery.of(context.size.height*0.1)),
SizedBox(高度:500,子项:Page()),
]))));
}
}
类页面扩展StatefulWidget{
PageState createState()=>PageState();
}
类PageState扩展状态{
最终控制器=页面控制器(
初始页:0,
);
@凌驾
小部件构建(构建上下文){
返回脚手架(
//appBar:appBar(标题:Text('flatter中的页面视图小部件'),
正文:中(
子:容器(
宽度:MediaQuery.of(context).size.width*0.95,
高度:MediaQuery.of(上下文).size.height*0.6,
子:页面视图(
控制器:控制器,
onPageChanged:(第页){
设置状态(){
如果(第==1页){
_page=1;
}
});
},
页面捕捉:对,
滚动方向:轴水平,
儿童:[
容器(
//颜色:颜色。粉红色,
//儿童:中心(
子:文本(
“1.天幕文本bude nahrán z databáze.”,
样式:TextStyle(字体大小:25,颜色:Colors.black),
)),
容器(
//颜色:颜色。绿色,
子:文本(
“2.第二个文本bude nahrán z databáze”,
样式:TextStyle(字体大小:25,颜色:Colors.black),
)),
容器(
//颜色:颜色。浅蓝色,
子:文本(
“3.第四段文字”,
样式:TextStyle(字体大小:25,颜色:Colors.black),
)),
],
),
)));
}
}

int\u page=0;
不是
指南
小部件状态的一部分。请将其放在此处:

类引导状态扩展状态{
int _page=0;
...

int\u page=0;
不是
指南
小部件状态的一部分。请将其放在此处:

类引导状态扩展状态{
int _page=0;
...

变量
\u page
设置为全局变量,它必须是as状态的一部分才能触发更改,但如果您想根据另一个子小部件中的操作更改小部件,可以通过多种方式完成,具体取决于您的选择。在您的情况下,很容易将函数作为子小部件的参数
第页

类页面扩展StatefulWidget{
最终函数(int)onChange;
const Page({Key,this.onChange}):super(Key:Key);
PageState createState()=>PageState();
}
然后在页面更改时调用它

onPageChanged: (page) {
  widget.onChange(page);
},
因此,您可以处理父窗口小部件中的更改并触发状态更改

类引导状态扩展状态{
int _page=0;
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:安全区(
儿童:中心(
子:列(
儿童:[
如果(_page==1)
填充物(
填充:来自LTRB(0,10,0,0)的边插入集,
孩子:图像(
图像:AssetImage('graphics/Logo.png'),
高度:MediaQuery.of(context).size.height*0.1,
),
),
大小盒子(
身高:500,
孩子:第页(
更改:(第页){
设置状态(()=>_page=page);
},
),
),
],
),
),
),
);
}
}

变量
\u page
设置为全局变量,它必须是as状态的一部分才能触发更改,但如果您想根据另一个子小部件中的操作更改小部件,可以通过多种方式完成,具体取决于您的选择。在您的情况下,很容易将函数作为子小部件的参数
第页

类页面扩展StatefulWidget{
最终函数(int)onChange;
const Page({Key,this.onChange}):super(Key:Key);
PageState createState()=>PageState();
}
然后在页面更改时调用它

onPageChanged: (page) {
  widget.onChange(page);
},
因此,您可以处理父窗口小部件中的更改并触发状态更改

类引导状态扩展状态{
int _page=0;
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:安全区(
儿童:中心(
子:列(
儿童:[
如果(_page==1)
填充物(
填充:来自LTRB(0,10,0,0)的边插入集,
孩子:图像(
图像:AssetImage('graphics/Logo.png'),
高度:MediaQuery.of(context).size.height*0.1,
),
),
大小盒子(
身高:500,
孩子:第页(
更改:(第页){
设置状态(()=>_page=page);
},
),
),
],
),
),
),
);
}
}
\u第一页