小编Har*_*shi的帖子

Flutter/Dart - 如何强制重写 getter 和 setter 或扩展抽象类的类中的任何方法?

设想:

例如,我有以下抽象类Synchronizable

abstract class Synchronizable {
  /// Getter & setter for sync status of the current data
  bool get synced;

  set synced(bool status);

  /// Method that will be called to execute the synchronization process
  Future<Either<Error, dynamic>> onSync();
}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,该类有 3 个不同的抽象方法:

  1. synced布尔值的吸气剂
  2. synced布尔值的设置器
  3. onSync执行同步的抽象方法

对于这个问题,我在一个虚拟实现中扩展了该类:

class DummyImpl extends Synchronizable {

}
Run Code Online (Sandbox Code Playgroud)

IDE 给了我一个错误/警告,要求我必须重写抽象方法,但方法计数不是3而是2

提示实现抽象方法

当我使用提示实现时,它仅覆盖2方法。和getter方法onSync

自动完成以覆盖抽象方法

注意: 错误从类名中消失,这意味着覆盖成功并且没有错过任何要覆盖的方法。

问题):

  1. 在这种情况下如何强制覆盖该setter方法?
  2. 为什么编译器会跳过setter覆盖? (不重要但很好奇) …

oop dart flutter

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

仅在处置当前小部件之前关闭所有对话框和弹出窗口,不应删除其他小部件

我一直在从事一个项目,该项目要求我根据移动设备的orientation.

例如,在portrait方向的情况下,我需要显示一个小部件(比如说纵向小部件),在方向的情况下landscape,我需要显示另一个小部件(我们称之为横向小部件)。

我用过OrientationBuilder

实际问题:在方向更改时,所有Dialogs和/OptionMenu或任何其他 Popup 类型的 Widget 都不会关闭。如何在方向改变时关闭它们?

重现问题的步骤:

  1. 运行下面给出的应用程序代码[用于重现问题的示例应用程序]
  2. 长按应用程序主体以查看对话框或单击OptionMenu左上角的
  3. 更改设备方向,您将看到小部件主体已根据方向发生变化,但小Popuped部件仍然可见。

注意:请注意,我需要针对此问题的全局解决方案。仅专门围绕此代码提供解决方案对我来说没有任何用处。这是我为了更好地理解问题而提供的示例代码,我根本不使用此代码。

示例应用程序代码:

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

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return OrientationBuilder(builder: (context, orientation) {
      bool isLandscape = …
Run Code Online (Sandbox Code Playgroud)

flutter flutter-dialog

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

标签 统计

flutter ×2

dart ×1

flutter-dialog ×1

oop ×1