设想:
例如,我有以下抽象类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 个不同的抽象方法:
synced布尔值的吸气剂synced布尔值的设置器onSync执行同步的抽象方法对于这个问题,我在一个虚拟实现中扩展了该类:
class DummyImpl extends Synchronizable {
}
Run Code Online (Sandbox Code Playgroud)
IDE 给了我一个错误/警告,要求我必须重写抽象方法,但方法计数不是3,而是2。
当我使用提示实现时,它仅覆盖2方法。和getter方法onSync。
注意: 错误从类名中消失,这意味着覆盖成功并且没有错过任何要覆盖的方法。
问题):
setter方法?setter覆盖?
(不重要但很好奇) …我一直在从事一个项目,该项目要求我根据移动设备的orientation.
例如,在portrait方向的情况下,我需要显示一个小部件(比如说纵向小部件),在方向的情况下landscape,我需要显示另一个小部件(我们称之为横向小部件)。
我用过OrientationBuilder
实际问题:在方向更改时,所有Dialogs和/OptionMenu或任何其他 Popup 类型的 Widget 都不会关闭。如何在方向改变时关闭它们?
重现问题的步骤:
OptionMenu左上角的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)