Утверждение не выполняется в веб-версии, но успешно на iOS Flutter - PullRequest
0 голосов
/ 05 мая 2020

У меня другое поведение, когда я запускаю приложение на Chrome, чем когда я запускаю его на iOS. Это происходит, когда я попадаю на этот экран:

import 'dart:io';
import 'package:fixit_shop_flutter/fixit_shop_app/authentication_bloc/user_repository.dart';
import 'package:fixit_shop_flutter/fixit_shop_app/register/bloc/register_bloc.dart';
import 'package:fixit_shop_flutter/fixit_shop_app/register/register_form.dart';
import 'package:fixit_shop_flutter/localization.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';

class RegisterScreen extends StatelessWidget {
  final UserRepository _userRepository;

  RegisterScreen({Key key, @required UserRepository userRepository})
      : assert(userRepository != null),
        _userRepository = userRepository,
        super(key: key);

  @override
  Widget build(BuildContext context) {
    dynamic backButton =
        Platform.isIOS ? CupertinoIcons.back : Icons.arrow_back;
    return Stack(
      children: [
        Image.asset('assets/mainBg.png',
            height: MediaQuery.of(context).size.height,
            width: MediaQuery.of(context).size.width,
            fit: BoxFit.cover),
        Scaffold(
          backgroundColor: Colors.transparent,
          appBar: AppBar(
            centerTitle: true,
            elevation: 0,
            title: Text(
              AppLocalizations.instance.text('RegisterScreenTitle'),
//              textAlign: TextAlign.center,
              style: TextStyle(
                  color: Colors.orange,
                  fontSize: 22,
                  fontWeight: FontWeight.w500,
                  letterSpacing: 1),
            ),
            backgroundColor: Colors.transparent,
            leading: IconButton(
                icon: Icon(backButton),
                color: Colors.redAccent,
                onPressed: () {
                  Navigator.pop(context);
                }),
          ),
          body: BlocProvider<RegisterBloc>(
            create: (context) => RegisterBloc(userRepository: _userRepository),
            child: RegisterForm(),
          ),
        ),
      ],
    );
  }
}

Если на iOS экран загружается нормально, а при запуске веб-версии выдает ошибку Another exception was thrown: Failed assertion: boolean expression must not be null. Теперь вы знаете, что могло вызвать такое другое поведение? Я следил за всеми виджетами, которые передают userRepository по дереву, и все в порядке .. как на самом деле iOS работает правильно.

Вот мой доктор трепетания:

[✓] Flutter (Channel unknown, v1.12.13+hotfix.5, on Mac OS X 10.13.6 17G65, locale en-IT)
    • Flutter version 1.12.13+hotfix.5 at /Users/vinnytwice/Developer/flutter
    • Framework revision 27321ebbad (5 months ago), 2019-12-10 18:15:01 -0800
    • Engine revision 2994f7e1e6
    • Dart version 2.7.0


[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
    • Android SDK at /Users/vinnytwice/Library/Android/sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-29, build-tools 29.0.2
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b49-5587405)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 10.2.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 10.2.1, Build version 10E1001
    • CocoaPods version 1.8.1

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 3.5)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 44.0.1
    • Dart plugin version 191.8593
    • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b49-5587405)

[✓] Connected device (3 available)
    • iPad Pro (10.5-inch) • 23C29147-A4F3-4B9F-8182-9C813D5A54AD • ios            • com.apple.CoreSimulator.SimRuntime.iOS-12-2 (simulator)
    • Chrome               • chrome                               • web-javascript • Google Chrome 81.0.4044.129
    • Web Server           • web-server                           • web-javascript • Flutter Tools

• No issues found!

Do вы видите что-нибудь обновить? Я использую High Sierra, поэтому думаю, что не могу go выше Flutter версии 1.12.13 + hotfix.5. Также я вижу, что канал неизвестен .. может это как-то связано с ним? Как всегда, большое спасибо за ваше время и помощь. Ура.

1 Ответ

0 голосов
/ 05 мая 2020

нашел причину ... это было не утверждение, а проверка платформы, которую я делал на backButton, которая включала только iOS .. Я добавил проверку для Интернета, и теперь она работает как ожидалось. Я оставлю вопрос заданным, поскольку это может помочь другим в переносе своих приложений в Интернет.

dynamic backButton;
    if (kIsWeb) {
      backButton = Icons.arrow_back;
    } else if (Platform.isIOS) {
      backButton = CupertinoIcons.back;
    } else {
      backButton = Icons.arrow_back;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...