我有这个 Getx 控制器用于从数据库读取帖子的内容:
class ReadSinglePostController extends GetxController {
var isLoading = true.obs;
var posts = Post(
postID: 1,
userID: 0,
thumbnail: 'thumbnail',
imageList: 'imageList',
title: 'title',
description: 'description',
createdTime: DateTime.now())
.obs; //yes this can be accessed
var postid = 2.obs; //I want this value to change when I click a post in the UI
@override
void onInit() {
super.onInit();
readPost(postid);
}
updateID(var postID) {
postid.value = postID;
print('im print ${postid.value}');
}//should update postid when a post is clicked in the …Run Code Online (Sandbox Code Playgroud) 我想使用上下文在 getxcontroller 方法中显示来自酷警报的自定义对话框。我创建了以下控制器
class HomePageController extends GetxController {
@override
void onInit() {
super.onInit();
getData();
}
void getData(){
//perform http request here
//show cool alert
CoolAlert.show(
context: context, //here needs the build context
type: CoolAlertType.success
);
}
}
Run Code Online (Sandbox Code Playgroud)
我在我的无状态小部件中使用这个控制器,例如
class HomePage extends StatelessWidget {
HomePage({ Key? key }) : super(key: key);
final _c = Get.find<HomePageController>();
@override
Widget build(BuildContext context) {
return Container(
);
}
}
Run Code Online (Sandbox Code Playgroud)
我如何在控制器中获取当前主页 BuildContext 以显示酷警报。
我想根据 PressBool 是 false 还是 true 来更改小部件的主体。
这是我写的GetxController。
import 'package:get/state_manager.dart';
class PressedState extends GetxController{
var pressedBool = true;
changeStatus() {
if(pressedBool){
pressedBool = false;
}
else {
pressedBool = true;
}
update();
}
}
Run Code Online (Sandbox Code Playgroud)
这里是 GetX 更新和监听应该改变页面正文的地方:
final PressedState pressController = Get.put(PressedState());
return MaterialButton(
onPressed: () {
pressController.changeStatus();
},
child:
pressController.pressedBool
? Container(...) : Container(...)), ...
Run Code Online (Sandbox Code Playgroud)
如何让 GetX 监听 PressBool 变量?
如何从打开对话框小部件/警报对话框的 Get.Dialog 获取返回值?
我的视图层中有这个语句
TextEditingController controllerDestino = TextEditingController();
Run Code Online (Sandbox Code Playgroud)
我想恢复这个controllerDestino,以便在我的控制器层中的方法中使用。
statusUberNaoChamado() {
showBoxAdress = true;
changeMainButton("Chamar", Color(0xFF1ebbd8), () {
callUber("I need pass the controller here");
});
update();}
Run Code Online (Sandbox Code Playgroud)
预先感谢您的关注:)
我正在使用 flutter 和GetX,所以我Obx在我的代码中实现。
我有3个文件:
questionnaire.dart
questionnnaire_controller.dart
popup.dart
在里面popup.dart我有弹出窗口的布局。
在里面questionnaire.dart我有显示弹出窗口内容的代码,该弹出窗口显示要回答的调查问卷。
在里面questionnaire_controller.dart我有一些使用的变量和函数,比如getQuestionnaires()异步获取调查问卷数据的函数,或者 list ,或者保存已选择的调查问卷实例的questionnaires变量。selectedQuestionnaire
如果已选择调查问卷,则必须在弹出对话框的顶部popup.dart显示调查问卷的标题。部分代码如下:
static Future<void> showQuestionnaireInput({String title, Widget child, Widget icon}) async {
bool mobileSize = Get.size.width <= ResponsiveSizingConfig.instance.breakpoints.desktop;
if (mobileSize) {
await Get.to(InputScreenWidget(child, title));
} else {
await showDialog(
context: Get.context,
builder: (context) {
return AlertDialog(
titlePadding: EdgeInsets.all(8),
contentPadding: EdgeInsets.all(8),
title: Container(
decoration: BoxDecoration(border: Border(bottom: BorderSide(color: Colors.grey.shade200, width: 2))),
child: Row(
mainAxisAlignment: …Run Code Online (Sandbox Code Playgroud) 我有一个页面,可以根据该页面的启动位置以两种方式呈现:模态和推送。
我曾经toNamed展示这些页面,但问题是我无法fullscreenDialog在调用站点传递标志。我期待这样的事情:
Get.toNamed('pageName', fullscreenDialog: false);
Run Code Online (Sandbox Code Playgroud)
那么,这种工作我需要两条路线和两个页面吗?像这样的东西:
GetPage(
name: 'pageNameDialog',
page: () => QuestionPage(),
fullscreenDialog: true,
binding: QuestionBinding(),
),
GetPage(
name: 'pageNamePush',
page: () => QuestionPage(),
fullscreenDialog: false,
binding: QuestionBinding(),
),
Run Code Online (Sandbox Code Playgroud)
我认为这应该是一个更好的方法,但我对 Flutter 和 getx 真的很陌生,不知道我应该搜索什么。有人有解决方案吗?否则,我可能不得不加倍我的路线和页面,这是相当多余的。
我正在观看有关使用 Getx 和 API 的教程。设置用于获取数据的控制器后。我们声明了一个列表变量并使其可观察(obs)。但列表格式已被弃用。你能帮我吗我现在该怎么做。
var products = List<Product>().obs;
Run Code Online (Sandbox Code Playgroud) 我在 Flutter 中使用GetX包进行状态管理。我试图根据条件是否成立来显示数据。但出现此错误,提示“类型‘bool’不是类型转换中类型‘RxBool’的子类型”。
下面是我试图展示的代码。感谢帮助。:)
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:github_users/Controllers/status_controller.dart';
import 'package:github_users/Views/show_data.dart';
class HomeScreen extends StatelessWidget {
final statusController = Get.put(StatusController());
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: appBar(),
body: Container(
width: double.maxFinite,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
successButton(context),
SizedBox(height: 20),
faliureButton(context),
],
),
),
);
}
//##############################################
//************** Widget Chunks ***************/
//*************** Appbar ************/
PreferredSizeWidget appBar() {
return AppBar(
backwardsCompatibility: true,
brightness: Brightness.dark,
title: Text(
'Github Users',
),
);
}
//*************** Success …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个下载功能,将文件从 url 下载到手机存储中,并且我制作了一个小部件来显示下载是否开始,以及使用getx obs显示进度计数器
\nfinal ApiServiceController uController = Get.put(ApiServiceController());\n\ndownloading(String fileUrl, String fileName) async {\n Dio dio = Dio();\n fToast("Downloading... $fileName", pop);\n\n try {\n var dir = await downloadDirectory();\n uController.isDwd.value = true;\n\n await dio.download(fileUrl, "${dir.path}/$fileName",\n onReceiveProgress: (rec, total) {\n print("Rec: $rec , Total: $total");\n\n uController.dwdP.value = ((rec / total) * 100).toStringAsFixed(0) + "%";\n });\n fToast("Downloaded", pop);\n } catch (e) {\n print(e);\n }\n uController.isDwd.value = false;\n\n print("Download completed");\n }\nRun Code Online (Sandbox Code Playgroud)\n要显示的小部件
\nStack(children: [\n///.. Container widget here,\nObx(() {\n return uController.isDwd.value\n …Run Code Online (Sandbox Code Playgroud)