拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 影片不会在页面开始时触发

影片不会在页面开始时触发

白鹭 - 2022-01-24 2113 0 0

我想展示一个影片,我的容器每次都在页面的开头增加其宽度和高度。在这里,它直接采用 的值initstate并且不显示任何影片。

Padding(
              padding: const EdgeInsets.all(8.0),
              child: AnimatedContainer(
                duration: Duration(seconds: 2),
                curve: Curves.easeInOut,
                decoration: BoxDecoration(
                    image:DecorationImage(
                      fit: BoxFit.cover,
                      colorFilter: ColorFilter.mode(Colors.black54, BlendMode.darken),
                      image: AssetImage("lib/images/read.jpg"),
                    ),
                    borderRadius: BorderRadius.circular(10),
                    gradient: LinearGradient(
                        colors: <Color>[
                          Colors.yellowAccent,
                          Colors.blueAccent,
                        ]
                    )
                ),
                width: width,
                height: height,
                child: FlatButton(
                  onPressed: (){
                    Navigator.push(context, MaterialPageRoute(builder: (context)=>Quote_Categories())
                    );
                  },
                  child: Text(
                    'Reader',
                    style: TextStyle(
                      fontSize: 35,
                      fontWeight: FontWeight.bold,
                      color: Colors.white,
                    ),
                  ),
                ),
              ),
            ),
height=400;
width=250;
  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    registernotification();
    width=200;
    height=200;
  }

uj5u.com热心网友回复:

所以基本上你在读取值之前width:200height = 200,因为那些在 initState. 您可以简单地创建一个Future methodwith Duration.zero和 usesetState来更新 UI。

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

  changeContainerSize() {
    Future.delayed(Duration.zero).then((value) {
      setState(() {
        width = 200;
        height = 200;
      });
    });
  }

或使用 addPostFrameCallback

  @override
  void initState() {
    super.initState();
    WidgetsBinding.instance!.addPostFrameCallback((timeStamp) {
      setState(() {
        width = 200;
        height = 200;
      });
    });
  }
标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *