标签: flutter-getx

Flutter 使用 Getx 关闭选定的对话框

我使用flutter已经有一段时间了,最​​近使用Get来实现状态管理。我在首先打开加载对话框然后打开消息对话框时遇到问题。然后我想关闭加载对话框,但消息对话框是保持关闭的对话框。

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

class HomeController extends GetxController {

  Future<void> openAndCloseLoadingDialog() async {
    showDialog(
      context: Get.overlayContext,
      barrierDismissible: false,
      builder: (_) => WillPopScope(
        onWillPop: () async => false,
        child: Center(
          child: SizedBox(
            width: 60,
            height: 60,
            child: CircularProgressIndicator(
              strokeWidth: 10,
            ),
          ),
        ),
      ),
    );

    await Future.delayed(Duration(seconds: 3));

    Get.dialog(
      AlertDialog(
        title: Text("This should not be closed automatically"),
        content: Text("This should not be closed automatically"),
        actions: <Widget>[
          FlatButton(
            child: Text("CLOSE"),
            onPressed: () {
              Get.back();
            },
          )
        ],
      ),
      barrierDismissible: false,
    ); …
Run Code Online (Sandbox Code Playgroud)

flutter flutter-getx

5
推荐指数
1
解决办法
3万
查看次数

如何使用 GetX 包管理 Flutter Web URL 路由?

我正在开发适用于 iOS、Android 和 Web 的 Flutter 应用程序。我决定使用 GetX 包,因为它使事情变得更容易,但我对如何处理 Web URL/地址栏导航感到困惑。例如,我的一个屏幕显示有关事件的详细信息。通过应用程序导航到那里效果很好,但是如果我在浏览器中粘贴到该事件的链接会怎么样?我的 GetX EventController 管理一个_selectedEvent事件,这就是我知道要显示哪个事件的详细信息的方式。但是,如果我使用 URL 链接,我的_selectedEvent活动永远不会更新,详细信息屏幕也不会显示正确的活动。

目前,我在主页中设置_selectedEvent当用户单击事件时导航到详细信息屏幕。但是,如果用户通过浏览器中的地址栏导航,我无法更新_selectedEvent. 我认为我无法使用 GetX 中的任何状态管理器,因为我没有更新小部件,所以我不确定在哪里更新我的_selectedEvent.

我应该如何处理地址栏导航?

希望我的解释有意义。我还在努力学习Flutter。

flutter flutter-web flutter-getx

5
推荐指数
1
解决办法
1万
查看次数

在特定文件夹上创建页面 Getx 颤动

我已经为我的 flutter 开发安装了 get_cli 。正如文档所说,我使用该命令get create page:home创建一个带有绑定、视图和控制器的主模块。默认情况下,它创建在 lib/app/modules/home文件夹中。如何在不同的文件夹下创建它,例如lib/app2/modules/homelib/modules/home

flutter flutter-getx get-cli

5
推荐指数
1
解决办法
3300
查看次数

Getx Flutter - 更新列表中的项目不是反应性的

我使用 getx 作为我的 flutter 应用程序的状态管理。但是我在更新列表中的值时遇到了困难。所以我有一个参数为 isFollowing 的用户模型。当我点击一个按钮时,isFollowing 变量会改变,颜色也会更新。但它并没有发生。我使用 Obx 作为我的小部件,因为我已经在开始时注入了状态。获取数据并在前端显示它一切正常。但是当我想更改列表中的值时,它没有更新。我的最小可重复示例

家庭控制器

class HomeController extends GetxController {
  var userslist = List<User>().obs;

  @override
  void onInit() {
    fetchUsers();
    super.onInit();
  }

  void fetchUsers() async {
    var users= await ApiService().getapidata('${usersurl}feed');
    if (users!= null) {
      userslist.value= users;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

模型

class User {
  User({
    this.id,
    this.user_name,
    this.profile_picture,
    this.isFollowing,
  });

  int id;
  String user_name;
  String profile_picture;
  bool isFollowing;


  factory User.fromJson(Map<String, dynamic> json) => User(
        id: json["id"],
        user_name: json["user_name"],
        profile_picture: json["profile_picture"],
        isFollowing: json["is_following"],
      );
Run Code Online (Sandbox Code Playgroud)

看法

class HomeScreen …
Run Code Online (Sandbox Code Playgroud)

dart hybrid-mobile-app flutter getx flutter-getx

5
推荐指数
2
解决办法
2762
查看次数

在嵌套小部件中使用 GetxController 的最佳方法

在我的 Flutter 应用程序中,我使用 GetxController 作为每个视图的 viewModel:

\n
import \'package:flutter/material.dart\';\nimport \'package:get/get.dart\';\n\nimport \'track_activity_view_model.dart\';\n\n// Main widget of the view\nclass TrackActivityView extends StatelessWidget {\n  @override\n  Widget build(BuildContext context) {\n    return GetBuilder<TrackActivityViewModel>(\n        init: TrackActivityViewModel(),\n        builder: (viewModel) {\n          return SafeArea(\n              child: Scaffold(\n            appBar: AppBar(title: Text(\'Registra un\\\'attivit\xc3\xa0\')),\n            body: viewModel.serviceEnabled\n                ? AskPermissionWidget()\n                : TrackingWidget(viewModel),\n          ));\n        });\n  }\n}\n\nclass AskPermissionWidget extends StatelessWidget {\n  @override\n  Widget build(BuildContext context) {\n    return GetBuilder<TrackActivityViewModel>(\n        init: TrackActivityViewModel(),\n        builder: (viewModel) {\n          // Some code that use viewModel\n          return Container();\n        });\n  }\n}\n\nclass TrackingWidget extends StatelessWidget {\n  final …
Run Code Online (Sandbox Code Playgroud)

dart flutter flutter-getx

5
推荐指数
1
解决办法
1万
查看次数

如何强制关闭GetX Snackbar?

我用来Get.snackbar()显示连接到 API 的过程。\n我不明白如何以编程方式关闭小吃栏?\n我有以下代码:

\n
@override\n  Future<List> getImportantData(String inputData) async {\n    try {\n      final token =  basicApiAuthString;\n      print("requesting API with the following request: $inputData");\n      Get.snackbar(\n          "Requesting very important data...",\n          "",\n          duration: 60.seconds, // it could be any reasonable time, but I set it lo-o-ong\n          snackPosition: SnackPosition.BOTTOM,\n          showProgressIndicator: true,\n          isDismissible: true,\n          backgroundColor: Colors.lightGreen,\n          colorText: Colors.white,\n        );\n      List importantData = await _client.requestAPI(basicAuthString: token, body: inputData);\n          .then((importantData) {\n              // Here I need to dismiss the snackbar I am still showing to user\n …
Run Code Online (Sandbox Code Playgroud)

android dart snackbar flutter flutter-getx

4
推荐指数
1
解决办法
6923
查看次数

Getx onInit 未调用

应用程序卡在启动屏幕上有什么原因吗?我使用getx状态管理。如果 authToken 不为空,则应转到主页。但onInit在控制器类中没有调用。

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return GetMaterialApp(
      initialRoute: '/splashScreen',
      getPages: [
        GetPage(name: '/splashScreen', page: () => SplashScreen(),binding: Bind()),
        GetPage(
            name: '/login', page: () => LoginPage(), binding:Bind()),
        GetPage(
            name: '/mainPage', page: () => MainPage(), binding:Bind())
      ],
      debugShowCheckedModeBanner: false,
      localizationsDelegates: const [
        LocalizationDelegate(),
        GlobalWidgetsLocalizations.delegate,
        GlobalCupertinoLocalizations.delegate,
      ],
      supportedLocales: [
        const Locale('en', ''),
        const Locale('zh', ''),
      ],
      title: 'Sample',
      theme: ThemeData(
        accentIconTheme: …
Run Code Online (Sandbox Code Playgroud)

splash-screen dart flutter flutter-getx

4
推荐指数
1
解决办法
2万
查看次数

在 flutter 中使用 Getx 管理应用程序生命周期状态?

管理应用程序生命周期状态的最佳方法是什么?

您会使用带有 WidgetsBindingObserver 的 getxservice 来做到这一点吗?

提前致谢。

flutter flutter-getx

4
推荐指数
1
解决办法
9908
查看次数

Flutter:如何使用 Getx Obx 更新谷歌地图中的标记位置?

我有以下view

import 'dart:async';
import 'package:get/get.dart';
import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import '../../Controllers/mapview_controller.dart';

class MapViewerPage extends StatelessWidget {
  MapViewerPage({Key? key}) : super(key: key);

  final MapViewController mapcontroller = MapViewController();
  final Completer<GoogleMapController> _controller = Completer();
  final CameraPosition _initialCameraPosition = const CameraPosition(
    target: LatLng(28.527582, 77.0688971),
    zoom: 16,
  );

  final BitmapDescriptor defaultIcon =
      BitmapDescriptor.defaultMarkerWithHue(BitmapDescriptor.hueRed);

  final List<Marker> allMarkers = [];

  @override
  Widget build(BuildContext context) {
    return GetBuilder<MapViewController>(
        init: mapcontroller,
        builder: (controller) {
           return SizedBox(
              width: double.infinity,
              height: double.infinity,
              child: Obx(() => GoogleMap(
            myLocationButtonEnabled: true,
            markers:Set<Marker>.of(allMarkers),
            mapType: …
Run Code Online (Sandbox Code Playgroud)

dart flutter flutter-getx

4
推荐指数
1
解决办法
4337
查看次数

如何解决未处理的异常:将对象转换为可编码对象失败?

我创建了 2 个类,第一个是:

class Mesure {
  late String equipement; 
  late String number; 
  late String courant = ""; 
  

  Mesure.init(List<String> values) {
    equipement = values[0];
    number = values[1];
    courant = values[2];
    
  }

}
Run Code Online (Sandbox Code Playgroud)

和数据库类:

class DataBase {
  late int? id;
  late Mesure? mesure;
  late String? status;
  DataBase.init(int id, Mesure mesure, String status) {
    id = id;
    mesure = mesure;
    status = status;
  }
}
Run Code Online (Sandbox Code Playgroud)

现在我用一些值初始化了数据库:

  Mesure mesure = Mesure.init(values);
  DataBase test = DataBase.init(0, mesure, "status");
Run Code Online (Sandbox Code Playgroud)

我想将它存储在存储 getX 中:

   final box = GetStorage(); …
Run Code Online (Sandbox Code Playgroud)

local-storage flutter flutter-getx

4
推荐指数
1
解决办法
1507
查看次数