-
-
Notifications
You must be signed in to change notification settings - Fork 37
Open
Labels
bugSomething isn't workingSomething isn't working
Description
Describe the bug
ANR may occur when accessing applications that provide network folders
To Reproduce
-
install CIFS Documents Provider to use SMB
-
Connect to SMB server with CIFS Documents Provider
-
Open the demo application and get permission to access uri
-
Turn off wifi (but leave LTE on)
-
Execute
canReadorexists -
UI freezes and ANR occurs
Expected behavior
By separating threads in a coroutine
Prevents the UI from freezing
Screenshots
demomp4.mp4
Desktop (please complete the following information):
- OS: Windows11 pro
- Browser Edge
- Version latest
Smartphone (please complete the following information):
- Device: pixel6a
- OS: Android13
- Browser Edge
- Version latest
Additional context
DemoApp
import 'package:flutter/material.dart';
import 'package:shared_storage/shared_storage.dart' as saf;
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.title});
final String title;
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
Uri? selectUri;
String answer = '';
void openDocumentTree() => saf.openDocumentTree().then((value) {
setState(() {
selectUri = value;
});
});
void canRead(Uri? uri) => saf.canRead(uri ?? Uri()).then((value) {
setState(() {
answer = value.toString();
});
});
void exists(Uri? uri) => saf.exists(uri ?? Uri()).then((value) {
setState(() {
answer = value.toString();
});
});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'uri: ${selectUri.toString()}',
style: Theme.of(context).textTheme.headlineLarge,
),
Text(
'answer: $answer',
style: Theme.of(context).textTheme.headlineLarge,
),
const SizedBox(height: 200,),
FilledButton(
onPressed: () => openDocumentTree(),
child: Text('openDocumentTree',
style: Theme.of(context).textTheme.bodyMedium,)),
FilledButton(
onPressed: () => canRead(selectUri),
child: Text('canRead',
style: Theme.of(context).textTheme.bodyMedium,)),
FilledButton(
onPressed: () => exists(selectUri),
child: Text('exists',
style: Theme.of(context).textTheme.bodyMedium,))
],
),
),
);
}
}Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working