Flutter 颤振状态小部件状态破坏
对于Flutter来说是个新手,我在尝试让状态变量“liked”处理Flutter 颤振状态小部件状态破坏,flutter,Flutter,对于Flutter来说是个新手,我在尝试让状态变量“liked”处理if条件时遇到了一些问题 每当我在likedPressed()方法中添加“if”条件时,它会导致图标停止更改颜色,并且打印日志仅显示一个正在注册的条件 即使我在if/else条件中注释掉API调用,它仍然无法到达删除调用 TLDR:我从来没有看到过从广告中删除类似内容的被解雇。这到底是怎么回事 我/弗利特(16128):喜欢的按钮说:真的 打印(“向广告添加类似内容”) 导入“dart:collection”; 进口“包装:颤振
if
条件时遇到了一些问题
每当我在likedPressed()
方法中添加“if”条件时,它会导致图标停止更改颜色,并且打印日志仅显示一个正在注册的条件
即使我在if/else
条件中注释掉API调用,它仍然无法到达删除调用
TLDR:我从来没有看到过从广告中删除类似内容的被解雇。这到底是怎么回事
我/弗利特(16128):喜欢的按钮说:真的
打印(“向广告添加类似内容”)
导入“dart:collection”;
进口“包装:颤振/材料.省道”;
导入“包:flifter/services.dart”;
导入“包:http/http.dart”;
导入“包:testApp_app_androidx/api_helper_函数/testApp_api_helper.dart”;
导入“包:testApp_app_androidx/resources/assets.dart”;
导入“包:testApp_app_androidx/widgets/home/reusible_widgets/interactiable_widget.dart”;
导入“包:testApp_app_androidx/widgets/home/reusables_widgets/liked_button.dart”;
进口“包装:颤振/cupertino.dart”;
//-------------------------------------------------------
//上课时按下了按钮
//-------------------------------------------------------
类TestApplicationVideoAction扩展StatefulWidget{
@凌驾
PostState createState()=>新建PostState();
}
类PostState扩展了状态{
布尔=假;
testAppAPIHelper testApp_api_helper=新testAppAPIHelper(false);
void likedPressed(){
触觉反馈。振动();
设置状态(){
this.liked=!this.liked;
打印(“喜欢的按钮显示:${this.liked}”);
});
//---------------------------------------------------------------------------
//就像打破状态的按钮动作一样
//---------------------------------------------------------------------------
if(this.liked=true){
打印(“向广告添加类似内容”);
testApp_api_helper.addTestAppAddLikereQuest(“like”);//api异步http get请求
}
否则{///这个条件永远不会满足!!!!!!!!!!!!!!!!
打印(“从广告中删除类似内容”);
testApp_api_helper.removestappadlikerequest(“remove_like”);//api异步http get请求
}
//---------------------------------------------------------------------------
}
@凌驾
小部件构建(构建上下文){
回来
手势检测器(
onTap:()=>likedPressed(),
子:容器(
子项:列(子项:[
新的IconPictureWidget(图标(喜欢?图标。收藏:图标。收藏),
颜色:喜欢?颜色。红色:颜色。白色,尺寸:50,),
正文(
“500k”,
样式:TextStyle(字体大小:10,颜色:Colors.white),
),
],)
),
);
}
}
//---------------------------------------------------------------------------
//图片图标
//---------------------------------------------------------------------------
类IconPictureWidget扩展了无状态Widget{
图标(u)图标;;
IconPictureWidget(图标输入图标){
this.incoming_icon=传入_icon;
}
@凌驾
小部件构建(构建上下文){
归还新的装饰盒(
//子对象:新中心(宽度因子:2.0,子对象:新文本(“我的图像”),
孩子:这个.u图标,
位置:DecorationPosition.background,
装饰:新盒子装饰(
//形状:BoxShape.circle,//用于视觉诊断
//颜色:Colors.transparent,//用于视觉诊断
//image:newdecorationimage(image:newassetimage('assets/avatar.png'),//尚未使用
),
);
}
}
如果(this.like=true){
打印(“向广告添加类似内容”);
testApp_api_helper.addTestAppAddLikereQuest(“like”);//api异步http get请求
}
您正在将true
分配给like
,因此它将始终为true
。
将其更改为:
if(喜欢){
打印(“向广告添加类似内容”);
testApp_api_helper.addTestAppAddLikereQuest(“like”);//api异步http get请求
}否则{
...
}
如果这只是一个复制错误,我有其他理论解释为什么它不起作用。我不敢相信这就是问题所在。非常感谢。
import 'dart:collection';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:http/http.dart';
import 'package:testApp_app_androidx/api_helper_functions/testApp_api_helper.dart';
import 'package:testApp_app_androidx/resources/assets.dart';
import 'package:testApp_app_androidx/widgets/home/reusable_widgets/interactable_widget.dart';
import 'package:testApp_app_androidx/widgets/home/reusable_widgets/liked_button.dart';
import 'package:flutter/cupertino.dart';
//-------------------------------------------------------
//Liked button was pressed class
//-------------------------------------------------------
class testAppLikeVideoAction extends StatefulWidget{
@override
PostState createState() => new PostState();
}
class PostState extends State<testAppLikeVideoAction>{
bool liked = false;
testAppAPIHelper testApp_api_helper = new testAppAPIHelper(false);
void likedPressed(){
HapticFeedback.vibrate();
setState(() {
this.liked = !this.liked;
print("And the liked button says: ${this.liked}");
});
//---------------------------------------------------------------------------
//Like Button Actions that are breaking the state
//---------------------------------------------------------------------------
if(this.liked = true) {
print("Adding a like to ad");
testApp_api_helper.addtestAppAdLikeRequest("like"); //api async http get request
}
else{ ///this condition is never met!!!!!!!!!!!!!!!!
print("Removing a like from ad");
testApp_api_helper.removetestAppAdLikeRequest("remove_like"); //api async http get request
}
//---------------------------------------------------------------------------
}
@override
Widget build(BuildContext context) {
return
GestureDetector(
onTap: () => likedPressed(),
child: Container(
child: Column(children: <Widget>[
new IconPictureWidget( Icon(liked ? Icons.favorite : Icons.favorite_border,
color: liked ? Colors.red : Colors.white, size: 50,) ),
Text(
"500k",
style: TextStyle(fontSize: 10, color: Colors.white),
),
],)
),
);
}
}
//---------------------------------------------------------------------------
//Picture icon
//---------------------------------------------------------------------------
class IconPictureWidget extends StatelessWidget {
Icon incoming_icon;
IconPictureWidget(Icon incoming_icon){
this.incoming_icon = incoming_icon;
}
@override
Widget build(BuildContext context) {
return new DecoratedBox(
//child: new Center(widthFactor: 2.0, child: new Text("my image")),
child: this.incoming_icon,
position: DecorationPosition.background,
decoration: new BoxDecoration(
// shape: BoxShape.circle, //for visual diagnosis
// color: Colors.transparent, //for visual diagnosis
// image: new DecorationImage(image: new AssetImage('assets/avatar.png')), //haven't used yet
),
);
}
}