如何在颤振中使用 dart.core.sink

abi*_*in 6 dart flutter

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 次

最近记录:

5 年,2 月 前