其他文件中的单独小部件颤动

Posted

技术标签:

【中文标题】其他文件中的单独小部件颤动【英文标题】:Separate widgets in other files flutter 【发布时间】:2020-06-24 07:19:37 【问题描述】:

我想让我的代码更整洁,但是当我将经常在 1 个文件中使用的小部件分开时遇到了问题

这是我的主要小部件

import 'package:a_tiket/Helpers/widget_helper.dart';
class LoginPage extends StatefulWidget     
  @override
  _LoginPageState createState() => _LoginPageState();

class _LoginPageState extends State<LoginPage> 

  bool _isLoading = false;
  var _message = '';
  var _hasError = false;

  @override
  Widget build(BuildContext context) 
    return
      _isLoading ?
      _loadingWidget(context)
          :
      Scaffold(
          body: SingleChildScrollView(
              child: Container(
                    ),
                  ],
                ),
              )
          )
      )
    ;
  

这是我的 widget_helper.dart

Widget _loadingWidget (BuildContext context)
  return Scaffold(
    body: Center(
      child: CircularProgressIndicator(
        backgroundColor: ACCENT_COLOR,
        valueColor: new AlwaysStoppedAnimation<Color>(PRIMARY_COLOR),
      ),
    ),
  );

问题是我遇到了一些错误。我已经为 widget_helper 添加了导入,但仍然出现错误

lib/Pages/loginPage.dart:193:7: Error: The method '_loadingWidget' isn't defined for the class '_LoginPageState'.

我该怎么办?我只是想让代码更整洁

【问题讨论】:

【参考方案1】:

请删除underline

改变
_loadingWidget(context)

loadingWidget(context)

【讨论】:

下划线表示私有不公开 私人看不到 如何传递变量?【参考方案2】:

您的代码存在一些问题:

对于这样一小段代码,例如显示 CircularProgressIndicator 你不应该把一个方法放在一个单独的 文件。你不是让你的代码“更整洁”,而是让它变得更难 阅读。如果您真的想将它放在一个单独的文件中,请创建一个无状态小部件来显示您想要的代码。但话又说回来,你只是在使用 CircularProgressIndicator。您没有保存任何代码,只是创建了更多不必要的代码。 您已经有一个 Scaffold,您将在其中显示 CircularProgressIndicator。你不需要另一个。它什么也没做。 虽然 Dart 使用 camelCase 命名变量,但文件名使用 snake_case。命名文件时尝试使用它。

【讨论】:

我需要在任何地方调用 isloading。那么,我应该为更整洁的代码做些什么呢?我记得图书馆的 CircularProgressIndicator

以上是关于其他文件中的单独小部件颤动的主要内容,如果未能解决你的问题,请参考以下文章

在其他小部件上颤动阴影

如何在颤动中获取动态文本小部件的宽度?

如何在颤动中间接调用另一个小部件中的 ontap 函数?

有没有办法在不使用材料小部件的情况下提升小部件的颤动?

导航抽屉未在颤动中从 APPBar 小部件打开

如何在颤动中使用流构建器刷新小部件