在 main.dart
void main() {
SystemChrome.setSystemUIOverlayStyle(
SystemUiOverlayStyle(
statusBarColor: Colors.black.withOpacity(0), //top bar color
statusBarIconBrightness: Brightness.dark, //top bar icons
systemNavigationBarColor: Colors.black, //bottom bar color
systemNavigationBarIconBrightness: Brightness.light, //bottom bar icons
),
);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(
//primaryColor: Color.fromRGBO(113, 201, 206, 1),
fontFamily: 'Montserrat',
textTheme: TextTheme(
headline: TextStyle(
fontSize: 40,
fontWeight: FontWeight.w500,
),
title: TextStyle(
fontWeight: FontWeight.w700,
fontSize: 16,
),
body1: TextStyle(
fontSize: …Run Code Online (Sandbox Code Playgroud) 我有一个无状态小部件,在编写代码时,我在无状态小部件中使用了一个非最终字段,IDE 不断警告我 all the fields in stateless widget should be final
但我不明白为什么在无状态小部件中有一个非最终字段是一个问题。
我认为拥有非 final 字段应该完全没问题,因为可能有一个我们不想稍后修改的字段,但该字段只能在构造函数内部初始化,因此您需要使用 non-final场地
例子:
class Temp extends StatelessWidget {
final int a;
final int b;
int c;
temp({this.a, this.b}) {
this.c = this.a + this.b;
}
@override
Widget build(BuildContext context) {}
}
Run Code Online (Sandbox Code Playgroud)
在上面的小部件中,c即使我没有计划c在将来更改变量,我也无法将其设为 final,因为它是在构造函数内部初始化的。
如果在无状态小部件中使用非最终字段不是一个好主意,那么如何处理上述情况。
注意:我不能使用,Constructor() : [initialization] {}因为初始化可能涉及函数或循环
我正在使用mobxflutter 进行状态管理。但在项目中添加后,mobx我无法构建生成的文件。并得到错误
Bad state: Unexpected diagnostics:
C:\flutter\bin\cache\dart-sdk\lib\core\uri.dart:3259:39 - Expected an identifier.
[SEVERE] mobx_codegen:mobx_generator on lib/main.dart:
Run Code Online (Sandbox Code Playgroud)
mobx 文件:-
import 'package:mobx/mobx.dart';
part 'weather_store.g.dart';
class WeatherStore = _WeatherStore with _$WeatherStore;
abstract class _WeatherStore with Store {
}
Run Code Online (Sandbox Code Playgroud)
pubspec.yaml:-
dependencies:
flutter:
sdk: flutter
mobx: ^0.3.10
flutter_mobx: ^0.3.4+1
provider: ^3.2.0
dev_dependencies:
flutter_test:
sdk: flutter
build_runner:
mobx_codegen: ^0.3.10+1
Run Code Online (Sandbox Code Playgroud)
如何解决问题?
编辑:- 构建命令flutter packages pub run build_runner watch
在清晰的架构中,鲍勃叔叔建议的是什么。
我对如何正确分配责任有很多疑问。
看来controller和presenter之间没有任何关系。控制器的工作是获取输入并触发用例,呈现器的工作是获取用例提供的输出数据并将其显示在视图上。
在这里,视图似乎是一个非常愚蠢的对象,它的唯一功能是将数据显示到 UI,如果控制器仅由外部机构调用,那么它就有意义。
但是在网络情况下如何访问控制器呢?用户与视图交互,因此视图应该保存控制器的实例和足够的智能来调用控制器的正确方法。在这种情况下,视图。并不是真正的愚蠢对象,它具有如何调用控制器的智能,
或者演示者的工作是调用控制器?取决于 Contax,然后最终调用视图来显示数据。
或者控制器与视图紧密结合?以便所有智能仅存在于控制器中,并且视图传输原始事件和数据。但这样做控制器会对视图了解太多,并且会依赖于视图。
还有一个问题,假设调用用例后,u该用例已成功完成,但 UI 需要更多数据来向 UI 显示结果。
那么获取更多数据的逻辑驻留在哪里呢?
是不是在view以后用例成功后,用例会侵入presenter,presenter会发送消息给view,然后view会向controller请求更多的数据来显示?
是在吗Presenter?因此,在用例成功并显示成功消息之后。然后演示者将调用控制器来获取要显示的附加数据并将其传递给视图。
是在吗controller?从用例获得成功返回响应后,控制器将再次调用另一个用例,该用例将通过演示器向视图显示附加数据。
是在吗use case?用例本身会决定发送额外的数据以显示给用户,但是,我对此并不确信,因为用例不应该考虑正在呈现哪些数据,它将绑定用例到一种类型的表示,因为它不可能是真正的表示,例如,CLI 可能不需要附加数据。
另外,谁真正创建了控制器和演示器,是主函数创建每个演示器和控制器,还是高层控制器创建低级控制器和演示器并将其传递给演示器?
如何在vscode中重新加载git源代码管理中文件的先前历史记录?vs code 只提供恢复最后一次提交的功能,我可以在 vscode 中看到带有“Git History”扩展名的文件的所有历史记录,但是有没有办法回滚到文件的任何历史记录?
class pin extends StatefulWidget {
@override
_PinState createState() => _PinState();
}
class _PinState extends State<pin> with TickerProviderStateMixin {
AnimationController _controller;
Animation<double> _animation;
bool error = false;
@override
void initState() {
super.initState();
this._controller = AnimationController(
duration: const Duration(milliseconds: 1000), vsync: this);
this._animation =
Tween(begin: 0.0, end: 1.0).animate(CurvedAnimation(
parent: _controller,
curve: Curves.easeIn,
));
}
@override
Widget build(BuildContext context) {
if(this.error) {
this.error = false;
_controller.forward();
}
return Container(
child: if (this.error)
Container(
child: FadeTransition(
opacity: _animation,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[ …Run Code Online (Sandbox Code Playgroud) 我很难理解如何实际实现干净的架构,
请注意以下有关干净架构的要点。
传统上,在开发任何反应或任何其他应用程序时。主要焦点是“视图”,因此视图定义用例,用例定义实体。因此,最终结果是用例与视图紧密耦合。
所以当用户与UI交互时,控件从视图开始,视图调用用例,用例使用实体并将结果返回给视图。
这样,就很难将用例和视图分开。
我们如何实现视图与用例的分离?以及从控制器到用例再到视图的控制流。
问题
从上图可以清楚地看出,控制器通过输入端口接口调用uncase交互器。并且用例使用输出端口更新了 UI。
所以,假设我们有如下实体。
{ x : "data x", y : "data y", z : "data z"}
Run Code Online (Sandbox Code Playgroud)
输出将显示在 CLI 或 WEB 中。
op()
假设执行后有一些用例操作,op()结果将显示给用户。
但是,如果 UI 是 WEB,则应该显示x数据。y
如果 UI 是 CLI,则应z显示数据 和 。
我们如何分配逻辑来实现干净的架构?
一种解决方案是,我们可以有输出端口接口。
interface Presenter
{
public void presentForWeb({ x : "data x", y : "data y" });
public void presentForCli({ z : "data z" });
}
Run Code Online (Sandbox Code Playgroud)
但这违反了架构。从用例开始,他们应该了解 UI 以便能够正确显示数据。
另一种解决方案是,将输出端口设置为 …
我正在使用微型编辑器。
如何更改微编辑器的背景颜色和其他设置?
有没有它的配置文件,如果有的话,位置在哪里?
我有一个包含大量内容(如图像、文本等)的小部件,这使得它在 Flutter 应用程序中变得很重,但是当应用程序导航到具有复杂小部件的小部件时,该应用程序面临卡顿,因为小部件太大而无法使用瞬间加载,
我想显示简单的 lite 加载小部件,直到加载原始小部件,从而从应用程序中删除卡顿并启用小部件的延迟加载,
如何在颤振中实现这一目标?
编辑:- 明确地说,我没有从 Internet 加载任何数据,这不会导致延迟。为了从 Internet 加载数据,我们有FutureBuilder. 这里我的小部件本身很重,加载需要一些时间。
如何在加载主小部件时显示正在加载的小部件。
我正在使用 MSW(模拟服务工作线程)通过 React 测试库来模拟我的 React 测试中的 HTTP 响应。但是,在某些反应组件中,我有一些加载状态,直到响应完成。
为了测试中间加载状态,有没有办法暂停正在进行的 Service Worker API 并进行一些测试(这样可以保证测试的一致性),然后继续进行进一步的测试?
flutter ×5
use-case ×2
widget ×2
animation ×1
build ×1
build-runner ×1
controller ×1
final ×1
git ×1
lazy-loading ×1
linux ×1
micro-editor ×1
mobx ×1
msw ×1
presenter ×1
reactjs ×1
stateless ×1
ubuntu ×1
unit-testing ×1