GCHandle
s фиксирует ваши буферы, а некоторые другие неуправляемые ресурсы освобождаются путем обратного вызова порта завершения. Неуправляемая структура OVERLAPPED
будет зависать до тех пор, пока IAsyncResult
не будет завершена. Это может быть приемлемым, если сетевая нагрузка в вашем приложении невелика, но может стать проблемой, если ваше приложение обрабатывает множество подключений в секунду, поскольку финализация происходит только после полной коллекции GC и в отдельном потоке.
NB: это детали реализации, полученные с помощью Reflector. Предостережение emptor.
Используйте ListView вместо SingleChildScrollView
, поместите оставшуюся часть содержимого в ListView
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
resizeToAvoidBottomPadding: false,
body: NestedScrollView(
controller: _controller,
headerSliverBuilder: (BuildContext context, bool innerBoxScrolled){
return <Widget>[
SliverAppBar(
},
body:ListView(
),
Я исправил свою проблему, используя CustomScrollView
вместо NestedScrollView
, а затем изменил SingleChildScrollView
на SliverList
.