Skip to content

Commit ec8bc9e

Browse files
committed
Fixed issue file can be opened multiple times
1 parent 98b5fa2 commit ec8bc9e

File tree

1 file changed

+29
-16
lines changed

1 file changed

+29
-16
lines changed

lib/screens/editor/editor.dart

Lines changed: 29 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ class _EditorPageState extends State<EditorPage> {
2727
late CCSolution project;
2828
List<Document> documentList = [];
2929
List<TabData> tabs = [];
30+
Map<String,TabData> fileEditors = {};
3031
bool autoCompleteShown = false;
3132
List<String> autoComplete = <String>[
3233
"var|hello",
@@ -203,12 +204,12 @@ class _EditorPageState extends State<EditorPage> {
203204
});
204205
},
205206
);
206-
207207
codeFields.add(field);
208208
return TabData(
209209
text: title,
210210
closable: true,
211211
keepAlive: true,
212+
value: filePath,
212213
content: SingleChildScrollView(
213214
controller: ScrollController(),
214215
child: Container(
@@ -219,21 +220,33 @@ class _EditorPageState extends State<EditorPage> {
219220
}
220221

221222
void openFile(String filepath) async {
222-
var filename = path.basename(filepath);
223-
var content = await File(filepath).readAsString();
224-
//debugPrint(content);
225-
content = content.replaceAll("\t", " ");
226-
setState(() {
227-
var language = 'javascript';
228-
if (filename.endsWith(".json")) {
229-
language = 'json';
230-
}
231-
if (filename.endsWith(".lua")) {
232-
language = 'lua';
223+
if(!fileEditors.containsKey(filepath)) {
224+
var filename = path.basename(filepath);
225+
var content = await File(filepath).readAsString();
226+
//debugPrint(content);
227+
content = content.replaceAll("\t", " ");
228+
setState(() {
229+
var language = 'javascript';
230+
if (filename.endsWith(".json")) {
231+
language = 'json';
232+
}
233+
if (filename.endsWith(".lua")) {
234+
language = 'lua';
235+
}
236+
var tab = createFileTab(filename, content, language, filepath);
237+
fileEditors[filepath] = tab;
238+
tabs.add(tab);
239+
selectedTab = tabs.length - 1;
240+
});
241+
}else{
242+
// Tab already exists
243+
var tab = fileEditors[filepath];
244+
if(tab != null){
245+
setState(() {
246+
selectedTab = tabs.indexOf(tab);
247+
});
233248
}
234-
tabs.add(createFileTab(filename, content, language, filepath));
235-
selectedTab = tabs.length - 1;
236-
});
249+
}
237250
}
238251

239252
List<Widget> getAutoCompleteControls(String? a) {
@@ -339,7 +352,7 @@ class _EditorPageState extends State<EditorPage> {
339352
},
340353
onTabClose: (tabIndex, tabData) {
341354
setState(() {
342-
/// Just refresh the state
355+
fileEditors.remove(tabData.value);
343356
});
344357
},
345358
controller: tabController,

0 commit comments

Comments
 (0)