小编jah*_*stu的帖子

Flutter:构建失败,出现异常

我正在尝试在Flutter应用程序中使用FirebaseAuth。我可以使用Firestore服务,但是当我在pubspec.yaml文件中包含firebase_auth权限时,出现以下异常。

失败:构建失败,发生异常。

*出了什么问题:任务':app:transformDexArchiveWithExternalLibsDexMergerForDebug'的执行失败。
> java.lang.RuntimeException:java.lang.RuntimeException:com.android.builder.dexing.DexArchiveMergerException:无法合并dex
* Try:Run---stacktrace选项以获取堆栈跟踪。使用--info或--debug选项运行以获取
更多日志输出。

*在https://help.gradle.org上获得更多帮助

这是我的pubspec.yaml文件

依赖项:
  扑:
    SDK:颤振
  国际:^ 0.15.6
  #firebase_core:^ 0.2.2
  google_sign_in:
    git:
      网址:http://github.com/jahirhstu/flutter_plugins.git
      路径:packages / google_sign_in
  #firebase_analytics: 
  #git:
  #网址:http://github.com/jahirhstu/flutter_plugins.git
  #路径:packages / firebase_analytics
  firebase_auth:
    git:
      网址:http://github.com/jahirhstu/flutter_plugins.git
      路径:packages / firebase_auth
  cloud_firestore:
    git:
      网址:http://github.com/jahirhstu/flutter_plugins.git
      路径:packages / cloud_firestore
  cupertino_icons:^ 0.1.0
  shrine_images:1.0.0

dev_dependencies:
  flutter_test:
    SDK:颤振

firebase firebase-authentication flutter

4
推荐指数
2
解决办法
4601
查看次数

IndexedStack 小部件未更新

我正在使用 IndexedStack 小部件并根据某些逻辑提供小部件列表。我有一个显示学生名单的列表页面和另一个添加新学生的页面。

当我添加新学生时,它添加成功并存储在firestore中。但是当我切换回学生的列表页面时,它不会显示新添加的学生。它显示了除最后一个创建的学生之外的所有其他学生。如果我关闭应用程序并再次打开,它会显示所有学生,包括添加的学生。

我放了一些日志,发现小部件构建函数在应用程序加载的第一次被调用。下次小部件从缓存加载时,我猜是因为没有调用构建函数。

我是否需要每次手动重新加载学生列表小部件?有没有办法做到这一点?或者还有其他一些方法可以告诉 IndexedStack 小部件每次重新加载小部件。如何在不重新启动应用程序的情况下在列表页面中获取新添加的学生?

索引堆栈代码:

body: Center(
    child: IndexedStack(
      index: _selectedPage,
      children: this._widgets,
    ),
  )
Run Code Online (Sandbox Code Playgroud)

学生名录页面代码:

@override
Widget build(BuildContext context) {
Logger _logger = Logger(this.runtimeType.toString());
_logger.fine('Loading pupils listing page.');
return StreamBuilder<QuerySnapshot>(
  stream: _querySnapshot,
  builder: (BuildContext context, 
AsyncSnapshot<QuerySnapshot>        snapshot) {
    if (snapshot.data == null) 
return   FrequentWidgets().getProgressBar();
    if (snapshot.hasError) return Text('Error: ${snapshot.error}');
    switch (snapshot.connectionState) {
      case ConnectionState.waiting:
        return Text('Loading...');
      default:
        return ListView(
          children: snapshot.data.documents.map(
            (DocumentSnapshot document) {
              return ListTile(
                trailing: Icon(Icons.person),
                title: Text(document["nam"]),
                onTap: () {
                  appData.pupilId = …
Run Code Online (Sandbox Code Playgroud)

dart flutter flutter-layout

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