import 'package:flutter/material.dart';
import 'dart:async';
void main() => runApp(MyApp());
//Using Bloc
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return StreamBuilder(
stream: bloc.darkThemeEnabled,
initialData: false,
builder: (context, snapshot) => MaterialApp(
theme: snapshot.data ? ThemeData.dark() : ThemeData.light(),
home: HomePage(snapshot.data)),
);
}
}
class HomePage extends StatelessWidget {
final bool darkThemeEnabled;
HomePage(this.darkThemeEnabled);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Dynamic Theme"),
),
body: Center(
child: Text("Hello World"),
),
drawer: Drawer(
child: ListView(
children: <Widget>[
ListTile(
title: Text("Dark Theme"),
trailing: Switch(
value: darkThemeEnabled,
onChanged: bloc.changeTheme,
),
)
],
),
),
);
}
}
class Bloc {
final _themeController = StreamController<bool>();
get changeTheme => _themeController.sink.add;
get darkThemeEnabled => _themeController.stream;
}
final bloc = Bloc();
Run Code Online (Sandbox Code Playgroud)
1.警告说关闭 dart.core.sink 的实例 2.为什么 dart.core.sink 用于颤振?3.我该如何解决这个错误4.它的错误文档将我重定向到这个网站链接5. 我不知道如何在flutter中使用这些方法请指导我
jnn*_*nks 21
dart.core.sink是由Stream实现的接口。正在显示警告,因为 dart 编译器希望您使用 Stream 的实例。在这种情况下,这是您的..close()final _themeController = StreamController<bool>()
如果要修复警告,请添加
void dispose() {
_themeController.close();
}
Run Code Online (Sandbox Code Playgroud)
到您的 Bloc 课程。
仅仅添加该方法并没有多大作用,因为它没有被调用。因此,您应该将 main() 方法更改为bloc.dispose()在runApp(MyApp()).
| 归档时间: |
|
| 查看次数: |
6203 次 |
| 最近记录: |