Приложение Flutter зависает при запуске клавиатуры - PullRequest
0 голосов
/ 15 марта 2020

Я пытаюсь создать приложение IOS с флаттером, которое использует карты Google. Однако, когда я нажимаю на поле поиска и открываю клавиатуру, чтобы найти место, приложение зависает, и я даже не могу напечатать. Это в симуляторе, так как у меня нет физического iPhone, чтобы проверить его. Я начинающий трепетать и не могу сказать, что идет не так (подозревая, что я что-то испортил). Я исследовал это и обнаружил, что в предыдущей версии флаттера была проблема с задержкой клавиатуры IOS, но не было никаких упоминаний о том, что приложение полностью зависло. Я прокомментировал Changed, думая, что это как-то связано с остановкой.

class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  Completer<GoogleMapController> _controller = Completer();

  static const LatLng _center = const LatLng(45.521563, -122.677433);

  String searchValue = "";
  String _mapStyle;

  @override
  void initState() {
    super.initState();

    rootBundle.loadString('assets/map_style.txt').then((string) {
      _mapStyle = string;
    });
  }

  @override
  Widget build(BuildContext context) {
    return CupertinoPageScaffold(
        navigationBar: CupertinoNavigationBar(
          backgroundColor: GlobalAppConstants.appMainColor,
        ),
        child: GestureDetector(
          onTap:() {
            FocusScope.of(context).requestFocus(new FocusNode());
          },
          child: Stack(
            children: <Widget>[
              Container(
                child: GoogleMap(
                  initialCameraPosition:
                      CameraPosition(target: _center, zoom: 1.0),
                  mapType: MapType.normal,
                  onMapCreated: (GoogleMapController controller) {
                    controller.setMapStyle(_mapStyle);
                    _controller.complete(controller);
                  },
                ),
              ),
              Container(
                color: Color.fromRGBO(255, 255, 255, 0.7),
              ),
              Align(
                alignment: Alignment(0.0, -0.5),
                child: Column(
                  children: <Widget>[
                    Text(
                      'My Text',
                      style:
                          TextStyle(fontSize: 30, fontWeight: FontWeight.bold),
                    ),
                    Container(
                      padding: EdgeInsetsDirectional.only(top: 20.0),
                    ),
                    Text(
                      'Search Country',
                      style: TextStyle(
                          color: GlobalAppConstants.appMainColor,
                          fontWeight: FontWeight.bold),
                    ),
                    Container(
                      width: 140.0,
                      padding: EdgeInsetsDirectional.only(top: 0.0),
                      child: Divider(
                        thickness: 7.0,
                        color: GlobalAppConstants.appMainColor,
                      ),
                    ),
                    Container(
                      padding: EdgeInsetsDirectional.only(
                          start: 10.0, end: 10.0, top: 10.0),
                      height: 50,
                      child: CupertinoTextField(
                        placeholder: 'Search Country',
                        padding: EdgeInsets.symmetric(
                            horizontal: 10.0, vertical: 0.4),
                        prefix: Container(
                          padding: EdgeInsetsDirectional.only(start: 10.0),
                          child: Icon(
                            CupertinoIcons.search,
                            color: CupertinoColors.black,
                            size: 22.0,
                          ),
                        ),
                        decoration: BoxDecoration(
                          color: CupertinoColors.white,
                          boxShadow: [
                            BoxShadow(
                              color: CupertinoColors.black,
                            )
                          ],
                        ),
//                        onChanged: (String value) {
////                      setState(() {
////                        searchValue = value;
////                      });
//                        },
                      ),
                    )
                  ],
                ),
              )
            ],
          ),
        ));
  }
}

Я добавил <key>io.flutter.embedded_views_preview</key> <string>YES</string> в мой файл Info.plist. Который, казалось, обсуждался на форумах, которые я нашел. Любая помощь будет оценена. Спасибо.

Ответы [ 2 ]

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

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

0 голосов
/ 15 марта 2020

Не уверен, как я это исправил. Побежал трепетать кучу раз. И изменил и оставил без изменений версию ios в Podfile. Волшебники флаттера c Я думаю. Также в какой-то момент были удалены все содержимое и настройки симулятора.

...